ソースを参照

feat: vUE_APP_BACKEND_CLIENT

read authorization from the specified client(keycloak.resourceAccess[client].roles)
Casper Dai 3 年 前
コミット
e5324586fb
6 ファイル変更29 行追加24 行削除
  1. 3 0
      .env
  2. 3 3
      .env.development
  3. 7 2
      mock/proxy.js
  4. 13 13
      src/constant.js
  5. 0 1
      src/layout/components/Sidebar/index.vue
  6. 3 5
      src/store/modules/user.js

+ 3 - 0
.env

@@ -9,6 +9,9 @@ __SENSOR_ELK__ = 'disabled'
 # gateway
 VUE_APP_GATEWAY = ''
 
+# backend client
+VUE_APP_BACKEND_CLIENT = 'backend-api'
+
 # base api
 VUE_APP_BASE_API = '/prod-api'
 

+ 3 - 3
.env.development

@@ -1,8 +1,8 @@
 #gateway
 # 84服务器
-VUE_APP_GATEWAY = 'isoc.artaplay.com:8443'
+# VUE_APP_GATEWAY = 'isoc.artaplay.com:8443'
 # 71服务器
-# VUE_APP_GATEWAY = 'isoc.artaplay.com:7443'
+VUE_APP_GATEWAY = 'isoc.artaplay.com:7443'
 # aliyun
 # VUE_APP_GATEWAY = 'msr.idms.top'
 # 徐州
@@ -21,7 +21,7 @@ VUE_APP_THUMBNAIL = '/dev-api/api/imageproxy'
 # 84和71服务器
 VUE_APP_KEYCLOAK_OPTIONS_URL = 'https://isoc.artaplay.com:8443/auth'
 # 84服务器
-VUE_APP_KEYCLOAK_OPTIONS_REALM = 'smsb'
+# VUE_APP_KEYCLOAK_OPTIONS_REALM = 'smsb'
 # aliyun
 # VUE_APP_KEYCLOAK_OPTIONS_URL = 'https://msr.idms.top/auth'
 # 徐州

+ 7 - 2
mock/proxy.js

@@ -2,11 +2,14 @@ const proxy = require('express-http-proxy')
 
 const use = true
 
+// const gate = '10.180.88.84:8093'
+// const gate = '10.180.88.71:6443'
+const gate = process.env.VUE_APP_GATEWAY
 const base_url = process.env.VUE_APP_BASE_API
 const minioKey = process.env.VUE_APP_MINIO.replace(base_url, '')
 const thumbnailKey = process.env.VUE_APP_THUMBNAIL.replace(base_url, '')
 
-const gate = 'http://10.180.88.84:8093'
+const isHttps = !/^[0~9.:]+$/.test(gate)
 
 module.exports = {
   register (router) {
@@ -21,6 +24,7 @@ module.exports = {
 
 function createProxy (to, replace) {
   return proxy(to, {
+    https: isHttps,
     parseReqBody: false,
     proxyReqPathResolver (req) {
       const url = replace ? `${replace}${req.url}` : req.url
@@ -32,9 +36,10 @@ function createProxy (to, replace) {
 
 function createThumbnailProxy (to) {
   return proxy(to, {
+    https: isHttps,
     parseReqBody: false,
     proxyReqPathResolver (req) {
-      const url = `${thumbnailKey}${req.url.replace(new RegExp(`http.*${minioKey}`), `${gate}${minioKey}`)}`
+      const url = `${thumbnailKey}${req.url.replace(new RegExp(`http.*${minioKey}`), `http${isHttps ? 's' : ''}://${gate}${minioKey}`)}`
       console.log(`thumbnail ${url} to ${to}`)
       return url
     }

+ 13 - 13
src/constant.js

@@ -35,19 +35,19 @@ export const Access = {
   VIEW_LOGS: 'frontend:view-logs',
   VIEW_UPGRADE: 'frontend:view-upgrade',
 
-  MANAGE_PROFILE: 'backend:manage-profile',
-  MANAGE_PRODUCTS: 'backend:manage-products',
-  MANAGE_DEVICES: 'backend:manage-devices',
-  MANAGE_DEVICE: 'backend:manage-device',
-  MANAGE_GROUPS: 'backend:manage-groups',
-  MANAGE_ASSETS: 'backend:manage-assets',
-  MANAGE_CALENDAR: 'backend:manage-calendar',
-  MANAGE_UPGRADE: 'backend:manage-upgrade',
-
-  PUBLISH_CALENDAR: 'backend:publish-calendar',
-  REVIEW: 'backend:review',
-
-  DELETE_FORCE: 'backend-api:delete-force'
+  MANAGE_PROFILE: 'manage-profile',
+  MANAGE_PRODUCTS: 'manage-products',
+  MANAGE_DEVICES: 'manage-devices',
+  MANAGE_DEVICE: 'manage-device',
+  MANAGE_GROUPS: 'manage-groups',
+  MANAGE_ASSETS: 'manage-assets',
+  MANAGE_CALENDAR: 'manage-calendar',
+  MANAGE_UPGRADE: 'manage-upgrade',
+  // features
+  PUBLISH_CALENDAR: 'publish-calendar',
+  REVIEW: 'review',
+  // flags
+  DELETE_FORCE: 'delete-force'
 }
 
 export const RoleAccess = {

+ 0 - 1
src/layout/components/Sidebar/index.vue

@@ -72,7 +72,6 @@ export default {
   computed: {
     ...mapGetters(['permissionRoutes']),
     routers () {
-      console.log(filterRoutes(this.permissionRoutes), this.permissionRoutes)
       // 暂时只考虑两层
       return filterRoutes(this.permissionRoutes)
     },

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

@@ -47,11 +47,9 @@ function parseAccess (realmAccess, resourceAccess) {
       accessSet.add(access)
     })
   })
-  if (resourceAccess) {
-    Object.keys(resourceAccess).forEach(client => {
-      resourceAccess[client].roles.forEach(role => {
-        accessSet.add(`${client}:${role}`)
-      })
+  if (resourceAccess?.[process.env.VUE_APP_BACKEND_CLIENT]) {
+    resourceAccess[process.env.VUE_APP_BACKEND_CLIENT].roles.forEach(role => {
+      accessSet.add(role)
     })
   }
   return { roleSet, accessSet }