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
JavaScript
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