UNPKG

aegis-auth

Version:

A credentials-based auth solution for Next.js (and other Node projects) with IP rate-limiting, account lockouts, and sessions in DB.

54 lines 1.91 kB
import { createVerificationToken } from "../security"; import { ErrorCodes, } from "../types"; import { createTime } from "../utils"; import { createVerificationSchema } from "../validations"; export async function createVerification(context, input) { const { prisma, config } = context; try { const validatedInput = createVerificationSchema.safeParse(input); if (!validatedInput.success) { return { success: false, status: 400, message: "Invalid input provided", code: ErrorCodes.INVALID_INPUT, data: null, }; } const { userId, type, tokenExpirySeconds } = validatedInput.data; const verificationToken = await createVerificationToken({ config }); const expiresAt = createTime(tokenExpirySeconds || config.verification.tokenExpirySeconds, "s").getDate(); const verification = (await prisma.verification.create({ data: { token: verificationToken, expiresAt, type: type, userId: userId, }, })); config.logger.securityEvent("VERIFICATION_CREATED", { verificationId: verification.id, userId: verification.userId, type: verification.type, }); return { success: true, status: 200, message: "Verification created", data: { verification }, }; } catch (error) { config.logger.error("Error creating verification", { error, userId: input.userId, }); return { success: false, status: 500, message: "An unexpected error occurred.", code: ErrorCodes.INTERNAL_SERVER_ERROR, }; } } //# sourceMappingURL=createVerification.js.map