@@ -3,6 +3,7 @@ const User = require('../Modals/userModels');
3
3
const ErrrorHandler = require ( '../Utils/errorHandler' ) ;
4
4
const catchAsyncErrors = require ( '../Middlewares/catchAsyncErrors' ) ;
5
5
const sendToken = require ( '../Utils/JwtToken' ) ;
6
+ const sendEmail = require ( '../Utils/sendEmail' ) ;
6
7
7
8
// Register a user => /api/v1/register
8
9
exports . registerUser = catchAsyncErrors ( async ( req , res , next ) => {
@@ -47,6 +48,43 @@ exports.loginUser = catchAsyncErrors(async (req, res, next) => {
47
48
sendToken ( user , 200 , res ) ;
48
49
} ) ;
49
50
51
+ // Fotgot Password => /api/v1/password/forgot
52
+
53
+ exports . fotgotPassword = catchAsyncErrors ( async ( req , res , next ) => {
54
+ const user = await User . findOne ( { email : req . body . email } ) ;
55
+ if ( ! user ) {
56
+ return next ( new ErrrorHandler ( 'User not Found with this email' , 404 ) ) ;
57
+ }
58
+
59
+ // Get the reset token
60
+ const resetToken = user . getResetPasswordToken ( ) ;
61
+ await user . save ( { validateBeforeSave : false } ) ;
62
+
63
+ // Create reset password url
64
+ const resetUrl = `${ req . protocol } ://${ req . get (
65
+ 'host'
66
+ ) } /password/reset/${ resetToken } `;
67
+
68
+ const message = `Your password reset token is as follow:\n\n${ resetUrl } \n\nIf you have not requested this email, then ignore it.` ;
69
+
70
+ try {
71
+ await sendEmail ( {
72
+ email : user . email ,
73
+ subject : 'E-commerce Password Recovery' ,
74
+ message,
75
+ } ) ;
76
+ res . status ( 200 ) . json ( {
77
+ success : true ,
78
+ message : `Email sent to: ${ user . email } ` ,
79
+ } ) ;
80
+ } catch ( error ) {
81
+ user . resetPasswordToken = undefined ;
82
+ user . resetPasswordExpire = undefined ;
83
+ await user . save ( { validateBeforeSave : false } ) ;
84
+ return next ( new ErrrorHandler ( error . message , 500 ) ) ;
85
+ }
86
+ } ) ;
87
+
50
88
// LogOut User => api/v1/logOut
51
89
52
90
exports . logOutUser = catchAsyncErrors ( async ( req , res , next ) => {
0 commit comments