如何从控制器访问currentUser?

时间:2014-06-12 08:29:10

标签: javascript ember.js ember-simple-auth

这是我的初始化程序:

...
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所有控制器甚至路由?

3 个答案:

答案 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;