auth_user_info.js 1.01 KB
/**
 * 对用户信息进行认证
 * @param {*} input 用户信息对象,包含 user_id 和 HTTP_USER_TOKEN 字段
 * @param {*} options 选项对象,包含 set_auth_headers 和 storage 字段
 * @returns 如果用户信息有效,则返回 true;否则返回 false
 */
export const applyUserInfoAuth = (input, options = {}) => {
  const user_info = input && input.data && input.data.user_info ? input.data.user_info : input
  if (!user_info || typeof user_info !== 'object') {
    return false
  }

  const { user_id, HTTP_USER_TOKEN } = user_info
  if (!user_id || !HTTP_USER_TOKEN) {
    return false
  }

  const set_auth_headers = options.set_auth_headers
  if (typeof set_auth_headers === 'function') {
    set_auth_headers(user_id, HTTP_USER_TOKEN)
  }

  const storage = Object.prototype.hasOwnProperty.call(options, 'storage') ? options.storage : globalThis.localStorage
  if (storage && typeof storage.setItem === 'function') {
    storage.setItem('user_info', JSON.stringify(user_info || {}))
  }

  return true
}