Skip to content

Commit a9ac1eb

Browse files
add option to set privilaged roles in staging backend
1 parent 7554970 commit a9ac1eb

File tree

4 files changed

+78
-1
lines changed

4 files changed

+78
-1
lines changed

controllers/staging.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
const { addOrUpdate } = require("../models/users");
2+
3+
const updateRoles = async (req, res) => {
4+
try {
5+
const userData = await req.userData;
6+
// console.log(process.env.NODE_ENV);
7+
if (process.env.NODE_ENV !== "staging" || process.env.NODE_ENV !== "development") {
8+
return res.status(403).json({
9+
message: "FORBIDDEN | To be used only in staging and development",
10+
});
11+
}
12+
const userId = req.userData.id;
13+
if (req.body.super_user) {
14+
await addOrUpdate(
15+
{
16+
roles: {
17+
...userData.roles,
18+
super_user: req.body.super_user,
19+
},
20+
},
21+
userId
22+
);
23+
} else if (req.body.member) {
24+
await addOrUpdate(
25+
{
26+
roles: {
27+
...userData.roles,
28+
member: req.body.member,
29+
},
30+
},
31+
userId
32+
);
33+
}
34+
return res.status(200).json({
35+
message: "Roles Updated successfully",
36+
});
37+
} catch (err) {
38+
logger.error(`Oops an error occured: ${err}`);
39+
return res.status(500).json({
40+
message: "Oops an internal error occured",
41+
});
42+
}
43+
};
44+
45+
module.exports = {
46+
updateRoles,
47+
};

middlewares/validators/staging.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const joi = require("joi");
2+
3+
const validateUserRoles = async (req, res, next) => {
4+
const config = {
5+
super_user: joi.boolean().optional(),
6+
member: joi.boolean().optional(),
7+
};
8+
const schema = joi.object(config).xor("super_user", "member");
9+
10+
try {
11+
await schema.validateAsync(req.body);
12+
next();
13+
} catch (err) {
14+
logger.error(`Error validating validateUserRoles payload : ${err}`);
15+
res.boom.badRequest(JSON.stringify({ allowedParameters: { super_user: "boolean", member: "boolean" } }));
16+
}
17+
};
18+
19+
module.exports = {
20+
validateUserRoles,
21+
};

routes/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ app.use("/discord-actions", require("./discordactions.js"));
3030
app.use("/issues", require("./issues.js"));
3131
app.use("/progresses", require("./progresses.js"));
3232
app.use("/monitor", require("./monitor.js"));
33-
33+
app.use("/staging", require("./staging.js"));
3434
module.exports = app;

routes/staging.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const express = require("express");
2+
const authenticate = require("../middlewares/authenticate");
3+
const { validateUserRoles } = require("../middlewares/validators/staging");
4+
const { updateRoles } = require("../controllers/staging");
5+
const router = express.Router();
6+
7+
router.patch("/user", validateUserRoles, authenticate, updateRoles);
8+
9+
module.exports = router;

0 commit comments

Comments
 (0)