11const User = require ( "./model" ) ;
22const asyncErrorHandler = require ( "../utils/asyncErrorHandler" ) ;
3+ const CustomError = require ( "../error/utils/customError" ) ;
34
45// Get all users
56const getUsers = asyncErrorHandler ( async ( req , res ) => {
67 const users = await User . find ( ) ;
78 if ( ! users ) {
8- return res . status ( 404 ) . json ( {
9- success : false ,
10- message : "No users found" ,
11- } ) ;
9+ throw new CustomError ( "No users found" , 404 ) ;
1210 }
1311
1412 res . status ( 200 ) . json ( {
@@ -38,62 +36,17 @@ const getUserById = asyncErrorHandler(async (req, res) => {
3836
3937// Update user by ID
4038const updateUser = asyncErrorHandler ( async ( req , res ) => {
41- const { id } = req . params ;
42- const { operation } = req . body ;
39+ const user = await User . findByIdAndUpdate ( req . params . id , req . body , {
40+ new : true ,
41+ } ) ;
4342
44- const user = await User . findById ( id ) ;
4543 if ( ! user ) throw new CustomError ( "User not found" , 404 ) ;
4644
47- switch ( operation ) {
48- case "UPDATE_PROFILE" :
49- Object . assign ( user , req . body ) ;
50- await user . save ( ) ;
51- return res . status ( 200 ) . json ( {
52- success : true ,
53- message : "Profile updated successfully" ,
54- user,
55- } ) ;
56-
57- case "UPDATE_PASSWORD" :
58- const { currentPassword, newPassword } = req . body ;
59- // Check current password
60- const isMatch = await bcrypt . compare ( currentPassword , user . password ) ;
61- if ( ! isMatch ) throw new CustomError ( "Current password is incorrect" , 401 ) ;
62-
63- // Hash new password
64- user . password = await bcrypt . hash ( newPassword , 12 ) ;
65- await user . save ( ) ;
66- return res . status ( 200 ) . json ( {
67- success : true ,
68- message : "Password updated successfully" ,
69- } ) ;
70-
71- case "UPDATE_ROLE" :
72- // Middleware already ensures req.user.role === 'ADMIN'
73- // middleware already ensures req.role esists
74-
75- user . role = role ;
76- await user . save ( ) ;
77-
78- // Generate a new JWT since the user's role changed
79- const newToken = signJwtToken ( user . _id , user . username , user . role ) ;
80-
81- // Send new token in cookie
82- res . cookie ( "jwt-token" , newToken , {
83- httpOnly : true ,
84- secure : process . env . NODE_ENV === "production" ,
85- maxAge : 24 * 60 * 60 * 1000 , // 1 day
86- } ) ;
87-
88- return res . status ( 200 ) . json ( {
89- success : true ,
90- message : "Role updated successfully" ,
91- data : { _id : user . _id , role : user . role } ,
92- } ) ;
93-
94- default :
95- throw new CustomError ( "Invalid operation" , 400 ) ;
96- }
45+ res . status ( 200 ) . json ( {
46+ success : true ,
47+ message : "User updated successfully!" ,
48+ user,
49+ } ) ;
9750} ) ;
9851
9952// Delete user by ID
@@ -103,39 +56,15 @@ const deleteUser = asyncErrorHandler(async (req, res, next) => {
10356
10457 if ( ! deletedUser ) throw new CustomError ( "User not found" , 404 ) ;
10558
106- // Extract cart and preferences from deleted user
107- const {
108- cart = [ ] ,
109- preferences = { theme : "light" } ,
110- settings = { } ,
111- } = deletedUser ;
112-
113- // Clear auth cookies (JWT + session)
114- res . clearCookie ( "jwt-token" , {
115- httpOnly : true ,
116- secure : process . env . NODE_ENV === "production" ,
117- } ) ;
118-
119- // Initialize guest session using user's previous data
120- req . session . guest = true ;
121- req . session . cart = cart ;
122- req . session . preferences = preferences ;
123- req . session . settings = settings ;
124- req . session . consent = {
125- necessary : true ,
126- preferences : true ,
127- settings : true ,
128- analytics : false ,
129- marketing : false ,
130- } ;
59+ // res.clearCookie("access-token", {
60+ // httpOnly: true,
61+ // secure: process.env.NODE_ENV === "production",
62+ // });
13163
13264 // Respond
13365 res . status ( 200 ) . json ( {
13466 success : true ,
135- message : "Account deleted. Guest session initialized." ,
136- sessionId : req . sessionID ,
137- cart : req . session . cart ,
138- preferences : req . session . preferences ,
67+ message : "Account deleted successfully!" ,
13968 } ) ;
14069} ) ;
14170
0 commit comments