2015-11-08 6 views
1

Je souhaite effectuer du code lorsque la session ember-simple-auth est authentifiée.Ember: ESA: sessionAuthenticated ne s'appelle pas

routes/application.js

import Ember from 'ember'; 
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin'; 

export default Ember.Route.extend(ApplicationRouteMixin, { 
    currentUser: Ember.inject.service('current-user'), 
    ajax: Ember.inject.service('ajax'), 

    actions: { 
     authSuccess: function() { 
      var self = this; 
      self.get('ajax').request({ 
       url: "http://prod-drunkedguru.rhcloud.com/rest/users/me", 
       method: "GET" 
      }, function(response) { 
       Ember.$('#loginWindow').modal('hide'); 
       self.get('currentUser').setUser(response); 
      }, function(xhr, status, error) { 
       if (status === "Incorrect credentials") { 
        self.set('hasError', true); 
       } 
      }); 

     } 
    }, 

    sessionAuthenticated: function() { 
     console.log("auth success!"); 
    }, 

    sessionInvalidated: function() { 
     console.log("401"); 
    } 
}); 

autheticators/digest.js

import Base from 'ember-simple-auth/authenticators/base'; 
import Ember from 'ember'; 
import CryptoJS from 'npm:crypto-js'; 

export default Base.extend({ 

    restore: function(data) { 
     if (data.email && data.password) { 
      return new Ember.RSVP.Promise(function(resolve, reject) { 
       resolve({email: data.email, password: data.password, digests: {}}); 
      }); 
     } 
    }, 

    authenticate: function(email, password) { 
     var self = this; 
     return new Ember.RSVP.Promise(function(resolve, reject) { 
      Ember.run(function() { 
       resolve({email: email, password: password, digests: {}}); 
      }); 
     }); 
    }, 

    invalidate: function(data) { 
     // 
    } 
}); 

restore() fonction appelée avec succès au démarrage de l'application et resolve() en elle appelle aussi. Je m'attends à "succès d'authentification!" chaîne dans la console, mais ne rien obtenir. Est-ce un bug ou une erreur dans mon code? Merci.

MISE À JOUR:

Après enquête, je compris que sessionAuthenticated a été appelé, mais une seule fois. Et il n'est pas appelé lorsque la session est restaurée à partir de localStorage avec la méthode restore. Est-ce que ce comportement est attendu? Pour moi, il ressemble à un bug ...

Répondre

0

sessionAuthenticated et sessionInvalidated sont des actions. Il suffit de les déplacer dans votre hachage actions et vous devriez obtenir vos relevés de connexion.

+0

Thx. Je vais essayer. Mais j'ai pensé que ce sont des méthodes (comme je l'ai appris sur http://ember-simple-auth.com/api/classes/ApplicationRouteMixin.html). – Crabar

+0

Ah, c'est un changement de 0.8.x à 1.x. Désolé de boue les eaux. – justinaray