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; generateLink: ( - type: Omit, + type: Omit, id: string, email: string, ) => Promise; @@ -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); }, };