Как повторно авторизовать сеанс для ember-simple-auth-devise при изменении электронной почты пользователя

Я использую ember-simple-auth-devise.

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

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

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


person Shagymoe    schedule 25.09.2015    source источник


Ответы (1)


Вот что я сделал в итоге:

приложение/сеансы/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», однако просто установить «email» недостаточно, поскольку updateStore использует «secure.email». для сохранения данных (электронная почта и токен).

person Shagymoe    schedule 26.09.2015