Skip to content

Commit c4f1aa6

Browse files
author
yanlifang
committed
delete user, change userLevel back to owner, name to NULL, email and password to ' '
1 parent b532b83 commit c4f1aa6

File tree

4 files changed

+61
-20
lines changed

4 files changed

+61
-20
lines changed

models/userModel.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ const updateUser = async (id, data) => {
4444

4545
const deleteUser = async (id, data) => {
4646
const now = moment().format(constants.dateFormat);
47-
4847
await db.pool.asyncQuery(
49-
'UPDATE Users SET userLevelID=0,email=NULL,firstName=NULL,lastName=NULL WHERE Users.userID = ?',
50-
[id],
48+
'UPDATE Users SET userLevelID = ?, password = ?, email = ?, firstName = ?, lastName = ?, updatedAt = ? WHERE Users.userID = ?',
49+
[data.userLevelID, ' ', ' ', 'NULL', 'NULL', now, id],
5150
);
51+
5252
return getUserById(id);
5353
};
5454

routes/userRouter.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@ const userRouter = express.Router();
66

77
userRouter.get('/', authService.jwt, userService.getAll);
88
userRouter.get('/level', authService.jwt, userService.getAllLevels);
9+
userRouter.get('/delete', authService.jwt, userService.getAllLevels);
910
userRouter.get('/:id', authService.jwt, userService.getUserById);
1011
userRouter.put(
1112
'/:id/level',
1213
[authService.jwt, authService.managementOnly],
1314
userService.editUserLevel,
1415
);
16+
userRouter.put(
17+
'/:id/delete',
18+
[authService.jwt, authService.managementOnly],
19+
userService.deleteUserFromDB,
20+
);
1521
userRouter.post('/login', authService.login, userService.login);
1622
userRouter.post('/create', authService.create, userService.create);
17-
userRouter.put('/:id/detete', authService.jwt, userService.delUser);
1823

1924
module.exports = userRouter;

services/userService.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,6 @@ const login = async (req, res, next) => {
7878
});
7979
};
8080

81-
const delUser = async (req, res, next) => {
82-
const userID = req.params.id;
83-
84-
await userModel.deleteUser(userID);
85-
};
86-
8781
const editUserLevel = async (req, res, next) => {
8882
const userID = req.params.id;
8983
const { userLevelID: newUserLevelID } = req.body;
@@ -118,6 +112,33 @@ const editUserLevel = async (req, res, next) => {
118112
});
119113
};
120114

115+
const deleteUserFromDB = async (req, res, next) => {
116+
const userID = req.params.id;
117+
const { userLevelID: newUserLevelID } = req.body;
118+
const { userLevel } = res.locals;
119+
const user = await userModel.getUserById(userID);
120+
121+
const userLevels = await userLevelModel.getAll();
122+
const schema = yup
123+
.number()
124+
.oneOf(userLevels.map((userLevelInner) => userLevelInner.userLevelID))
125+
.required();
126+
127+
schema
128+
.validate(newUserLevelID)
129+
.then(async (validatedUserLevelID) => {
130+
const updatedUser = await userModel.deleteUser(userID, {
131+
...user,
132+
userLevelID: validatedUserLevelID,
133+
});
134+
res.status(200).send(updatedUser);
135+
})
136+
.catch((error) => {
137+
res.status(400);
138+
res.send(error);
139+
});
140+
};
141+
121142
const getAllLevels = async (req, res, next) => {
122143
let data;
123144
try {
@@ -135,5 +156,5 @@ module.exports = {
135156
login,
136157
editUserLevel,
137158
getAllLevels,
138-
delUser,
159+
deleteUserFromDB,
139160
};

src/components/Users/UserListItem.jsx

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ export default function UserListItem({ user: propUser }) {
3434
});
3535
};
3636

37-
const deleteUser = () => {
37+
const deleteUser = (updatedUserRole) => {
38+
const userLevelID = getIDfromRole(updatedUserRole.toLowerCase());
3839
API.instance
39-
.put(`/user/${user.userID}/delete`)
40+
.put(`/user/${user.userID}/delete`, { userLevelID })
4041
.then((res) => {
4142
console.log(res);
4243
setUser(res.data);
4344
setNewUserRole('');
45+
setNewUserRole('');
4446
setModal('');
4547
})
4648
.catch((err) => {
@@ -99,21 +101,34 @@ export default function UserListItem({ user: propUser }) {
99101
<Modal show={!!modal} onHide={() => setModal('')} centered>
100102
<Modal.Header closeButton>
101103
<Modal.Title>
102-
Delete {capitalize(user.firstName)}{' '}
103-
{capitalize(`${user.lastName}`)} from User List
104+
Remove {capitalize(user.firstName)}{' '}
105+
{capitalize(`${user.lastName}`)} From User List, Change to owner
104106
</Modal.Title>
105107
</Modal.Header>
106108
<Modal.Body>
107-
Are you sure you wanna delete {capitalize(user.firstName)}{' '}
108-
{capitalize(`${user.lastName}`)} ?
109109
<Form>
110-
<Form.Label>Replace User with NULL</Form.Label>
111-
<Form.Control as="select" />
110+
<Form.Label>
111+
Are you sure you wanna delete {capitalize(user.firstName)}{' '}
112+
{capitalize(`${user.lastName}`)} ?
113+
</Form.Label>
114+
<Form.Control
115+
as="select"
116+
value={newUserRole}
117+
onChange={(e) => setNewUserRole(e.target.value)}
118+
>
119+
<option />
120+
<option>Owner</option>
121+
</Form.Control>
122+
<Form.Text className="text-danger" type="invalid">
123+
{error}
124+
</Form.Text>
112125
</Form>
113126
</Modal.Body>
114127

115128
<Modal.Footer>
116-
<Button onClick={onModalClick}>Confirm</Button>
129+
<Button disabled={newUserRole === ''} onClick={onModalClick}>
130+
Confirm
131+
</Button>
117132
</Modal.Footer>
118133
</Modal>
119134
);

0 commit comments

Comments
 (0)