1- const bcrypt = require ( 'bcrypt' ) ;
2- const jwt = require ( 'jsonwebtoken' ) ;
3- const { JWT_SECRET } = process . env ;
4- const { findUserByEmail, findUserByID , getUserById} = require ( '../models/userModel' ) ;
5- const { generateToken , verifyToken } = require ( '../utils/jwtUtils' ) ;
1+ const loginUser = require ( '../usecases/login/loginUser' ) ;
2+ const verifyUserToken = require ( '../usecases/login/verifyUserToken' ) ;
3+ const userRepository = require ( '../repositories/userRepository' ) ;
64const logger = require ( '../config/logger' ) ;
7-
8- const createResponse = ( user = "" , status = "Failed" , message = "" ) => {
9- return { user, status, message } ;
10- } ;
11-
5+ const ResponseHandler = require ( '../utils/ResponseHandler' ) ;
126
137const login = async ( req , res ) => {
148 const { email, password } = req . body ;
15- const user = await findUserByEmail ( email ) ;
16- if ( ! user ) {
17- logger . warn ( `Login failed: User with email ${ email } not found` ) ;
18- const tokenResponse = {
19- token : "" ,
20- status :"User Not Found"
21- } ;
22- return res . status ( 400 ) . send ( tokenResponse ) ;
23- }
249
25- const validPass = await bcrypt . compare ( password , user . password ) ;
26- if ( ! validPass ) {
27- logger . warn ( `Login failed: Incorrect password for email ${ email } `) ;
28- const tokenResponse = {
29- token : "" ,
30- status : "Invalid Password"
31- } ;
32- return res . status ( 400 ) . send ( tokenResponse ) ;
10+ try {
11+ const { token } = await loginUser ( email , password , userRepository ) ;
12+ logger . info ( `User logged in: ${ email } `) ;
13+ res . header ( 'auth-token' , token ) ;
14+ return ResponseHandler . success ( res , { token } , 'User logged in successfully' ) ;
15+ } catch ( error ) {
16+ logger . warn ( `Login failed: ${ error . message } ` ) ;
17+ return ResponseHandler . fail ( res , error . message , null , 400 ) ;
3318 }
34-
35- const token = generateToken ( user ) ;
36- logger . info ( `User logged in: ${ email } ` ) ;
37- const tokenResponse = {
38- token : token ,
39- status :"Success"
40- } ;
41- res . header ( 'auth-token' , token ) . send ( tokenResponse ) ;
4219} ;
4320
4421const verify = async ( req , res ) => {
4522 const token = req . header ( 'Authorization' ) ?. split ( ' ' ) [ 1 ] ;
4623
47- if ( ! token ) {
48- logger . warn ( 'No token provided' ) ;
49- return res . status ( 401 ) . send ( createResponse ( "" , "Failed" , "No token Provided" ) ) ;
50- }
51-
52- try {
53-
54- const decoded = verifyToken ( token ) ;
55- logger . info ( `Token request verified` ) ;
56-
57- const user = await getUserById ( decoded . id ) ;
58-
59- if ( user . user_id > 0 ) {
60- return res . status ( 200 ) . send ( createResponse ( user , "Success" , "User retrieved" ) ) ;
61- } else {
62- return res . status ( 401 ) . send ( createResponse ( "" , "Failed" , "User Not Found" ) ) ;
24+ if ( ! token ) {
25+ logger . warn ( 'No token provided' ) ;
26+ return ResponseHandler . fail ( res , 'No token provided' , null , 401 ) ;
6327 }
6428
65-
66-
29+ try {
30+ const user = await verifyUserToken ( token , userRepository ) ;
31+ logger . info ( 'User token verified' ) ;
32+ return ResponseHandler . success ( res , user , 'User retrieved successfully' ) ;
6733 } catch ( err ) {
68- logger . error ( `Invalid token : ${ err . message } ` ) ;
69- return res . status ( 401 ) . send ( createResponse ( "" , "Failed" , "Invalid token Provided" ) ) ;
34+ logger . error ( `Token verification failed : ${ err . message } ` ) ;
35+ return ResponseHandler . fail ( res , err . message , null , 401 ) ;
7036 }
7137} ;
7238
73-
74-
75-
76- module . exports = { login , verify} ;
39+ module . exports = { login, verify } ;
0 commit comments