-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
Copy pathuser-controller.js
91 lines (84 loc) · 2.82 KB
/
user-controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { HTTP_STATUS, RESPONSE_MESSAGES } from '../utils/constants.js';
import User from '../models/user.js';
import bcrypt from 'bcryptjs';
export const getAllUserHandler = async (req, res) => {
try {
const users = await User.find().select('_id name email');
return res.status(HTTP_STATUS.OK).json({ users });
} catch (error) {
res.status(HTTP_STATUS.INTERNAL_SERVER_ERROR).json({ message: error.message });
}
};
export const changeUserRoleHandler = async (req, res) => {
try {
const userId = req.params.userId;
const { role } = req.body;
if (role === 'user' || role === 'admin') {
const user = await User.findById(userId);
if (!user)
return res
.status(HTTP_STATUS.NOT_FOUND)
.json({ message: RESPONSE_MESSAGES.USERS.USER_NOT_EXISTS });
user.role = role;
user.save();
} else {
return res
.status(HTTP_STATUS.BAD_REQUEST)
.json({ message: RESPONSE_MESSAGES.COMMON.REQUIRED_FIELDS });
}
return res.status(HTTP_STATUS.OK).json({ message: RESPONSE_MESSAGES.USERS.UPDATE });
} catch (error) {
res
.status(HTTP_STATUS.INTERNAL_SERVER_ERROR)
.json({ message: RESPONSE_MESSAGES.COMMON.INTERNAL_SERVER_ERROR, error: error });
}
};
export const deleteUserHandler = async (req, res) => {
try {
const userId = req.params.userId;
const user = await User.findByIdAndDelete(userId);
if (!user)
return res
.status(HTTP_STATUS.NOT_FOUND)
.json({ message: RESPONSE_MESSAGES.USERS.USER_NOT_EXISTS });
res.status(HTTP_STATUS.NO_CONTENT).json({ message: RESPONSE_MESSAGES.USERS.DELETED });
} catch (error) {
res
.status(HTTP_STATUS.INTERNAL_SERVER_ERROR)
.json({ message: RESPONSE_MESSAGES.COMMON.INTERNAL_SERVER_ERROR, error: error });
}
};
export const getUserInformartion = async (req, res) => {
const userId = req.params.id;
try {
const user = await User.findById({ _id: userId }).select('_id userName email');
if (!user) {
res.status(HTTP_STATUS.NOT_FOUND).json({ message: RESPONSE_MESSAGES.USERS.USER_NOT_EXISTS });
}
return res.status(HTTP_STATUS.OK).json(user);
} catch (err) {
res.status(HTTP_STATUS.INTERNAL_SERVER_ERROR).json({ message: err.message });
}
};
export const updateUserHandler = async (req, res) => {
try {
const salt = await bcrypt.genSalt(10);
const hashPassword = await bcrypt.hash(req.body.password, salt);
const updatedUser = await User.findByIdAndUpdate(
req.params.id,
{
$set: {
userName: req.body.username,
email: req.body.email,
password: hashPassword,
},
},
{
new: true,
}
);
res.status(HTTP_STATUS.OK).json(updatedUser);
} catch (err) {
res.status(HTTP_STATUS.INTERNAL_SERVER_ERROR).json({ message: err.message });
}
};