Files
BYW-VoiceHub/server/api/auth/oauth-register-options.get.ts
T

32 lines
1.1 KiB
TypeScript

import { db } from '~/drizzle/db'
import { verifyBindingToken } from '~~/server/utils/oauth-token'
import { createApiError } from '~~/server/utils/apiError'
import { SERVER_ERROR_CODES } from '~~/server/config/constants'
import { fetchGradeClassOptions } from '~~/server/utils/grade-class-options'
export default defineEventHandler(async (event) => {
const config = await db.query.systemSettings.findFirst()
if (!config?.allowOAuthRegistration) {
throw createApiError(403, SERVER_ERROR_CODES.AUTH_OAUTH_REGISTER_DISABLED, '系统已关闭第三方账号注册功能')
}
const bindingToken = getCookie(event, 'binding-token')
if (!bindingToken) {
throw createApiError(401, SERVER_ERROR_CODES.AUTH_REGISTER_SESSION_EXPIRED, '注册会话已过期,请重新通过第三方登录发起')
}
try {
verifyBindingToken(bindingToken)
} catch {
deleteCookie(event, 'binding-token')
throw createApiError(401, SERVER_ERROR_CODES.AUTH_INVALID_REGISTER_TOKEN, '无效的注册令牌')
}
const classes = await fetchGradeClassOptions()
return {
success: true,
classes
}
})