Преглед на файлове

token设置方式调整

yingp преди 7 години
родител
ревизия
3bf4097a93

+ 15 - 0
frontend/saas-portal-web/static/set-token.html

@@ -0,0 +1,15 @@
+<script>
+    // iframe接收消息
+	window.addEventListener('message', function(e) {
+		if (e.source != window.parent) {
+            return;
+        }
+        var storeKey = 'app-state-session';
+        if (e.data) {
+            localStorage.setItem(storeKey, e.data);
+        } else {
+            localStorage.removeItem(storeKey);
+        }
+        window.parent.postMessage("success", "*");
+    });
+</script>

+ 15 - 1
frontend/saas-portal-web/yarn.lock

@@ -2901,7 +2901,7 @@ glob@7.0.5:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
   version "7.1.3"
   resolved "http://registry.npm.taobao.org/glob/download/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
   dependencies:
@@ -6941,6 +6941,12 @@ uuid@^3.0.1, uuid@^3.3.2:
   version "3.3.2"
   resolved "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
 
+v-distpicker@^1.0.20:
+  version "1.0.21"
+  resolved "http://registry.npm.taobao.org/v-distpicker/download/v-distpicker-1.0.21.tgz#50356c68220586ada9131fe1160fabf0cf805294"
+  dependencies:
+    vue "^2.5.17"
+
 validate-npm-package-license@^3.0.1:
   version "3.0.4"
   resolved "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -7029,10 +7035,18 @@ vue-template-es2015-compiler@^1.5.3, vue-template-es2015-compiler@^1.6.0:
   version "1.6.0"
   resolved "http://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
 
+vue@^2.5.17:
+  version "2.5.21"
+  resolved "http://registry.npm.taobao.org/vue/download/vue-2.5.21.tgz#3d33dcd03bb813912ce894a8303ab553699c4a85"
+
 vue@^2.5.2:
   version "2.5.17"
   resolved "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz#0f8789ad718be68ca1872629832ed533589c6ada"
 
+vuex@^3.0.1:
+  version "3.0.1"
+  resolved "http://registry.npm.taobao.org/vuex/download/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2"
+
 w3c-hr-time@^1.0.1:
   version "1.0.1"
   resolved "http://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"

+ 25 - 9
frontend/saas-web/app/view/viewport/ViewportController.js

@@ -23,8 +23,11 @@ Ext.define('saas.view.viewport.ViewportController', {
     },
 
     mainviewboxready: function() {
-        //初始化accountPage地址
-        document.getElementsByName('accountPage')[0].setAttribute('src',getTokenPage());
+        //初始化setSessionPage地址
+        Ext.DomHelper.insertHtml('beforeEnd', document.body, 
+            '<iframe name="setSessionPage" hidden src="' + 
+            Ext.manifest.server.accountCenter + '/static/set-token.html"></iframe>');
+
         if(!Ext.isChrome && !Ext.isFirefox) {
             saas.util.BaseUtil.showConfirm('温馨提示', '为了更好地呈现页面效果,推荐使用Chrome浏览器或火狐浏览器');
         }
@@ -77,7 +80,7 @@ Ext.define('saas.view.viewport.ViewportController', {
             var hasValidCookie = Ext.util.Cookies.get('uid')?me.getAccountCookie():false;
             if(!hasValidCookie){
                 if(window.location.host.indexOf('.usoftchina.com')>-1){
-                    window.location.href = Ext.manifest.server.accountCenter
+                    me.redirectPortal();
                 }else{
                     me.redirectTo('login', {replace: true});
                 }
@@ -122,8 +125,8 @@ Ext.define('saas.view.viewport.ViewportController', {
                         me.saveSession(session);
                     }
                     hasValidCookie = true
-                }else{
-                    window.location.href = Ext.manifest.server.accountCenter
+                } else{
+                    me.redirectPortal();
                 }
             },
             failure: function(response, opts) {
@@ -202,10 +205,8 @@ Ext.define('saas.view.viewport.ViewportController', {
             me.originalRoute = Ext.History.getToken();
             me.terminateSession();
             view.unmask();
-            //跳转到账户中心
-            const frame = window.frames[window.frames.length - 1];
-            frame.postMessage('removeToken','*');
-            window.location.href = getAccountPage();
+            me.syncSessionToPortal();
+            me.redirectPortal();
             //me.redirectTo('login', {replace: true});
         });
     },
@@ -221,6 +222,7 @@ Ext.define('saas.view.viewport.ViewportController', {
                 .then(function(newSession) {
                     newSession.get('account').companyId = companyId;
                     me.initiateSession(newSession);
+                    me.syncSessionToPortal(newSession);
                 })
                 .catch(function(error) {
                     saas.util.BaseUtil.showErrorToast(error.message);
@@ -230,6 +232,20 @@ Ext.define('saas.view.viewport.ViewportController', {
                     window.location.reload();
                 }); 
         }        
+    },
+    /**
+     * 同步session到门户
+     * @param {} session 
+     */
+    syncSessionToPortal: function(session) {
+        const frame = window.frames[window.frames.length - 1];
+        frame.postMessage(session ? JSON.stringify(session) : '', '*');
+    },
+    /**
+     * 跳转门户
+     */
+    redirectPortal: function() {
+        window.location.href = Ext.manifest.server.accountCenter;
     }
 });
 

+ 0 - 9
frontend/saas-web/index.html

@@ -12,15 +12,6 @@
 
     <!-- The line below must be kept intact for Sencha Cmd to build your application -->
     <script id="microloader" data-app="a20e1670-7932-41f6-8e9c-55b77cba3f26" type="text/javascript" src="bootstrap.js"></script>
-    <script>
-        function getTokenPage(){
-            return Ext.manifest.server.accountCenter + "/remove-token.html"
-        }
-        function getAccountPage(){
-            return Ext.manifest.server.accountCenter
-        }
-    </script>
 </head>
-<iframe name="accountPage" hidden></iframe>
 <body class="launching"></body>
 </html>