Session.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. Ext.define('saas.model.Session', {
  2. extend: 'Ext.data.Model',
  3. fields: [
  4. { name: 'token', type: 'string' },
  5. { name: 'expires', type: 'number' },
  6. { name: 'timestamp', type: 'number' },
  7. { name: 'account', reference: 'Account' }
  8. ],
  9. statics: {
  10. login: function(username, password) {
  11. return new Ext.Promise(function (resolve, reject) {
  12. Server.auth.login({
  13. username: username,
  14. password: password
  15. }, function(result, response, success) {
  16. if (!success) {
  17. return reject(result.message);
  18. }
  19. var session = saas.model.Session.loadData(result);
  20. if (!session.isValid()) {
  21. return reject({ errors: {
  22. username: 'Login failed: invalid session'
  23. }});
  24. }
  25. resolve(session);
  26. });
  27. });
  28. }
  29. },
  30. isValid: function() {
  31. return !Ext.isEmpty(this.get('token'))
  32. && this.get('timestamp') + this.get('expires') * 1000 > new Date().getTime();
  33. },
  34. logout: function() {
  35. return new Ext.Promise(function (resolve, reject) {
  36. Server.auth.logout({}, resolve);
  37. });
  38. }
  39. });