diff --git a/resources/user/userController.js b/resources/user/userController.js
index 615d6dc..321a7d9 100644
--- a/resources/user/userController.js
+++ b/resources/user/userController.js
@@ -1,293 +1,278 @@
-import ErrorHander from "../../Utils/errorhander.js"
-import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js"
-import User from "./userModel.js"
-import sendToken from "../../Utils/jwtToken.js"
-import sendEmail from "../../Utils/sendEmail.js"
-import crypto from "crypto"
-import cloudinary from "cloudinary"
-import password from 'secure-random-password'
+import ErrorHander from "../../Utils/errorhander.js";
+import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js";
+import User from "./userModel.js";
+import sendToken from "../../Utils/jwtToken.js";
+import sendEmail from "../../Utils/sendEmail.js";
+import crypto from "crypto";
+import cloudinary from "cloudinary";
+import password from "secure-random-password";
// 1.Register a User
export const registerUser = async (req, res) => {
- try {
- const { name, email, password, phone } = req.body;
- let findUser = await User.findOne({ email })
- if (findUser) {
- return res
- .status(400)
- .json({ success: false, message: "User already exists" });
+ try {
+ const { name, email, password, phone } = req.body;
+ let findUser = await User.findOne({ email });
+ if (findUser) {
+ return res
+ .status(400)
+ .json({ success: false, message: "User already exists" });
+ }
+ if (req.files) {
+ const files = req.files.avatar;
+ const myCloud = await cloudinary.uploader.upload(
+ files.tempFilePath,
+ {
+ folder: "ATP/user-image",
+ },
+ function (error, result) {
+ result, error;
}
- if (req.files) {
- const files = req.files.avatar;
- const myCloud = await cloudinary.uploader.upload(files.tempFilePath, {
- folder: "ATP/user-image",
- },
- function (error, result) { (result, error) });
- }
-
-
-
-
- const user = await User.create({
- name,
- email,
- password,
- phone,
- // avatar: {
- // public_id: myCloud.public_id,
- // url: myCloud.secure_url,
- // },
- });
- sendToken(user, 201, res);
- } catch (e) {
-
- return res
- .status(400)
- .json({ success: false, message: e.message });
+ );
}
+ const user = await User.create({
+ name,
+ email,
+ password,
+ phone,
+ // avatar: {
+ // public_id: myCloud.public_id,
+ // url: myCloud.secure_url,
+ // },
+ });
+ sendToken(user, 201, res);
+ } catch (e) {
+ return res.status(400).json({ success: false, message: e.message });
+ }
};
// 2.Login User
export const loginUser = async (req, res, next) => {
- const { email, password } = req.body;
- // checking if user has given password and email both
+ const { email, password } = req.body;
+ // checking if user has given password and email both
- try {
- if (!email || !password) {
- return res.status(400).json({ message: 'Please Enter Email & Password' });
- }
-
- const user = await User.findOne({ email }).select("+password");
-
- if (!user) {
- return res.status(400).json({ message: 'Invalid Email or Password' });
- }
-
-
- const isPasswordMatched = await user.comparePassword(password);
-
- if (!isPasswordMatched) {
- return res.status(400).json({ message: 'Invalid Email or Password' });
- }
-
- sendToken(user, 200, res);
- } catch (error) {
- return res
- .status(500)
- .json({ message: "Something went wrong!", error: error?.message || "" });
+ try {
+ if (!email || !password) {
+ return res.status(400).json({ message: "Please Enter Email & Password" });
}
-};
+ const user = await User.findOne({ email }).select("+password");
+ if (!user) {
+ return res.status(400).json({ message: "Invalid Email or Password" });
+ }
+
+ const isPasswordMatched = await user.comparePassword(password);
+
+ if (!isPasswordMatched) {
+ return res.status(400).json({ message: "Invalid Email or Password" });
+ }
+
+ sendToken(user, 200, res);
+ } catch (error) {
+ return res
+ .status(500)
+ .json({ message: "Something went wrong!", error: error?.message || "" });
+ }
+};
// 3.Logout User
export const logout = catchAsyncErrors(async (req, res, next) => {
- res.cookie("token", null, {
- expires: new Date(Date.now()),
- httpOnly: true,
- });
+ res.cookie("token", null, {
+ expires: new Date(Date.now()),
+ httpOnly: true,
+ });
- res.status(200).json({
- success: true,
- message: "Logged Out",
- });
+ res.status(200).json({
+ success: true,
+ message: "Logged Out",
+ });
});
-
// 4.Forgot Password
export const forgotPassword = async (req, res, next) => {
- const user = await User.findOne({ email: req.body.email });
+ const user = await User.findOne({ email: req.body.email });
- if (!user) {
- return res.status(404).json({ message: "User not found" });
+ if (!user) {
+ return res.status(404).json({ message: "User not found" });
+ }
+ // Get ResetPassword Token
+ const resetToken = user.getResetPasswordToken(); //call function
- }
- // Get ResetPassword Token
- const resetToken = user.getResetPasswordToken();//call function
+ //save database reset token
+ await user.save({ validateBeforeSave: false });
- //save database reset token
- await user.save({ validateBeforeSave: false });
+ const passwords = password.randomPassword({
+ length: 12,
+ characters: [
+ { characters: password.upper, exactly: 1 },
+ { characters: password.symbols, exactly: 1 },
+ password.lower,
+ password.digits,
+ ],
+ });
- const passwords = password.randomPassword({
- length: 12,
- characters: [
- { characters: password.upper, exactly: 1 },
- { characters: password.symbols, exactly: 1 },
- password.lower,
- password.digits]
- })
- console.log(passwords);
- user.password = passwords;
- await user.save()
- // const message = `Your password reset token are :- \n\n ${resetPasswordUrl} \n\nyour new password is:${password}\n\nIf you have not requested this email then, please ignore it.`;
- try {
+ user.password = passwords;
+ await user.save();
+ // const message = `Your password reset token are :- \n\n ${resetPasswordUrl} \n\nyour new password is:${password}\n\nIf you have not requested this email then, please ignore it.`;
+ try {
+ await sendEmail({
+ to: `${user.email}`, // Change to your recipient
- await sendEmail({
+ from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender
- to: `${user.email}`, // Change to your recipient
-
- from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender
-
- subject: `The-solar-sign Password Recovery`,
- html: `your new password is:
${passwords}
If you have not requested this email then, please ignore it.`
-
- });
-
- res.status(200).json({
- success: true,
- message: `Email sent to ${user.email} successfully`,
- });
- } catch (error) {
- user.resetPasswordToken = undefined;
- user.resetPasswordExpire = undefined;
-
- await user.save({ validateBeforeSave: false });
-
- return res.status(500).json({ message: "Something went wrong!", error: error?.message || "" });
- }
-}
-
-
-// 5.Reset Password
-export const resetPassword = catchAsyncErrors(async (req, res, next) => {
- // creating token hash
- const resetPasswordToken = crypto
- .createHash("sha256")
- .update(req.params.token)
- .digest("hex");
-
- const user = await User.findOne({
- resetPasswordToken,
- resetPasswordExpire: { $gt: Date.now() },
+ subject: `The-solar-sign Password Recovery`,
+ html: `your new password is:
${passwords}
If you have not requested this email then, please ignore it.`,
});
- if (!user) {
- return next(
- new ErrorHander(
- "Reset Password Token is invalid or has been expired",
- 400
- )
- );
- }
- //replace previous password
- if (req.body.password !== req.body.confirmPassword) {
- return next(new ErrorHander("Password does not password", 400));
- }
-
- user.password = req.body.password;
+ res.status(200).json({
+ success: true,
+ message: `Email sent to ${user.email} successfully`,
+ });
+ } catch (error) {
user.resetPasswordToken = undefined;
user.resetPasswordExpire = undefined;
- await user.save();
+ await user.save({ validateBeforeSave: false });
- sendToken(user, 200, res);
+ return res
+ .status(500)
+ .json({ message: "Something went wrong!", error: error?.message || "" });
+ }
+};
+
+// 5.Reset Password
+export const resetPassword = catchAsyncErrors(async (req, res, next) => {
+ // creating token hash
+ const resetPasswordToken = crypto
+ .createHash("sha256")
+ .update(req.params.token)
+ .digest("hex");
+
+ const user = await User.findOne({
+ resetPasswordToken,
+ resetPasswordExpire: { $gt: Date.now() },
+ });
+
+ if (!user) {
+ return next(
+ new ErrorHander(
+ "Reset Password Token is invalid or has been expired",
+ 400
+ )
+ );
+ }
+ //replace previous password
+ if (req.body.password !== req.body.confirmPassword) {
+ return next(new ErrorHander("Password does not password", 400));
+ }
+
+ user.password = req.body.password;
+ user.resetPasswordToken = undefined;
+ user.resetPasswordExpire = undefined;
+
+ await user.save();
+
+ sendToken(user, 200, res);
});
//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,
- user,
- });
+ res.status(200).json({
+ success: true,
+ user,
+ });
});
// 7.Get single user (admin)
export const getSingleUser = catchAsyncErrors(async (req, res, next) => {
- if (!req.params.id) {
- return next(
- new ErrorHander(`please send User ID`, 404)
- );
- }
- const user = await User.findById(req.params.id);
+ if (!req.params.id) {
+ return next(new ErrorHander(`please send User ID`, 404));
+ }
+ const user = await User.findById(req.params.id);
- if (!user) {
- return next(
- new ErrorHander(`User does not exist with Id: ${req.params.id}`, 404)
- );
- }
+ if (!user) {
+ return next(
+ new ErrorHander(`User does not exist with Id: ${req.params.id}`, 404)
+ );
+ }
- res.status(200).json({
- success: true,
- user,
- });
+ res.status(200).json({
+ success: true,
+ user,
+ });
});
// 8.update User password
export const updatePassword = catchAsyncErrors(async (req, res, next) => {
- const user = await User.findById(req.user.id).select("+password");
+ const user = await User.findById(req.user.id).select("+password");
- const isPasswordMatched = await user.comparePassword(req.body.oldPassword);
+ const isPasswordMatched = await user.comparePassword(req.body.oldPassword);
- if (!isPasswordMatched) {
- return next(new ErrorHander("Old password is incorrect", 400));
- }
+ if (!isPasswordMatched) {
+ return next(new ErrorHander("Old password is incorrect", 400));
+ }
- if (req.body.newPassword !== req.body.confirmPassword) {
- return next(new ErrorHander("password does not match", 400));
- }
+ if (req.body.newPassword !== req.body.confirmPassword) {
+ return next(new ErrorHander("password does not match", 400));
+ }
- user.password = req.body.newPassword;
+ user.password = req.body.newPassword;
- await user.save();
+ await user.save();
- sendToken(user, 200, res);
+ sendToken(user, 200, res);
});
// 9.update User Profile
export const updateProfile = catchAsyncErrors(async (req, res, next) => {
- const newUserData = {
- name: req.body.name,
- phone: req.body.phone,
- email: req.body.email,
- };
+ const newUserData = {
+ name: req.body.name,
- if (req.files) {
- const userImage = req.files?.avatar;
- const user = await User.findById(req.user.id);
+ email: req.body.email,
+ };
+ // if (req.files) {
+ // const userImage = req.files?.avatar;
+ // const user = await User.findById(req.user.id);
- if (user?.avatar) {
- const imageId = user?.avatar?.public_id;
+ // if (user?.avatar) {
+ // const imageId = user?.avatar?.public_id;
- await cloudinary.uploader.destroy(imageId)
- }
+ // await cloudinary.uploader.destroy(imageId)
+ // }
+ // const myCloud = await cloudinary.v2.uploader.upload(userImage.tempFilePath,
+ // {
+ // folder: "ATP/user-image",
+ // });
- const myCloud = await cloudinary.v2.uploader.upload(userImage.tempFilePath,
- {
- folder: "ATP/user-image",
+ // newUserData.avatar = {
+ // public_id: myCloud.public_id,
+ // url: myCloud.secure_url,
+ // };
+ // }
- });
+ const user = await User.findByIdAndUpdate(req.user.id, newUserData, {
+ new: true,
+ runValidators: true,
+ useFindAndModify: false,
+ });
-
-
- newUserData.avatar = {
- public_id: myCloud.public_id,
- url: myCloud.secure_url,
- };
- }
- const user = await User.findByIdAndUpdate(req.user.id, newUserData, {
- new: true,
- runValidators: true,
- useFindAndModify: false,
- });
-
- res.status(200).json({
- success: true,
- user
- });
+ return res.status(200).json({
+ success: true,
+ user,
+ });
});
// 9.Get all users(admin)
export const getAllUser = catchAsyncErrors(async (req, res, next) => {
+ const users = await User.find(); //.select('-role');
- const users = await User.find()//.select('-role');
-
- res.status(200).json({
- success: true,
- users,
- });
-});
\ No newline at end of file
+ res.status(200).json({
+ success: true,
+ users,
+ });
+});