Files
BYW-VoiceHub/server/api/auth/[provider]/index.get.ts
T
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

34 lines
971 B
TypeScript

import { generateState, getRedirectUri } from '~~/server/utils/oauth'
import { getOAuthStrategy } from '~~/server/utils/oauth-strategies'
export default defineEventHandler(async (event) => {
const provider = getRouterParam(event, 'provider')
if (!provider) {
throw createError({ statusCode: 400, message: 'Missing provider' })
}
const strategy = getOAuthStrategy(provider)
// 获取 Origin
const headers = getRequestHeaders(event)
const protocol = headers['x-forwarded-proto'] || 'http'
const host = headers['host']
const origin = `${protocol}://${host}`
const redirectUri = getRedirectUri(provider)
const { state, csrf } = generateState(origin, provider)
setCookie(event, 'oauth_csrf', csrf, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'lax',
maxAge: 60 * 10, // 10分钟
path: '/'
})
const url = strategy.getAuthorizeUrl(redirectUri, state)
return sendRedirect(event, url)
})