@coursebuilder/core
Version:
Core package for Course Builder
86 lines (84 loc) • 2.38 kB
JavaScript
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