Задача состоит в следующем на сайте при регистрации пользователя в базу данных записываю следующее:
файл постмодельconst UserSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
role: {
type: String,
default: 'User'
}
});
Далее в глобальную переменную записываю данные авторизованного пользователя:
res.locals.user = req.user || null;
Саму админ панель скрываю от пользователя с параметром отличным от role: "Admin" следующим образом:
isUserAuthenticated: (req, res, next) => {
if (req.isAuthenticated()){
if(req.user.role === 'Admin'){
next();//если оказался админом то редиректет в админпанель после авторизации
}
else{
res.redirect('/');//если оказался просто юзером то получаешь редирект на главную после авторизации
}
}else{
res.redirect('/');//
}
}
Как написать проверку для шаблонизатора hendlebars, при условии все юзеры отличные от role:Admin, не должны видеть ссылку для входа в адими панель, такая конструкция не работает:
{{#if user.role }}
<li class="nav-item">
<a class="nav-link" href="/admin">Admin</a>
</li>
{{else}}
<li class="nav-item">
<a class="nav-link" href="/login">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/register">Register</a>
</li>
{{/if}}