0

这是我的初始化程序:

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

4

3 回答 3

1

我想这是因为session.currentUser是一个承诺。在你的控制器中试试这个:

isAdmin: function() {
    return this.get('session.currentUser').then(function(r) {
      return r.get('role.name') == 'Administrator';
    });
}.property()
于 2014-06-21T06:12:22.167 回答
0

登录或注册时将用户信息保存在 codeigniter 会话中。

然后跨页面访问当前登录用户信息表单会话。

$userinfo = array(name=>'abc','userid'=>234);

$this->session->set_userdata($userinfo );//用于存储用户信息

$current = $this->session->userdata('userid'); //用于访问

回声$当前;

于 2014-06-12T12:13:24.127 回答
0

为什么不将 isAdmin 添加到您的 SimpleAuth 会话:

isAdmin: function() {
  return @get('current_user.role.name') == 'Administrator';
}.property('current_user')

那么你应该能够做到

{{session.isAdmin}}

在您的模板中。

于 2014-06-12T12:07:32.233 回答