diff --git a/backend/controllers/passController.js b/backend/controllers/passController.js index 11f6256..b3829d8 100644 --- a/backend/controllers/passController.js +++ b/backend/controllers/passController.js @@ -1,19 +1,39 @@ -const User = require("../model/user.model") const Pass = require("../model/pass.model") const { ErrorHandler } = require("../middleware/errorMiddleware") //@desc Generate a pass by user -//@route POST /users/generatePass +//@route POST /passes/generatePass const generatePass = async (req, res, next) => { try { - const { name, email, phone, duration, start } = req.body + const { name, phone, duration, start } = req.body + let email = req.body.email?.toLowerCase() + const emailRegex = /^[^\s+@]+@[^\s@]+\.[^\s@]{2,}$/i + const phoneRegex = /^\+?\d{1,3}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}$/ + if (!name?.length) throw new ErrorHandler(400, "Please enter a valid name") + if (!email?.length) + throw new ErrorHandler(400, "Please enter a valid email address") + else if (!emailRegex.test(email)) { + throw new ErrorHandler(400, "Invalid email! Please try again") + } + if (!phone?.length) + throw new ErrorHandler(400, "Please enter a valid phone number") + else if (!phoneRegex.test(phone)) { + throw new ErrorHandler( + 400, + "Invalid Phone Number! Please try with country code" + ) + } + if (!duration?.length) + throw new ErrorHandler(400, "Please enter a valid duration") + if (!start?.length) + throw new ErrorHandler(400, "Please enter a valid start time") const newPass = await Pass.create({ name, phone, email, duration, - start: start+":00.000Z", + start: start + ":00.000Z", generatedUserId: req.user.id, userName: req.user.name, }) @@ -29,7 +49,7 @@ const generatePass = async (req, res, next) => { } //@desc View all passes generated by a user -//@route Get /users/viewPasses +//@route Get /passes/viewPasses const viewPasses = async (req, res, next) => { try { const passes = await Pass.find({ generatedUserId: req.user.id }) @@ -45,7 +65,7 @@ const viewPasses = async (req, res, next) => { } //@desc Verify pass by guard -//@route PUT /users/verifyPass +//@route PUT /passes/verifyPass/:id const verifyPass = async (req, res, next) => { try { const passVerified = await Pass.findOneAndUpdate( diff --git a/backend/controllers/userController.js b/backend/controllers/userController.js index 6d75ef4..58518cd 100644 --- a/backend/controllers/userController.js +++ b/backend/controllers/userController.js @@ -9,11 +9,30 @@ const registerUser = async (req, res, next) => { try { const { name, password, confirmpwd, phone } = req.body let email = req.body.email?.toLowerCase() + const emailRegex = /^[^\s+@]+@[^\s@]+\.[^\s@]{2,}$/i + const phoneRegex = /^\+?\d{1,3}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}$/ if (!email?.length) throw new ErrorHandler(400, "Please enter a valid email address") + else if (!emailRegex.test(email)) { + throw new ErrorHandler(400, "Invalid email! Please try again") + } + if (!name?.length) throw new ErrorHandler(400, "Please enter a valid name") + if (!password?.length) + throw new ErrorHandler(400, "Please enter a valid password") + if (!confirmpwd?.length) + throw new ErrorHandler(400, "Please enter a valid confirm password") if (password != confirmpwd) { throw new ErrorHandler(400, "Passwords do not match") } + if (!phone?.length) + throw new ErrorHandler(400, "Please enter a valid phone number") + else if (!phoneRegex.test(phone)) { + throw new ErrorHandler( + 400, + "Invalid Phone Number! Please try with country code" + ) + } + const userExists = await User.findOne({ email }) if (userExists) { @@ -49,6 +68,8 @@ const loginUser = async (req, res, next) => { let email = req.body.email?.toLowerCase() if (!email?.length) throw new ErrorHandler(400, "Please enter a valid email address") + if (!password?.length) + throw new ErrorHandler(400, "Please enter a valid password") const user = await User.findOne({ email })