Skip to content

Commit 800acff

Browse files
half way done
2 parents 748be2b + f6bc87c commit 800acff

69 files changed

Lines changed: 2264 additions & 95 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Backend/.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
MONGODB_URI = mongodb+srv://user-123:user-123@institute-management.7ubab.mongodb.net/instituteManager?retryWrites=true&w=majority
1+
MONGODB_URI = mongodb+srv://user-123:user-123@institute-management.7ubab.mongodb.net/instituteManager?retryWrites=true&w=majority

Backend/Config/auth.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
secret: "SPM-secret-key"
3+
};

Backend/Controllers/Accountant/controller.student.payment.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,24 @@ const deleteById = (req, res) => {
193193
});
194194
};
195195

196+
/**
197+
* Calculate total Fee controller
198+
* @param req
199+
* @param res
200+
* @returns {Promise<any>}
201+
*/
202+
const calculateAmount = async (req, res) => {
203+
204+
}
205+
196206
/**
197207
* export controllers
198208
* @type {{createStudentPayment: createStudentPayment,
199209
* getAllStudentPayment: getAllStudentPayment,
200210
* viewStudentPaymentById: viewStudentPaymentById,
201211
* updateById: updateById,
202-
* deleteById: deleteById}}
212+
* deleteById: deleteById,
213+
* calculateAmount: calculateAmount}}
203214
*/
204215
module.exports = {
205216
studentPaymentById,
@@ -209,5 +220,6 @@ module.exports = {
209220
photo,
210221
updateStatus,
211222
updateById,
212-
deleteById
223+
deleteById,
224+
calculateAmount
213225
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
const config = require('../config/auth.config');
2+
const db = require('../Modules');
3+
const User = db.user;
4+
const Role = db.role;
5+
6+
var jwt = require("jsonwebtoken");
7+
var bcrypt = require('bcryptjs');
8+
9+
10+
exports.signup = (req, res) => {
11+
const user = new User({
12+
username: req.body.username,
13+
email: req.body.email,
14+
password: bcrypt.hashSync(req.body.password, 8),
15+
number : req.body.number
16+
});
17+
18+
user.save((err, user) => {
19+
if (err) {
20+
res.status(500).send({ message: err });
21+
return;
22+
}
23+
24+
if (req.body.roles) {
25+
Role.find(
26+
{
27+
name: { $in: req.body.roles }
28+
},
29+
(err, roles) => {
30+
if (err) {
31+
res.status(500).send({ message: err });
32+
return;
33+
}
34+
35+
user.roles = roles.map(role => role._id);
36+
user.save(err => {
37+
if (err) {
38+
res.status(500).send({ message: err });
39+
return;
40+
}
41+
42+
res.send({ message: "User was registered successfully!" });
43+
});
44+
}
45+
);
46+
}
47+
else {
48+
Role.findOne({ name: "user" }, (err, role) => {
49+
if (err) {
50+
res.status(500).send({ message: err });
51+
return;
52+
}
53+
54+
user.roles = [role._id];
55+
user.save(err => {
56+
if (err) {
57+
res.status(500).send({ message: err });
58+
return;
59+
}
60+
61+
res.send({ message: "User was registered successfully!" });
62+
});
63+
});
64+
}
65+
});
66+
};
67+
68+
exports.signin = (req, res) => {
69+
User.findOne({
70+
username: req.body.username
71+
})
72+
.populate("roles", "-__v")
73+
.exec((err, user) => {
74+
if (err) {
75+
res.status(500).send({ message: err });
76+
return;
77+
}
78+
79+
if (!user) {
80+
return res.status(404).send({ message: "User Not found." });
81+
}
82+
83+
var passwordIsValid = bcrypt.compareSync(
84+
req.body.password,
85+
user.password
86+
);
87+
88+
if (!passwordIsValid) {
89+
return res.status(401).send({
90+
accessToken: null,
91+
message: "Invalid Password!"
92+
});
93+
}
94+
95+
var token = jwt.sign({ id: user.id }, config.secret, {
96+
expiresIn: 86400 // 24 hours
97+
});
98+
99+
var authorities = [];
100+
101+
for (let i = 0; i < user.roles.length; i++) {
102+
authorities.push("ROLE_" + user.roles[i].name.toUpperCase());
103+
}
104+
res.status(200).send({
105+
id: user._id,
106+
username: user.username,
107+
email: user.email,
108+
roles: authorities,
109+
number: user.number,
110+
accessToken: token
111+
});
112+
});
113+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
exports.allAccess = (req, res) => {
2+
res.status(200).send("Public Content.");
3+
};
4+
5+
exports.userBoard = (req, res) => {
6+
res.status(200).send("User Content.");
7+
};
8+
9+
exports.adminBoard = (req, res) => {
10+
res.status(200).send("Admin Content.");
11+
};
12+
13+
exports.studentBoard = (req, res) => {
14+
res.status(200).send("Student Content.");
15+
};
16+
17+
exports.teacherBoard = (req, res) => {
18+
res.status(200).send("Teacher Content.");
19+
};
20+
21+
exports.managerBoard = (req, res) => {
22+
res.status(200).send("Manager Content.");
23+
};

Backend/Middlewares/authJwt.js

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
const jwt = require("jsonwebtoken");
2+
const config = require("../config/auth.config");
3+
const db = require("../Modules");
4+
const User = db.user;
5+
const Role = db.role;
6+
7+
8+
verifyToken = (req, res, next) => {
9+
let token = req.headers["x-access-token"];
10+
11+
if (!token) {
12+
return res.status(403).send({ message: "No token provided!" });
13+
}
14+
15+
jwt.verify(token, config.secret, (err, decoded) => {
16+
if (err) {
17+
return res.status(401).send({ message: "Unauthorized!" });
18+
}
19+
req.userId = decoded.id;
20+
next();
21+
});
22+
};
23+
24+
isAdmin = (req, res, next) => {
25+
User.findById(req.userId).exec((err, user) => {
26+
if (err) {
27+
res.status(500).send({ message: err });
28+
return;
29+
}
30+
31+
Role.find(
32+
{
33+
_id: { $in: user.roles }
34+
},
35+
(err, roles) => {
36+
if (err) {
37+
res.status(500).send({ message: err });
38+
return;
39+
}
40+
41+
for (let i = 0; i < roles.length; i++) {
42+
if (roles[i].name === "admin") {
43+
next();
44+
return;
45+
}
46+
}
47+
48+
res.status(403).send({ message: "Require Admin Role!" });
49+
return;
50+
}
51+
);
52+
});
53+
};
54+
55+
isManager = (req, res, next) => {
56+
User.findById(req.userId).exec((err, user) => {
57+
if (err) {
58+
res.status(500).send({ message: err });
59+
return;
60+
}
61+
62+
Role.find(
63+
{
64+
_id: { $in: user.roles }
65+
},
66+
(err, roles) => {
67+
if (err) {
68+
res.status(500).send({ message: err });
69+
return;
70+
}
71+
72+
for (let i = 0; i < roles.length; i++) {
73+
if (roles[i].name === "manager") {
74+
next();
75+
return;
76+
}
77+
}
78+
79+
res.status(403).send({ message: "Require Manager Role!" });
80+
return;
81+
}
82+
);
83+
});
84+
};
85+
86+
isTeacher = (req, res, next) => {
87+
User.findById(req.userId).exec((err, user) => {
88+
if (err) {
89+
res.status(500).send({ message: err });
90+
return;
91+
}
92+
93+
Role.find(
94+
{
95+
_id: { $in: user.roles }
96+
},
97+
(err, roles) => {
98+
if (err) {
99+
res.status(500).send({ message: err });
100+
return;
101+
}
102+
103+
for (let i = 0; i < roles.length; i++) {
104+
if (roles[i].name === "teacher") {
105+
next();
106+
return;
107+
}
108+
}
109+
110+
res.status(403).send({ message: "Require Teacher Role!" });
111+
return;
112+
}
113+
);
114+
});
115+
};
116+
117+
isStudent = (req, res, next) => {
118+
User.findById(req.userId).exec((err, user) => {
119+
if (err) {
120+
res.status(500).send({ message: err });
121+
return;
122+
}
123+
124+
Role.find(
125+
{
126+
_id: { $in: user.roles }
127+
},
128+
(err, roles) => {
129+
if (err) {
130+
res.status(500).send({ message: err });
131+
return;
132+
}
133+
134+
for (let i = 0; i < roles.length; i++) {
135+
if (roles[i].name === "student") {
136+
next();
137+
return;
138+
}
139+
}
140+
141+
res.status(403).send({ message: "Require Student Role!" });
142+
return;
143+
}
144+
);
145+
});
146+
};
147+
const authJwt = {
148+
verifyToken,
149+
isAdmin,
150+
isStudent,
151+
isTeacher,
152+
isManager
153+
};
154+
module.exports = authJwt;

Backend/Middlewares/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const authJwt = require('./authJwt');
2+
const verifySignUp = require('./verifySignUp');
3+
4+
module.exports = {
5+
authJwt,
6+
verifySignUp
7+
};

0 commit comments

Comments
 (0)