import { EmailTemplates, Errors } from "sealious"; import type TheApp from "../app.js"; export default async function PasswordResetTemplate( app: TheApp, { email_address, token }: { email_address: string; token: string } ) { const matching_users = await app.collections["users"] .suList() .filter({ email: email_address }) .fetch(); if (!matching_users.items.length) { throw new Errors.NotFound("No user with that email"); } const username = matching_users.items[0]?.get("username"); const context = new app.Context(); return EmailTemplates.Simple(app, { subject: context.i18n`[${app.manifest.name}] Password reset request`, to: `${String(username)}<${email_address}>`, text: `Hello, ${username}. Someone requested a password reset on your account on ${app.manifest.name}. If it was you, use the link below to change the password. Otherwise, ignore this message.`, buttons: [ { text: context.i18n`Change password`, href: `${app.manifest.base_url}/confirm-password-reset?token=${token}&email=${email_address}`, }, ], }); }