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.
Description
This PR replaces the password-based authentication system with a secure email OTP sign-on for users. The following changes were made across the backend and frontend to support this new authentication flow:
Changes Made:
Configured Nodemailer to handle email delivery using SMTP for sending OTPs.
Contains the SMTP configuration required to send emails.
Implements the email sending logic for dispatching OTPs to users during login/signup.
Modified NextAuth Configuration
Removed password verification logic and integrated OTP handling.
Added logic to clear OTP after successful authentication.
Removed the passwordHash field from the User and Seller models.
Added an otp field to store one-time passwords temporarily.
Added new components and UI flow to support email OTP login/signup.
Integrated Zod validation for the new OTP-based forms.
Implemented full-proof error handling for potential OTP errors during sign-in and signup.
Added proper user feedback for invalid OTPs, expired OTPs, and email input errors.
Testing & Validation:
Verified OTP generation, email delivery, and login flows using valid email addresses.
Related Issues
Screenshots / videos (if applicable)
p1.mp4
p2.mp4