| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- Ext.define('saas.model.Session', {
- extend: 'Ext.data.Model',
- fields: [
- { name: 'token', type: 'string' },
- { name: 'expires', type: 'number' },
- { name: 'timestamp', type: 'number' },
- { name: 'account', reference: 'Account' }
- ],
- statics: {
- login: function(username, password) {
- return new Ext.Promise(function (resolve, reject) {
- Server.auth.login({
- username: username,
- password: password
- }, function(result, response, success) {
- if (!success) {
- return reject(result.message);
- }
- var session = saas.model.Session.loadData(result);
- if (!session.isValid()) {
- return reject({ errors: {
- username: 'Login failed: invalid session'
- }});
- }
- resolve(session);
- });
- });
- }
- },
- isValid: function() {
- return !Ext.isEmpty(this.get('token'))
- && this.get('timestamp') + this.get('expires') * 1000 > new Date().getTime();
- },
- logout: function() {
- return new Ext.Promise(function (resolve, reject) {
- Server.auth.logout({}, resolve);
- });
- }
- });
|