2013-04-14 2 views
0

Итак, у меня есть пользователь, хранящийся в session, когда они входят в мое приложение Node.js. У меня есть администраторы и пользователи по умолчанию, если я выхожу #{session.user.role} в шаблон Jade, я получаю default или admin. И при тестировании на моей странице я могу скрыть элементы на странице с помощью -if(session.user), чтобы скрыть элемент, если никто не вошел в систему, но как скрыть элементы для пользователей, которые не являются админами?Jade - доступ к переменной, переданной ей

Я попытался вставить -if(session.user.role === 'default'), но я получаю сообщение об ошибке Cannot read property 'role' of undefined. Так что это не сработает, какие-нибудь идеи о том, как это сделать?

Вот схема пользователя с помощью Мангуст:

var User = new Schema({ 
    'key' : { 
    unique : true, 
    type : Number, 
    default: getId 
    }, 
    'username' : { type : String, 
       validate : [validatePresenceOf, 'a Username is required'], 
       set : toLower, 
       index : { unique : true } 
       }, 
    'password' : String, 
    'role' : String, 
}); 
+0

Вы говорите, 'session.user.role' выходы по умолчанию или администратора, поэтому он должен существовать. Вы уверены, что неопределенная ошибка не только для пользователей, которые не вошли в систему? Если это так, вы можете написать 'if (session.user && session.user.role === 'default')'. –

ответ

3
- if (typeof session.user != 'undefined' && session.user.role === 'default') 
+0

Отличное спасибо. – germainelol

+0

Из интереса, вы знаете, как это сделать на «экспресс» маршруте для приложения Node.js? Я направляюсь на страницу, но хочу отключить доступ к странице, если пользователь не является администратором. Я просто использую журнал для консоли в настоящий момент, чтобы печатать на консоль, если пользователь является администратором или нет, но я получаю ошибку 'session not defined'. – germainelol

+0

да, 'middleware' http://expressjs.com/api.html#middleware – monkeyinsight

Смежные вопросы