zhuth 7 years ago
parent
commit
06e4111312

+ 5 - 2
frontend/saas-web/app/util/BaseUtil.js

@@ -202,10 +202,13 @@ Ext.define('saas.util.BaseUtil', {
         },
 
         showLoginWin: function() {
-            var win = Ext.getCmp('relogin');
+            var main = Ext.getCmp('rootView'),
+            win = Ext.getCmp('relogin');
 
             if(!win) {
-                win = Ext.create('saas.view.auth.ReLogin');
+                win = main.add({
+                    xtype: 'relogin'
+                });
             }
 
             win.show();

+ 26 - 0
frontend/saas-web/app/view/auth/ReLoginController.js

@@ -61,8 +61,34 @@ Ext.define('saas.view.auth.ReLoginController', {
             }
             me.successReLogin();
         })
+        .then(function() {
+            let account = viewModel.get('account'),
+            companyId = account.companyId;
+            return saas.util.BaseUtil.request({
+                url: '/api/auth/switch/company',
+                params: {
+                    companyId: companyId
+                },
+                method: 'GET'
+            }).then(function(res) {
+                if (res.success) {
+                    var newSession = saas.model.Session.loadData(res.data);
+                    newSession.set('account', account);
+                    // 服务端与本地存在时间差
+                    newSession.set('span', newSession.get('timestamp') - new Date().getTime());
+                    if (!newSession.isValid()) {
+                        throw new Error('切换失败,无效身份令牌');
+                    } else {
+                        return newSession;
+                    }
+                } else {
+                    Ext.log.error('request failure with code: ', res.code, ', message: ', res.message);
+                }
+            });
+        })
         .catch(function (error) {
             view.isMasked() && view.unmask();
+            console.error(error);
             saas.util.BaseUtil.showErrorToast('登录失败: ' + error.message);
             me.failureReLogin();
         });

+ 2 - 0
frontend/saas-web/app/view/viewport/Viewport.js

@@ -4,6 +4,8 @@ Ext.define('saas.view.viewport.Viewport', {
     controller: 'viewport',
     viewModel: 'viewport',
 
+    id: 'rootView',
+
     layout: {
         type: 'card',
         anchor: '100%'