v0.0.1
This commit is contained in:
70
api/middleware/auth.js
Normal file
70
api/middleware/auth.js
Normal file
@@ -0,0 +1,70 @@
|
||||
const db = require("../config/db");
|
||||
|
||||
const authenticate = (req, res, next) => {
|
||||
const uuid = req.headers["authorization"];
|
||||
if (!uuid) return res.status(401).json({ error: "Unauthorized" });
|
||||
|
||||
db.get(`
|
||||
SELECT sheeps.*, administrators.* FROM administrators JOIN sheeps ON sheeps.id = administrators.sheep_id WHERE administrators.uuid = ?`,
|
||||
[uuid],
|
||||
(err, administrator) => {
|
||||
if (administrator) {
|
||||
req.sheepId = administrator.sheep_id;
|
||||
req.sheepRole = 'administrator';
|
||||
req.group_id = administrator.group_id;
|
||||
req.sheepName = administrator.name;
|
||||
req.can_view_schedule = administrator.can_view_schedule;
|
||||
req.can_view_stand = administrator.can_view_stand;
|
||||
req.can_view_territory = administrator.can_view_territory;
|
||||
|
||||
return next();
|
||||
}
|
||||
|
||||
db.get(`
|
||||
SELECT sheeps.*, moderators.* FROM moderators JOIN sheeps ON sheeps.id = moderators.sheep_id WHERE moderators.uuid = ?`,
|
||||
[uuid],
|
||||
(err, moderator) => {
|
||||
if (moderator) {
|
||||
req.sheepId = moderator.sheep_id;
|
||||
req.sheepRole = 'moderator';
|
||||
req.moderator = {
|
||||
"id": moderator.moderators_id ? moderator.moderators_id : false,
|
||||
"can_add_sheeps": moderator.can_add_sheeps == 1 ? true : false,
|
||||
"can_add_territory": moderator.can_add_territory == 1 ? true : false,
|
||||
"can_manager_territory": moderator.can_manager_territory == 1 ? true : false,
|
||||
"can_add_stand": moderator.can_add_stand == 1 ? true : false,
|
||||
"can_manager_stand": moderator.can_manager_stand == 1 ? true : false,
|
||||
"can_add_schedule": moderator.can_add_schedule == 1 ? true : false
|
||||
}
|
||||
req.group_id = moderator.group_id;
|
||||
req.sheepName = moderator.name;
|
||||
req.can_view_schedule = moderator.can_view_schedule;
|
||||
req.can_view_stand = moderator.can_view_stand;
|
||||
req.can_view_territory = moderator.can_view_territory;
|
||||
|
||||
return next();
|
||||
}
|
||||
|
||||
db.get(`SELECT sheeps.* FROM sheeps WHERE sheeps.uuid = ?`, [uuid], (err, sheep) => {
|
||||
if (sheep) {
|
||||
req.sheepId = sheep.id;
|
||||
req.sheepRole = 'sheep';
|
||||
req.group_id = sheep.group_id;
|
||||
req.sheepName = sheep.name;
|
||||
req.can_view_schedule = sheep.can_view_schedule;
|
||||
req.can_view_stand = sheep.can_view_stand;
|
||||
req.can_view_territory = sheep.can_view_territory;
|
||||
|
||||
return next();
|
||||
}
|
||||
|
||||
return res.status(401).json({ error: "UUID not found" });
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
module.exports = authenticate;
|
||||
Reference in New Issue
Block a user