You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Removing ActionCodeSettings may generate reset links pointing to default Firebase endpoints instead of the frontend URL, breaking the password reset flow
Calls to transporter.sendMail are not wrapped in try/catch inside controller flows, so email failures could crash requests without proper error responses
constsendPasswordResetEmail=async(email: string,link: string): Promise<void>=>{constmailOptions=createPasswordResetMailOptions(email,link);awaittransporter.sendMail(mailOptions);functions.logger.info("Password reset email sent successfully to:",email);};
Include ActionCodeSettings when generating the reset link so it correctly redirects back to your front-end reset page and handles in-app flows. This ensures users land on the right page after clicking the link.
-const link = await auth.generatePasswordResetLink(email);+const actionCodeSettings = {+ url: `${process.env.FRONTEND_URL}/reset-password`,+ handleCodeInApp: true,+};+const link = await auth.generatePasswordResetLink(email, actionCodeSettings);
Suggestion importance[1-10]: 7
__
Why: Including ActionCodeSettings ensures the password reset link correctly redirects back to the front-end, preventing users from being sent to the default Firebase flow.
Medium
General
Handle sendMail errors
Wrap the call to sendMail in a try/catch to handle potential SMTP failures and log errors. This prevents unhandled promise rejections and surfaces email delivery issues.
Why: Wrapping transporter.sendMail in a try/catch prevents unhandled rejections and logs SMTP failures, improving reliability.
Low
Prevent duplicate verification
Before sending a verification link, fetch the user record and check if emailVerified is already true. Return a clear error if the account is already verified to avoid redundant emails.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Type
Enhancement
Description
Configure email transporter and MailOptions interfaces
Add password reset and verification email builders
Send verification link on register and update response
Expose
emailVerifiedand add verifyAccount endpointChanges walkthrough 📝
auth_controller.ts
Enhance auth controller email workflowsfunctions/src/controllers/auth_controller.ts
MailOptionsinterfaceverifyAccountcontroller and include emailVerifiedauth.ts
Add verifyAccount routefunctions/src/routes/auth.ts
/verify-accountPOST routeauth_middleware.ts
Update auth middleware exemptionsfunctions/src/middlewares/auth_middleware.ts
/auth/request-resetfrom auth-exempt routescsrf_middleware.ts
Update CSRF middleware exemptionsfunctions/src/middlewares/csrf_middleware.ts
/auth/request-resetfrom CSRF exemptions/auth/verify-accountto CSRF exemptions