summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPuyodead1 <puyodead@proton.me>2025-09-05 18:03:59 -0400
committerPuyodead1 <puyodead@proton.me>2025-09-05 18:03:59 -0400
commitb8b9b038cfc11f10ec6070679dca22b066d3a2c9 (patch)
tree1e1f391329fa6ce4afcf5b24a54ff4855a8151bd /src
parentfix an issue with NO_AUTHENTICATE routes (diff)
downloadserver-ts-b8b9b038cfc11f10ec6070679dca22b066d3a2c9.tar.xz
fixes and minor changes for email stuff
Diffstat (limited to 'src')
-rw-r--r--src/api/Server.ts2
-rw-r--r--src/util/util/email/index.ts28
2 files changed, 16 insertions, 14 deletions
diff --git a/src/api/Server.ts b/src/api/Server.ts

index d950dec0..910e3496 100644 --- a/src/api/Server.ts +++ b/src/api/Server.ts
@@ -151,7 +151,7 @@ export class SpacebarServer extends Server { res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "index.html")), ); - app.get("/verify", (req, res) => + app.get("/verify-email", (req, res) => res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "verify.html")), ); diff --git a/src/util/util/email/index.ts b/src/util/util/email/index.ts
index e3382794..00ff2cd0 100644 --- a/src/util/util/email/index.ts +++ b/src/util/util/email/index.ts
@@ -37,9 +37,9 @@ const ASSET_FOLDER_PATH = path.join( ); enum MailTypes { - verify = "verify", - reset = "reset", - pwchange = "pwchange", + verifyEmail = "verifyEmail", + resetPassword = "resetPassword", + changePassword = "changePassword", } const transporters: { @@ -55,7 +55,7 @@ export const Email: { transporter: Transporter | null; init: () => Promise<void>; generateLink: ( - type: Omit<MailTypes, "pwchange">, + type: Omit<MailTypes, "changePassword">, id: string, email: string, ) => Promise<string>; @@ -143,8 +143,10 @@ export const Email: { const token = (await generateToken(id, email)) as string; // puyodead1: this is set to api endpoint because the verification page is on the server since no clients have one, and not all 3rd party clients will have one const instanceUrl = - Config.get().api.endpointPublic || "http://localhost:3001"; - const link = `${instanceUrl}/${type}#token=${token}`; + Config.get().api.endpointPublic?.replace("/api", "") || + "http://localhost:3001"; + const dashedType = type.replace(/([A-Z])/g, "-$1").toLowerCase(); + const link = `${instanceUrl}/${dashedType}#token=${token}`; return link; }, @@ -159,9 +161,9 @@ export const Email: { if (!this.transporter) return; const templateNames: { [key in MailTypes]: string } = { - verify: "verify_email.html", - reset: "password_reset_request.html", - pwchange: "password_changed.html", + verifyEmail: "verify_email.html", + resetPassword: "password_reset_request.html", + changePassword: "password_changed.html", }; const template = await fs.readFile( @@ -178,7 +180,7 @@ export const Email: { template, user, // password change emails don't have links - type != MailTypes.pwchange + type != MailTypes.changePassword ? await this.generateLink(type, user.id, email) : undefined, ); @@ -203,18 +205,18 @@ export const Email: { * Sends an email to the user with a link to verify their email address */ sendVerifyEmail: async function (user, email) { - return this.sendMail(MailTypes.verify, user, email); + return this.sendMail(MailTypes.verifyEmail, user, email); }, /** * Sends an email to the user with a link to reset their password */ sendResetPassword: async function (user, email) { - return this.sendMail(MailTypes.reset, user, email); + return this.sendMail(MailTypes.resetPassword, user, email); }, /** * Sends an email to the user notifying them that their password has been changed */ sendPasswordChanged: async function (user, email) { - return this.sendMail(MailTypes.pwchange, user, email); + return this.sendMail(MailTypes.changePassword, user, email); }, };