Kaynağa Gözat

feat: support license

Casper Dai 3 yıl önce
ebeveyn
işleme
fcae7ab7fc

+ 5 - 5
src/store/modules/user.js

@@ -1,5 +1,4 @@
 import Vue from 'vue'
-import { resetRouter } from '@/router'
 import { getTenantsByQuery } from '@/api/user'
 import {
   Role,
@@ -100,23 +99,24 @@ const actions = {
         }
       }
       commit('SET_ID', sub)
-      commit('SET_NAME', family_name && given_name ? `${family_name}${/[a-zA-z]/.test(family_name) ? ' ' : ''}${given_name}` : preferred_username)
+      commit('SET_NAME', family_name && given_name
+        ? /[a-zA-z]/.test(family_name)
+          ? `${given_name} ${family_name}`
+          : `${family_name}${given_name}`
+        : preferred_username)
       commit('SET_AVATAR', avatar)
       commit('SET_ROLES', roleSet)
       commit('SET_ACCESSES', accessSet)
     }
   },
-
   logout () {
     // 登出将跳转页面,所以不需其他操作
     Vue.prototype.$keycloak.logout()
   },
-
   clearToken ({ commit }) {
     commit('SET_TOKEN', '')
     commit('SET_TENANT_ID', '')
     Vue.prototype.$keycloak.refreshToken = null
-    resetRouter()
   }
 }
 

+ 63 - 24
src/utils/request.js

@@ -4,6 +4,7 @@ import {
   Message
 } from 'element-ui'
 import store from '@/store'
+import router from '@/router'
 
 const config = {
   baseURL: process.env.VUE_APP_BASE_API,
@@ -122,7 +123,7 @@ function responseInterceptor (response) {
   if (!response.config?.custom) {
     Message({
       type: 'error',
-      message: res.errMessage || '请求异常'
+      message: res.errMessage || '请求失败'
     })
   }
 
@@ -130,46 +131,84 @@ function responseInterceptor (response) {
 }
 
 function responseErrorInterceptor (error) {
-  if (!error) {
-    return Promise.reject({ isCancel: true })
+  const isCancel = !error || axios.isCancel(error)
+  if (isCancel) {
+    return Promise.reject({ isCancel })
   }
-  const isCancel = axios.isCancel(error)
+
   const { response, config } = error
   if (response) {
     const { status } = response
     if (status === 401) {
-      store.dispatch('user/clearToekn')
-      // to re-login
-      MessageBox.confirm(
-        '登录状态已过期,请重新登录',
-        '系统提示',
-        {
-          confirmButtonText: '重新登录',
-          center: true,
-          showClose: false,
-          showCancelButton: false,
-          closeOnClickModal: false
+      if (store.getters.token) {
+        try {
+          store.dispatch('user/clearToken')
+          MessageBox.close()
+        } finally {
+          MessageBox.confirm(
+            '登录状态已过期,请重新登录',
+            '系统提示',
+            {
+              type: 'warning',
+              confirmButtonText: '重新登录',
+              center: true,
+              showClose: false,
+              showCancelButton: false,
+              closeOnClickModal: false,
+              closeOnPressEscape: false,
+              closeOnHashChange: false
+            }
+          ).then(() => {
+            store.dispatch('user/logout')
+          })
         }
-      ).then(() => {
-        store.dispatch('user/logout')
-      })
-    } else if (status === 403) {
+      }
+      return Promise.reject({ isCancel: true })
+    }
+
+    if (status === 403) {
       Message({
         type: 'warning',
         message: '暂无相关权限,请联系管理员'
       })
-    } else if (!config?.custom) {
+      return Promise.reject({ isCancel: true })
+    }
+
+    if (status === 423) {
+      try {
+        store.dispatch('user/clearToken')
+        MessageBox.close()
+      } finally {
+        MessageBox.confirm(
+          '系统已锁定,请联系管理员',
+          '系统提示',
+          {
+            type: 'warning',
+            showClose: false,
+            showConfirmButton: false,
+            showCancelButton: false,
+            closeOnClickModal: false,
+            closeOnPressEscape: false,
+            closeOnHashChange: false
+          }
+        )
+        router.replace('/error')
+      }
+      return Promise.reject({ isCancel: true })
+    }
+
+    if (!config?.custom) {
       const { errMessage, errorMessage } = response.data
       Message({
         type: 'error',
-        message: errMessage || errorMessage || '请求异常'
+        message: errMessage || errorMessage || `请求异常[${status}]`
       })
     }
-    return Promise.reject({ isCancel, ...response.data })
+    return Promise.reject({ ...response.data })
   }
 
   let { message } = error
-  if (!config?.custom && !isCancel) {
+  if (!config?.custom) {
     if (message) {
       if (/timeout/.test(message)) {
         message = '请求超时'
@@ -182,5 +221,5 @@ function responseErrorInterceptor (error) {
       message
     })
   }
-  return Promise.reject({ isCancel, errCode: -1, errMessage: message })
+  return Promise.reject({ errCode: -1, errMessage: message })
 }

+ 1 - 1
src/views/realm/debug/index.vue

@@ -70,7 +70,7 @@
           :rows="6"
         />
         <span class="c-grid-form__label">加密:</span>
-        <div class="l-flex--row">
+        <div class="l-flex--row c-grid-form__option">
           <el-switch
             v-model="mqtt.encode"
             active-color="#13ce66"