Ember Simple Auth自定义验证器

时间:2014-08-14 00:48:51

标签: ember.js ember-simple-auth

我一直在尝试使用session.currentUseridemail属性创建points媒体资源。

我引用Custom authenticator with Ember simple auth + Ember CLIHow to store the user in a session,但我无法弄清楚这些部分是如何组合在一起的。

我使用的是Ember CLI。在我的index.html中,我有:

window.ENV['simple-auth'] = {
  authorizer: 'simple-auth-authorizer:devise',
  session: 'session:custom'
};

initializers/custom-session.js中,我有:

import Session from 'simple-auth/session';
import Devise from 'simple-auth-devise/authenticators/devise';

export default {
  name: 'session:custom',
  before: 'simple-auth',
  initialize: function(container) {
    container.register('session:custom', Devise);
    Session.extend({
      currentUser: function() {
        var id = this.get('id');
        var email: this.get('user_email');
        var points: this.get('points');

        if (!Ember.isEmpty(id)) {
          return this.store.createRecord('user', {
            id: id,
            email: email,
            points: points
          });
        }
      }.property('id')
    });
  }
};

这在很多方面对我来说都是错误的,但经过几个小时的努力才能完成这项工作,这至少表明了我想要完成的任务。

我非常感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:3)

我明白了! :)

的index.html:

window.ENV['simple-auth'] = {
  authorizer: 'simple-auth-authorizer:devise',
  session: 'session:withCurrentUser'
};

初​​始化/定制-session.js:

import Session from 'simple-auth/session';

var SessionWithCurrentUser = Session.extend({
  currentUser: function() {
    var userId = this.get('user_id');
    if (!Ember.isEmpty(userId)) {
      return this.container.lookup('store:main').find('user', userId);
    }
  }.property('user_id')
});

export default {
  name: 'customize-session',
  initialize: function(container) {
    container.register('session:withCurrentUser', SessionWithCurrentUser);
  }
};

希望这有助于其他人。