这是我的初始化程序:
...
Ember.SimpleAuth.Session.reopen({
currentUser: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return container.lookup('store:main').find('user', userId);
}
}.property('user_id')
});
...
控制器:
isAdmin: function() {
var session = this.get('session.currentUser'),
role = session.get('role'); // 'role' is undefined
return role.get('name') == "Administrator";
}.property()
但是当我尝试使用模板时:
{{session.currentUser.role.name}}
效果很好。
如何访问currentUser
所有控制器甚至路由?
答案 0 :(得分:1)
我认为这是因为session.currentUser
是一个承诺。在你的控制器中试试这个:
isAdmin: function() {
return this.get('session.currentUser').then(function(r) {
return r.get('role.name') == 'Administrator';
});
}.property()
答案 1 :(得分:0)
为什么不在您的SimpleAuth会话中添加isAdmin:
isAdmin: function() {
return @get('current_user.role.name') == 'Administrator';
}.property('current_user')
然后你应该能够做到
{{session.isAdmin}}
在你的模板中。
答案 2 :(得分:0)
登录或注册时在codeigniter会话中保存用户信息。
然后跨页面访问当前登录用户信息表单会话。
$ userinfo = array(name =>'abc','userid'=> 234);
$ this-> session-> set_userdata($ userinfo); //用于商店用户信息
$ current = $ this-> session-> userdata('userid'); //访问
echo $ current;