gabrielb a034446cf1
All checks were successful
Dev Build & Deploy Portal / build-deploy (push) Successful in 2m34s
feat(auth): adicionar suporte para temas e modo escuro na autenticação
2026-05-20 21:14:08 -03:00

37 lines
1.0 KiB
TypeScript

import { z } from 'zod'
const bodySchema = z.object({
documento: z.string().trim().min(11).max(20).optional(),
returnTo: z.string().startsWith('/').max(200).optional(),
primary: z.string().regex(/^[0-9a-fA-F]{6}$/).optional(),
dark: z.boolean().optional(),
})
export default defineEventHandler(async (event) => {
const body = await readValidatedBody(event, bodySchema.safeParse)
if (!body.success) {
throw createError({ statusCode: 400, statusMessage: 'Body inválido' })
}
const { codeVerifier, codeChallenge, state } = await generatePkce()
const returnTo = body.data.returnTo ?? '/portal/painel'
await savePkceState(state, {
codeVerifier,
returnTo,
createdAt: Date.now(),
})
const redirectUri = callbackUrlFromEvent(event)
const authUrl = buildAuthUrl({
codeChallenge,
state,
redirectUri,
loginHint: body.data.documento?.replace(/\D/g, ''),
primary: body.data.primary,
dark: body.data.dark,
})
return { authUrl }
})