отображать элементы навигации на основе значения isAdmin node.js - PullRequest
0 голосов
/ 09 июня 2018

У меня есть node.js и экспресс-приложение, в моей пользовательской модели есть логическое поле isAdmin.что я хочу сделать, это скрыть определенные элементы в навигации, основываясь на том, является ли пользователь, вошедший в систему, администратором или нет.Я написал два помощника auth.js проверяет, вошел ли пользователь в систему или нет, следующий код:

module.exports = {
    ensureAuthenticated: function (req, res, next) {
        if (req.isAuthenticated()) {
            return next();
        }
        req.flash('error_msg', 'Not Authorized');
        res.redirect('/login');
    }
}

другой помощник - adminCheck.js, который проверяет, является ли пользователь администратором или нет:

module.exports = {
    adminUser: function (req, res, next) {
        if (req.user.isAdmin) {
            return next();
        }
        req.flash('error_msg', 'You have tried to access a restricted space. As a result you have been logged out!');
        res.redirect('/logout');
    }
}

для маршрутов, связанных с администратором, я успешно использую эти помощники, например:

// admin index route 
router.get('/', [ensureAuthenticated, adminUser], (req, res) => {
    res.render('admin/index');
});

Но проблема в моем html, в навигации я могу скрыть определенные элементы, основываясь на том,пользователь вошел в систему или нет:

   {{#if user}}
                <div class="col-md-2">
                    <ul class="list-inline sm-pull-none sm-text-center text-right text-white mb-sm-20 mt-10">
                        <li class="m-0 pl-10">
                            <a href="/logout" class="text-white">
                                <i class="fa fa-user-o mr-5 text-white"></i> logout</a>
                        </li>

                        <li class="m-0 pl-10">
                            <a href="/admin" class="text-white">
                                <i class="fa fa-user-o mr-5 text-white"></i> Admin</a>
                        </li>


                    </ul>
                </div>
                {{else}}
                <div class="col-md-2">
                    <ul class="list-inline sm-pull-none sm-text-center text-right text-white mb-sm-20 mt-10">
                        <li class="m-0 pl-10">
                            <a href="/login" class="text-white">
                                <i class="fa fa-user-o mr-5 text-white"></i> Login /</a>
                        </li>
                        <li class="m-0 pl-0 pr-10">
                            <a href="/register" class="text-white">
                                <i class="fa fa-edit mr-5 text-white"></i>Register</a>
                        </li>
                    </ul>
                </div>
                {{/if}}

, как вы можете видеть в приведенном выше HTML, есть ссылка на администратора, я хочу скрыть, что в зависимости от вошедшего в систему пользователя, как я могу это сделать?какой будет специальный вспомогательный код для этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 июня 2018

ОК ... так что мне просто нужно изменить свое утверждение на

{{#if user.isAdmin}}
...