В настоящее время я делаю систему Timecard для сотрудников, которую можно использовать на работе, на которой я работаю (просто чтобы сделать вещи немного менее хаотичными), и я хотел бы иметь постоянных пользователей и менеджеров.Моя базовая структура, которой я хочу добиться, заключается в следующем: для схем:
User
---name
---password
---isClockedIn
---phoneNumber
---isManager
--if isManager == true
--deleteUser
--addUser
--etc
Теперь у меня есть текущая схема пользователя:
var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var UserSchema = mongoose.Schema({
username: String,
password: String,
first_name: String,
middle_initial: String,
last_name: String,
phone: Number,
isManager: Boolean,
isLoggedIn: Boolean,
points_accrued: Number
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);
IЯ не уверен, стоит ли мне добавлять дополнительную схему для прав администратора или как предоставить обычному пользователю такой тип доступа.
Теперь для моих маршрутов я хочу пользователя (Сотрудник) и Администраторачтобы увидеть почти то же самое представление, за исключением того, что менеджер будет иметь некоторые дополнительные ссылки, которые позволят ему видеть всех пользователей, удалять их, изменять временные карты и т. д.
на данный момент вот как выглядят мои маршруты:
//INDEX SHOW USER INFO
router.get("/", middleware.isLoggedIn, middleware.isManager, function(req, res){
User.find({}, function(err, currentUser){
if(err){
console.log("error occured");
console.log(err);
} else {
res.render("users/index", {user: currentUser});
}
});
});
И тогда мое промежуточное программное обеспечение будет выглядеть так:
middlewareObj.isManager = function(req, res, next){
if(req.isAuthenticated() && req.isManager === true){
//Load Page for admins view example: see all employees clocked in and admins timesheet
return next();
} else {
//Load Page to only show current Users timesheet
return next();
}
Теперь возникает вопрос, будет ли лучше и более плавно, чтобы первая страница была одинаковой для обеихпользователь и администратор (например, показать общую информацию о времени для этого конкретного сотрудника), и если пользователь является администратором, есть ссылка, показывающая, что только они могут получить доступ для внесения каких-либо изменений на низком уровне, ИЛИ администратор может видеть все эти данные.на своей домашней странице, не переходя по другой ссылке?И еще, как я могу заставить свое промежуточное ПО сообщать маршрут, а затем маршрут сообщает html (ejs в моем случае), что показывать, а что не отображать.
Я ценю это и благодарю вас!