UNPKG

@coursebuilder/core

Version:

Core package for Course Builder

86 lines (84 loc) 2.38 kB
import { sendVerificationRequest } from "./chunk-26D7PACF.js"; import { __name } from "./chunk-VLQXSCFN.js"; // src/lib/send-server-email.ts import { createHash } from "crypto"; import { v4 } from "uuid"; function hashToken(token, options) { const { provider, secret } = options; return createHash("sha256").update(`${token}${provider.secret ?? secret}`).digest("hex"); } __name(hashToken, "hashToken"); async function createVerificationUrl({ email, emailProvider, adapter, callbackUrl, expiresAt, authOptions, baseUrl }) { if (!emailProvider) return; callbackUrl = callbackUrl || baseUrl; const token = await emailProvider.generateVerificationToken?.() ?? v4(); const ONE_DAY_IN_SECONDS = 86400; const durationInMilliseconds = (emailProvider.maxAge ?? ONE_DAY_IN_SECONDS) * 1e3; const expires = expiresAt || new Date(Date.now() + durationInMilliseconds); await adapter.createVerificationToken?.({ identifier: email, token: hashToken(token, { provider: emailProvider, secret: authOptions.secret }), expires }); const params = new URLSearchParams({ callbackUrl, token, email }); const verificationUrl = `${baseUrl}/api/auth/callback/${emailProvider.id}?${params}`; return { url: verificationUrl, token, expires }; } __name(createVerificationUrl, "createVerificationUrl"); async function sendServerEmail({ email, callbackUrl, emailProvider, type = "login", html, text, expiresAt, authOptions, adapter, baseUrl, merchantChargeId }) { if (!emailProvider) return; try { const verificationDetails = await createVerificationUrl({ email, authOptions, callbackUrl, emailProvider, expiresAt: expiresAt || void 0, adapter, baseUrl }); if (!verificationDetails) return; const { url, token, expires } = verificationDetails; await sendVerificationRequest({ identifier: email, url, theme: { colorScheme: "auto" }, provider: emailProvider, token, expires, type, html, text, merchantChargeId }, adapter); } catch (error) { console.error(error); throw new Error("Unable to sendVerificationRequest"); } } __name(sendServerEmail, "sendServerEmail"); export { createVerificationUrl, sendServerEmail }; //# sourceMappingURL=chunk-ZJOFKIX6.js.map