5

アプリケーションでember-simple-authを使用していますが、うまく機能していますが、現在のユーザーのプロパティ (電子メールや名前など) を UI に表示できるようにしたいと考えています。過去に、アプリケーション初期化子を使用してこれを行い、基本的にすべてのコントローラーに currentUser を挿入しましたが、アプリケーションが初期化されたときに現在のユーザーを知る必要がありました。OAuth を使用しているため、アプリケーションの読み込み時にユーザーが不明です。

現在ログインしているユーザーからプロパティを取得する方法はありますか?

4

1 に答える 1

7

私が使用していた ember-simple-auth のバージョンが古く、(0.2.x から) 0.3.x にアップグレードする必要があることが判明しました。そこから、プロジェクトのサンプル ファイルからほぼ直接取得したカスタム認証システムを追加することができました。私は Ember 1.6.0 beta 2 を使用していることに注意してください。

this.get('session.currentUser')以下のコードを使用すると、 を使用してルートとコントローラーで、または を使用してテンプレートでcurrentUser にアクセスできます{{session.currentUser}}

API に加えなければならなかった唯一の変更はuser_id、OAuth 応答に を含めることでした。

0.4.0をサポートするために以前の回答から更新されました

次に、イニシャライザを次のように更新しました。

App.initializer({
  name: 'authentication',

  initialize: function(container, application) {
    Ember.SimpleAuth.Authenticators.OAuth2.reopen({
      serverTokenEndpoint: '/api/oauth/token'
    });

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

    Ember.SimpleAuth.setup(container, application, {
      authorizerFactory: 'ember-simple-auth-authorizer:oauth2-bearer',
      routeAfterAuthentication: 'main.dashboard'
    });
  }
});

ログインコントローラーは次のようになります。

export default Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, {
  authenticatorFactory: 'ember-simple-auth-authenticator:oauth2-password-grant'
});
于 2014-05-08T01:53:12.427 に答える