1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- Ext.define('saas.model.Session', {
- extend: 'Ext.data.Model',
- fields: [
- { name: 'token', type: 'string' },
- { name: 'expire', type: 'number' },
- { name: 'timestamp', type: 'number' },
- { name: 'span', type: 'number' },
- { name: 'account' }
- ],
- statics: {
- login: function(username, password) {
- return new Ext.Promise(function (resolve, reject) {
- Ext.Ajax.request({
- url: '/api/operation/auth/authorize',
- params: {
- username: username,
- password: password
- },
- method: 'POST',
- success: function (response) {
- var res = Ext.decode(response.responseText);
- if (res.success) {
- var session = saas.model.Session.loadData(res.data.token),
- account = res.data.account, companyId = res.data.companyId;
- account.companyId = companyId;
- session.set('account', account);
- // 服务端与本地存在时间差
- session.set('span', session.get('timestamp') - new Date().getTime());
- if (!session.isValid()) {
- reject({
- message: '登录失败,无效身份令牌'
- });
- } else {
- resolve(session);
- }
- } else {
- Ext.log.error('request failure with code: ', res.code, ', message: ', res.message);
- reject(res);
- }
- },
- failure: function (response) {
- Ext.log.error('server-side failure with status code: ', response.status);
- reject(response);
- }
- });
- });
- }
- },
- isValid: function() {
- return !Ext.isEmpty(this.get('token')) && this.get('token').length > 128
- && this.get('timestamp') + this.get('expire') * 1000 > new Date().getTime() + this.get('span');
- },
-
- logout: function() {
- return new Ext.Promise(function (resolve, reject) {
- resolve({});
- });
- }
- });
|