import { findUserById } from '@app/services/user.service'; import { sendEmail } from '@app/lib/mail'; import { logger } from '@app/lib/logger'; const APP_SCHEME = 'orbit'; const RESET_PATH = 'auth/reset-password'; const resetLink = (token: string) => `${APP_SCHEME}://${RESET_PATH}?token=${token}`; const escapeHtml = (value: string) => value.replace( /[&<>"']/g, (char) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', })[char]!, ); const text = (firstName: string, token: string) => ` Oi, ${firstName}. Ouvimos por aí que você precisa trocar a senha. Abra este link no celular para escolher uma nova senha: ${resetLink(token)} O link expira em uma hora. Qualquer coisa prende o grito! `; const html = (firstName: string, token: string) => `

Oi, ${escapeHtml(firstName)}.

Ouvimos por aí que você precisa trocar a senha.

Escolher uma nova senha

Se o botão não abrir o app, copie e cole este endereço no celular:
${resetLink(token)}

O link expira em uma hora.

Qualquer coisa prende o grito!

`; export async function sendResetPasswordEmail(userId: number, token: string): Promise { const user = await findUserById(userId)!; const { data, error } = await sendEmail({ to: user!.email, subject: "Esqueceu a senha do nexo?", text: text(user!.firstName, token), html: html(user!.firstName, token), }); if (error) { logger.error({ err: error }, "Error sending email"); } logger.info({ emailId: data?.id }, "Email sent successfully"); }