framework/js/lib/session.js
2015-05-04 10:30:38 +09:30

42 lines
1.0 KiB
JavaScript

import mixin from 'flarum/utils/mixin';
import evented from 'flarum/utils/evented';
export default class Session extends mixin(class {}, evented) {
constructor() {
super();
this.user = m.prop();
this.token = m.prop();
}
login(identification, password) {
var deferred = m.deferred();
var self = this;
m.request({
method: 'POST',
url: app.config['base_url']+'/login',
data: {identification, password},
background: true
}).then(function(response) {
self.token(response.token);
m.startComputation();
app.store.find('users', response.userId).then(function(user) {
self.user(user);
deferred.resolve(user);
self.trigger('loggedIn', user);
m.endComputation();
});
}, function(response) {
deferred.reject(response);
});
return deferred.promise;
}
logout() {
window.location = app.config['base_url']+'/logout';
}
authorize(xhr) {
xhr.setRequestHeader('Authorization', 'Token '+this.token());
}
}