From 02c09fe74bf7851bf208c309e7d660e18b3679fc Mon Sep 17 00:00:00 2001 From: ROSHAN GARG Date: Tue, 10 Sep 2024 11:02:35 +0530 Subject: [PATCH 1/2] updated the Auth apis --- .../RetailDistributerRoutes.js | 7 +--- .../RetailDistributorController.js | 32 +++++-------------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/resources/RetailDistributor/RetailDistributerRoutes.js b/resources/RetailDistributor/RetailDistributerRoutes.js index 5bbad7b..0845a71 100644 --- a/resources/RetailDistributor/RetailDistributerRoutes.js +++ b/resources/RetailDistributor/RetailDistributerRoutes.js @@ -13,12 +13,7 @@ const router = express.Router(); router.route("/rd-login").post(loginRD); router.route("/rd-get-me").get(isAuthenticatedRD, getmyProfile); router.post("/forgot-password", forgotPassword); -router.put( - "/rd-password/update", - isAuthenticatedRD, - - ChangePasswordRD -); +router.put("/rd-password/update", isAuthenticatedRD, ChangePasswordRD); router.patch( "/rd-profile/update", isAuthenticatedRD, diff --git a/resources/RetailDistributor/RetailDistributorController.js b/resources/RetailDistributor/RetailDistributorController.js index aa3c66e..06b00a7 100644 --- a/resources/RetailDistributor/RetailDistributorController.js +++ b/resources/RetailDistributor/RetailDistributorController.js @@ -1,5 +1,9 @@ import RetailDistributor from "./RetailDistributorModel.js"; import validator from "validator"; +import password from "secure-random-password"; +import crypto from "crypto"; +import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js"; +import sendEmail, { sendOtp } from "../../Utils/sendEmail.js"; export const loginRD = async (req, res) => { const { email, password } = req.body; @@ -137,14 +141,9 @@ export const forgotPassword = async (req, res) => { }; export const UpdateProfile = async (req, res) => { - const { name, email } = req.body; + const { name } = req.body; // Only expecting name from the request body - const userId = req.user._id; // Use the ID from params or authenticated user - - // Validate email if provided - if (email && !validator.isEmail(email)) { - return res.status(400).json({ message: "Invalid email address" }); - } + const userId = req.user._id; // User ID from authenticated user try { // Find the RetailDistributor by user ID @@ -155,27 +154,12 @@ export const UpdateProfile = async (req, res) => { } // Assuming you have an 'isVerified' field in your RetailDistributor schema - if (!retailDistributor.isVerified) { - return res - .status(400) - .json({ message: "Retail Distributor not verified" }); - } - - // Check if email is being changed and if it's already in use - if (email && email !== retailDistributor.email) { - const emailExists = await RetailDistributor.findOne({ email }); - if (emailExists && emailExists._id.toString() !== userId) { - return res.status(400).json({ - message: - "This Email ID is already in use by another Retail Distributor", - }); - } - retailDistributor.email = email; - } // Update name if provided if (name) { retailDistributor.name = name; + } else { + return res.status(400).json({ message: "Name is required" }); } // Save the updated RetailDistributor From 457ebcadb950f0bad9cc5142f38ccf274d1903ab Mon Sep 17 00:00:00 2001 From: ROSHAN GARG Date: Tue, 10 Sep 2024 13:42:43 +0530 Subject: [PATCH 2/2] Fixed the bugs --- .../RetailDistributerRoutes.js | 17 ++++++----------- .../RetailDistributorController.js | 13 ++++++++----- resources/user/userController.js | 4 ++-- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/resources/RetailDistributor/RetailDistributerRoutes.js b/resources/RetailDistributor/RetailDistributerRoutes.js index 0845a71..654b579 100644 --- a/resources/RetailDistributor/RetailDistributerRoutes.js +++ b/resources/RetailDistributor/RetailDistributerRoutes.js @@ -1,23 +1,18 @@ import express from "express"; import { ChangePasswordRD, - forgotPassword, - getmyProfile, + forgotPasswordRD, + getmyProfileRD, loginRD, - UpdateProfile, + UpdateProfileRD, } from "./RetailDistributorController.js"; import { isAuthenticatedRD } from "../../middlewares/rdAuth.js"; const router = express.Router(); router.route("/rd-login").post(loginRD); -router.route("/rd-get-me").get(isAuthenticatedRD, getmyProfile); -router.post("/forgot-password", forgotPassword); +router.route("/rd-get-me").get(isAuthenticatedRD, getmyProfileRD); +router.post("/forgot-password", forgotPasswordRD); router.put("/rd-password/update", isAuthenticatedRD, ChangePasswordRD); -router.patch( - "/rd-profile/update", - isAuthenticatedRD, - - UpdateProfile -); +router.patch("/rd-profile/update", isAuthenticatedRD, UpdateProfileRD); export default router; diff --git a/resources/RetailDistributor/RetailDistributorController.js b/resources/RetailDistributor/RetailDistributorController.js index 06b00a7..4c91415 100644 --- a/resources/RetailDistributor/RetailDistributorController.js +++ b/resources/RetailDistributor/RetailDistributorController.js @@ -2,7 +2,7 @@ import RetailDistributor from "./RetailDistributorModel.js"; import validator from "validator"; import password from "secure-random-password"; import crypto from "crypto"; -import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js"; + import sendEmail, { sendOtp } from "../../Utils/sendEmail.js"; export const loginRD = async (req, res) => { const { email, password } = req.body; @@ -90,7 +90,7 @@ export const ChangePasswordRD = async (req, res) => { } }; -export const forgotPassword = async (req, res) => { +export const forgotPasswordRD = async (req, res) => { try { // Check if email is provided const { email } = req.body; @@ -140,8 +140,8 @@ export const forgotPassword = async (req, res) => { } }; -export const UpdateProfile = async (req, res) => { - const { name } = req.body; // Only expecting name from the request body +export const UpdateProfileRD = async (req, res) => { + const { name, mobile_number } = req.body; // Only expecting name from the request body const userId = req.user._id; // User ID from authenticated user @@ -158,6 +158,9 @@ export const UpdateProfile = async (req, res) => { // Update name if provided if (name) { retailDistributor.name = name; + retailDistributor.mobile_number = mobile_number + ? mobile_number + : retailDistributor.mobile_number; } else { return res.status(400).json({ message: "Name is required" }); } @@ -176,7 +179,7 @@ export const UpdateProfile = async (req, res) => { } }; -export const getmyProfile = async (req, res) => { +export const getmyProfileRD = async (req, res) => { try { // Fetch the profile data using the authenticated user's ID const myData = await RetailDistributor.findById(req.user?._id); diff --git a/resources/user/userController.js b/resources/user/userController.js index 011fa39..d719e01 100644 --- a/resources/user/userController.js +++ b/resources/user/userController.js @@ -14,7 +14,7 @@ import fs from "fs"; import path from "path"; import validator from "validator"; import ShippingAddress from "../ShippingAddresses/ShippingAddressModel.js"; -import {generatePassword} from "../../Utils/generatepassword.js"; +import { generatePassword } from "../../Utils/generatepassword.js"; // const generatePassword = (name, email) => { // // Combine name and email, and convert to lowercase // const combinedStr = (name + email).toLowerCase(); @@ -851,7 +851,7 @@ export const resetPassword = catchAsyncErrors(async (req, res, next) => { //6.Get User Detail export const getUserDetails = catchAsyncErrors(async (req, res, next) => { - const user = await User.findById(req.user.id); + const user = await User.findById(req.user?._id); res.status(200).json({ success: true,