2015-09-25 1 views
0

Я использую ember-simple-auth-devise.Как перезапустить сеанс для ember-simple-auth-devise при изменении имени пользователя

Когда пользователь входит в систему, электронная почта и токен пользователя добавляются в заголовки каждого запроса.

Когда пользователь меняет свой адрес электронной почты, я могу обновить его, но это не распространяется и на заголовок.

Каков наилучший способ инициировать обновление электронной почты сеанса и электронной почты заголовка?

ответ

0

Вот что я сделал в конце:

приложение/сессий/custom.js

import Ember from 'ember'; 
import DS from 'ember-data'; 
import Session from 'simple-auth/session'; 

export default Session.extend({ 
    currentUser: function() { 
    var userId = this.get('secure.userId'); 

    if (!Ember.isEmpty(userId)) { 
     return DS.PromiseObject.create({ 
     promise: this.container.lookup('store:main').find('user', userId) 
     }); 
    } 
    }.property('secure.userId'), 

    // Update the session email when the user successfully changes their email. 
    updateEmail: Ember.observer('currentUser.email', function() { 
    var currentUserEmail = this.get('currentUser.email'), 
     sessionEmail = this.get('secure.email'); 

    if(currentUserEmail && !this.get('currentUser.isDirty') && sessionEmail !== currentUserEmail) { 
     this.set('secure.email', currentUserEmail); 
     this.set('email', currentUserEmail); 
    } 
    }), 
}); 

Кажется, что UpdateStore на сессии не будет вызвана, когда вы установите «secure.email» но он вызван, когда вы устанавливаете «электронную почту», однако просто установить «email» недостаточно, потому что updateStore использует «secure.email» для сохранения данных (токен &).