Skip to content

Commit 294d897

Browse files
committed
Project initially Done
1 parent 0433497 commit 294d897

File tree

6 files changed

+44
-9
lines changed

6 files changed

+44
-9
lines changed

controller/loginController.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const userLogin = async (req, res, next) => {
3232
mobile: user.mobile,
3333
email: user.email,
3434
avatar: user.avatar,
35-
role: "user",
35+
role: user.role || "user",
3636
};
3737

3838
// Generate Token:
@@ -49,7 +49,7 @@ const userLogin = async (req, res, next) => {
4949

5050
// Set Logged in user as local Identifier:
5151
res.locals.loggedInUser = userObject;
52-
res.render("inbox");
52+
res.redirect("/inbox");
5353
} else {
5454
throw createHttpError("Login Failed! Please Try Again");
5555
}

middlewares/common/checkLogin.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// External Modules:
2+
const createError = require("http-errors");
23
const jwt = require("jsonwebtoken");
34

45
const checkLogin = (req, res, next) => {
@@ -38,5 +39,24 @@ const redirectLogin = (req, res, next) => {
3839
}
3940
};
4041

42+
const checkRole = (role) => (req, res, next) => {
43+
console.log(req.user);
44+
if (req.user.role && role.includes(req.user.role)) {
45+
next();
46+
} else {
47+
if (res.locals.html) {
48+
next(createError(401, "You are not Authorized to access this page!"));
49+
} else {
50+
res.status(401).json({
51+
errors: {
52+
common: {
53+
msg: "You are not Authorized To access this page!",
54+
},
55+
},
56+
});
57+
}
58+
}
59+
};
60+
4161
// Module Export :
42-
module.exports = { checkLogin, redirectLogin };
62+
module.exports = { checkRole, checkLogin, redirectLogin };

public/stylesheets/style.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,8 @@ input[type="submit"]:active {
473473
}
474474

475475
.other-message .message-content {
476-
grid-template-columns: 48px 1fr 1fr;
476+
/* grid-template-columns: 48px 1fr 1fr; */
477+
grid-template-columns: 48px 1fr;
477478
grid-column-gap: 15px;
478479
}
479480

router/userRouter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const {
88
addUser,
99
deleteUser,
1010
} = require("../controller/userController");
11-
const { checkLogin } = require("../middlewares/common/checkLogin");
11+
const { checkLogin, checkRole } = require("../middlewares/common/checkLogin");
1212
const decorateHtmlResponse = require("../middlewares/common/decorateHtmlResponse");
1313
const avatarUpload = require("../middlewares/users/avatarUpload");
1414
const {
@@ -17,15 +17,22 @@ const {
1717
} = require("../middlewares/users/userValidator");
1818

1919
// Get User Page
20-
router.get("/", decorateHtmlResponse("User"), checkLogin, getUsers);
20+
router.get(
21+
"/",
22+
decorateHtmlResponse("User"),
23+
checkLogin,
24+
checkRole(["admin"]),
25+
getUsers
26+
);
2127

2228
// Delete User:
23-
router.delete("/:id", deleteUser);
29+
router.delete("/:id", checkLogin, checkRole(["admin"]), deleteUser);
2430

2531
// Add User With Avatar {Rest API}
2632
router.post(
2733
"/",
2834
checkLogin,
35+
checkRole(["admin"]),
2936
avatarUpload,
3037
addUserValidators,
3138
addUserValidationHandler,

views/inbox.ejs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@
8383
8484
// HANDLE NEW/LIVE INCOMINT MESSAGE FROM SOCKET:
8585
socket.on('new_message', (data)=>{
86-
console.log("Socket is Working!")
8786
if(data.message.conversation_id == current_conversation_id){
8887
// message class
8988
const messageClass = data.message.sender.id === loggedinUserId ? 'you-message' : 'other-message';

views/partials/header.ejs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,15 @@
2020
<% if(loggedInUser && loggedInUser.email){ %>
2121
<div class="menu-item"><a href="/inbox">Inbox</a></div>
2222
<div class="menu-item"><a href="/users">Users</a></div>
23-
<div class="menu-item"><a href="#" onclick="logout()">logout</a></div>
23+
<div class="menu-item">
24+
<% if (loggedInUser && loggedInUser.avatar) { %>
25+
<img src="./uploads/avatars/<%= loggedInUser.avatar %>" alt="<%= loggedInUser.name %>"
26+
/>
27+
<% } else { %>
28+
<img src="./images/nophoto.png" alt="<%= loggedInUser.name %>" />
29+
<% } %>
30+
<a href="#" onclick="logout()">Logout</a>
31+
</div>
2432
<% }else{ %>
2533
<div class="menu-item"><a href="/inbox">Inbox</a></div>
2634
<div class="menu-item"><a href="/users">Users</a></div>

0 commit comments

Comments
 (0)