framework/js/lib/session.js
Toby Zerner 99876e9e36 Initial refactor of client actions, data preloading, SEO
An initial stab at flarum/core#126. Still WIP. Preliminary
implementation of flarum/core#128 and flarum/core#13.
2015-07-07 15:29:21 +09:30

42 lines
1.1 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.forum.attribute('baseUrl')+'/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.forum.attribute('baseUrl')+'/logout?token='+this.token();
}
authorize(xhr) {
xhr.setRequestHeader('Authorization', 'Token '+this.token());
}
}