me.get.ts 1.14 KB
import { getMockUserByToken } from '../../utils/mock-auth'

function getTokenFromAuthorizationHeader(value?: string) {
  if (!value) {
    return null
  }

  const [type, token] = value.split(' ')
  if (type?.toLowerCase() !== 'bearer' || !token) {
    return null
  }

  return token
}

export default eventHandler((event) => {
  const authorization = getHeader(event, 'authorization')
  const token = getTokenFromAuthorizationHeader(authorization)

  if (!token) {
    return {
      success: false,
      state: 'failed',
      nextAction: 'relogin',
      errorCode: 'TOKEN_MISSING',
      message: '未提供有效 token。'
    }
  }

  const result = getMockUserByToken(token)

  if (!result.success) {
    return {
      success: false,
      state: 'failed',
      nextAction: 'relogin',
      errorCode: result.errorCode,
      message: result.errorCode === 'TOKEN_EXPIRED' ? 'token 已过期。' : 'token 无效。'
    }
  }

  return {
    success: true,
    state: 'authenticated',
    nextAction: 'continue',
    errorCode: null,
    message: 'token 校验通过。',
    user: result.user,
    expiresAt: new Date(result.expiresAt).toISOString()
  }
})