@@ -2,61 +2,48 @@ import { User } from '../models/user.model.js';
22import { registerUserService , loginUserService } from '../services/authService.js' ;
33import jwt from 'jsonwebtoken'
44import { sendEmail } from '../utils/sendEmail.js' ;
5-
6- export const registerUser = async ( req , res ) => {
7- try {
5+ import asynkcHandler from 'express-async-handler' ;
6+ import ApiError from '../utils/ApiError.js' ;
7+ //register user
8+ export const registerUser = asynkcHandler ( async ( req , res ) => {
89 const userData = await registerUserService ( req . body ) ;
910 return res . status ( 201 ) . json ( {
1011 success : true ,
1112 message : 'User registered successfully' ,
1213 user : userData
1314 } ) ;
14- } catch ( error ) {
15- console . error ( 'Error in registerUser:' , error . message ) ;
16- res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
17- }
18- } ;
15+ } ) ;
16+ // login user
17+ export const loginUser = asynkcHandler ( async ( req , res ) => {
18+ const { email, password } = req . body ;
19+
20+ const result = await loginUserService ( { email, password } ) ;
21+
22+ res . status ( 200 ) . json ( {
23+ success : true ,
24+ message : 'Login successful' ,
25+ accessToken : result . accessToken ,
26+ refreshToken : result . refreshToken ,
27+ user : result . user ,
28+ } ) ;
29+ } ) ;
30+ // Forgot password
31+ export const forgotPassword = asynkcHandler ( async ( req , res ) => {
32+ const { email } = req . body ;
1933
20- export const loginUser = async ( req , res ) => {
21- try {
22- const { email, password } = req . body ;
23-
24- const result = await loginUserService ( { email, password } ) ;
34+ const user = await User . findOne ( { email } ) ;
2535
26- return res . status ( 200 ) . json ( {
27- success : true ,
28- message : 'Login successful' ,
29- accessToken : result . accessToken ,
30- refreshToken : result . refreshToken ,
31- user : result . user ,
32- } ) ;
33- } catch ( error ) {
34- console . error ( 'Error in loginUser:' , error ) ;
35- const status = error . statusCode || 400 ;
36- return res . status ( status ) . json ( { success : false , message : error . message || 'Login failed' } ) ;
36+ if ( ! user ) {
37+ throw new ApiError ( 401 , 'User not found' ) ;
3738 }
38- } ;
39-
40- export const forgotPassword = async ( req , res ) => {
41- const { email } = req . body ;
4239
43- try {
44- const user = await User . findOne ( { email } ) ;
45-
46- if ( ! user ) {
47- return res . status ( 401 ) . json ( {
48- success : false ,
49- message : "User not found"
50- } )
40+ const resetToken = jwt . sign (
41+ { id : user . _id } ,
42+ process . env . JWT_SECRET ,
43+ {
44+ expiresIn : '1h'
5145 }
52-
53- const resetToken = jwt . sign (
54- { id : user . _id } ,
55- process . env . JWT_SECRET ,
56- {
57- expiresIn : '1h'
58- }
59- ) ;
46+ ) ;
6047
6148
6249 user . refreshToken = resetToken ;
@@ -79,56 +66,31 @@ export const forgotPassword = async (req, res) => {
7966 success : true ,
8067 message : 'Password reset link sent'
8168 } )
82- } catch ( error ) {
83- console . error ( error )
84- return res . status ( 500 ) . json ( {
85- success : false ,
86- message : 'server error'
87- } )
88-
69+ } ) ;
70+ // Reset password
71+ export const resetPassword = asynkcHandler ( async ( req , res ) => {
72+ const { token } = req . params ;
73+ const { password } = req . body ;
74+
75+ if ( ! password ) {
76+ throw new ApiError ( 400 , 'Password is required' ) ;
8977 }
90- }
91-
9278
93- export const resetPassword = async ( req , res ) => {
79+ let decoded ;
9480 try {
95- const { token } = req . params ;
96- const { password } = req . body ;
97-
98- if ( ! password ) {
99- return res . status ( 400 ) . json ( {
100- success : false ,
101- message : 'Password is required'
102- } )
103- }
104-
105- let decoded ;
106- try {
107- decoded = jwt . verify ( token , process . env . JWT_SECRET )
108- } catch ( error ) {
109-
110- return res . status ( 400 ) . json ( {
111- success : false ,
112- message : 'Invalid or expired token'
113- } )
114- }
115-
116-
117-
118- const user = await User . findById ( decoded . id ) ;
119- console . log ( user )
120- if ( ! user || user . refreshToken !== token ) {
121- return res . status ( 400 ) . json ( { success : false , message : 'Invalid or expired token' } ) ;
122- }
123- user . password = password ;
124-
125-
126- user . refreshToken = undefined ;
127- await user . save ( ) ;
128- return res . status ( 200 ) . json ( { success : true , message : 'Password reset successful' } ) ;
81+ decoded = jwt . verify ( token , process . env . JWT_SECRET ) ;
12982 } catch ( error ) {
83+ throw new ApiError ( 400 , 'Invalid or expired token' ) ;
84+ }
13085
131- return res . status ( 500 ) . json ( { success : false , message : 'Server error' } ) ;
132-
86+ const user = await User . findById ( decoded . id ) ;
87+ if ( ! user || user . refreshToken !== token ) {
88+ throw new ApiError ( 400 , 'Invalid or expired token' ) ;
13389 }
134- }
90+
91+ user . password = password ;
92+ user . refreshToken = undefined ;
93+ await user . save ( ) ;
94+
95+ res . status ( 200 ) . json ( { success : true , message : 'Password reset successful' } ) ;
96+ } ) ;
0 commit comments