ember-data 1.0.0-beta.8 では、ember-simple-auth は他のリクエストを行う前に API から現在のユーザーを読み込みます。これにより、現在のユーザー データが他のルートで利用できることが保証されます。ember-data 1.0.0-beta.9 にアップグレードした後、他の API リクエストを行った後に現在のユーザーを読み込みます。
ember-data 1.0.0-beta.9 を使用して、他のデータの前にember-simple-auth が現在のユーザーをロードするように強制する方法はありますか?
次のようなカスタム簡易認証セッション:
import SimpleAuthSession from 'simple-auth/session';
export default SimpleAuthSession.extend({
updateCurrentUser: function() {
var self = this;
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
self.set('currentUser', self.container.lookup('store:main').find('current-user', userId));
}
}.observes('user_id')
});
私の認証イニシャライザ:
import MyAppSession from 'my-app-ember/lib/my-app-session';
import FacebookAuthenticator from 'my-app-ember/lib/facebook-authenticator';
export default {
name: 'authentication',
before: 'simple-auth',
initialize: function(container) {
container.register('session:my-app-session', MyAppSession);
container.register('simple-auth-authenticator:facebook', FacebookAuthenticator);
window.ENV = window.ENV || {};
window.ENV['simple-auth'] = {
session: 'session:my-app-session',
authorizer: 'simple-auth-authorizer:oauth2-bearer',
routeAfterAuthentication: 'moments'
};
window.ENV['simple-auth-oauth2'] = {
serverTokenEndpoint: MyAppEmberENV.API_NAMESPACE + '/oauth/token'
};
}
};
afterModel フックでセッションに設定される currentUser オブジェクトに依存していて、アップグレード後に壊れた場所の例を次に示します。
export default Ember.Route.extend({
model: function() {
return this.store.find('moment');
},
afterModel: function() {
if (!this.get('session.currentUser.isReturningUser')) {
this.transitionTo('settings');
}
}
});