Kaynağa Gözat

修复admin权限控制

klzhangweiya 2 hafta önce
ebeveyn
işleme
356cbab94a

+ 3 - 3
SERVER/ChickenFarmV3/vb-admin/src/main/resources/application-dev.yml

@@ -37,9 +37,9 @@ spring:
         #          username:
         #          password:
         # 需要和sharding.yaml--->databaseName的值要一致,不然无法识别数据源
-        sharding:
-          driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver
-          url: jdbc:shardingsphere:classpath:sharding-dev.yaml
+#        sharding:
+#          driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver
+#          url: jdbc:shardingsphere:classpath:sharding-dev.yaml
       hikari:
         # 最大连接池数量
         maxPoolSize: 20

+ 3 - 3
SERVER/ChickenFarmV3/vb-admin/src/main/resources/application-prod.yml

@@ -27,9 +27,9 @@ spring:
           username: root
           password: 123456
         # 需要和sharding-prod.yaml--->databaseName的值要一致,不然无法识别数据源
-        sharding:
-          driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver
-          url: jdbc:shardingsphere:classpath:sharding-prod.yaml
+#        sharding:
+#          driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver
+#          url: jdbc:shardingsphere:classpath:sharding-prod.yaml
       hikari:
         # 最大连接池数量
         maxPoolSize: 20

+ 17 - 4
SERVER/ChickenFarmV3/vb-common/vb-common-satoken/src/main/java/cn/vber/common/satoken/core/service/SaPermissionImpl.java

@@ -1,6 +1,7 @@
 package cn.vber.common.satoken.core.service;
 
 import cn.dev33.satoken.stp.StpInterface;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.vber.common.core.domain.model.LoginUser;
 import cn.vber.common.core.enums.UserType;
@@ -26,7 +27,10 @@ public class SaPermissionImpl implements StpInterface {
     @Override
     public List<String> getPermissionList(Object loginId, String loginType) {
         LoginUser loginUser = LoginHelper.getLoginUser();
-        if (ObjectUtil.isNull(loginUser) || !loginUser.getLoginId().equals(loginId)) {
+        if (ObjectUtil.isNull(loginUser)) {
+            return new ArrayList<>();
+        }
+        if (!loginUser.getLoginId().equals(loginId)) {
             PermissionService permissionService = getPermissionService();
             if (ObjectUtil.isNotNull(permissionService)) {
                 List<String> list = StringUtils.splitList(loginId.toString(), ":");
@@ -35,12 +39,21 @@ public class SaPermissionImpl implements StpInterface {
                 throw new ServiceException("PermissionService 实现类不存在");
             }
         }
+        // 判断是否为超级管理员
+        if (LoginHelper.isSuperAdmin(loginUser.getUserId())) {
+            // 返回通配符权限,代表拥有所有权限
+            return List.of("*");
+        }
         UserType userType = UserType.getUserType(loginUser.getUserType());
         if (userType == UserType.APP_USER) {
-            // 其他端 自行根据业务编写
+            // 其用户类型 自行根据业务编写
+        }
+        if (CollUtil.isNotEmpty(loginUser.getMenuPermission())) {
+            // SYS_USER 默认返回权限
+            return new ArrayList<>(loginUser.getMenuPermission());
+        } else {
+            return new ArrayList<>();
         }
-        // SYS_USER 默认返回权限
-        return new ArrayList<>(loginUser.getMenuPermission());
     }
 
     /**

+ 17 - 7
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/controller/CoopBatchReportController.java

@@ -64,13 +64,13 @@ public class CoopBatchReportController extends BaseController {
     /**
      * 导出报表信息列表
      */
-    @SaCheckPermission("breeding:coopBatchReport:export")
-    @Log(title = "报表信息", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(CoopBatchReportBo bo, HttpServletResponse response) {
-        List<CoopBatchReportVo> list = coopBatchReportService.queryList(bo);
-        ExcelUtil.exportExcel(list, "报表信息", CoopBatchReportVo.class, response);
-    }
+//    @SaCheckPermission("breeding:coopBatchReport:export")
+//    @Log(title = "报表信息", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    public void export(CoopBatchReportBo bo, HttpServletResponse response) {
+//        List<CoopBatchReportVo> list = coopBatchReportService.queryList(bo);
+//        ExcelUtil.exportExcel(list, "报表信息", CoopBatchReportVo.class, response);
+//    }
 
     /**
      * 获取报表信息详细信息
@@ -123,6 +123,16 @@ public class CoopBatchReportController extends BaseController {
         return R.ok(coopBatchReportDetailService.queryReport(bo));
     }
 
+    //@SaCheckPermission("breeding:coopBatchReport:export")
+    @Log(title = "报表信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(QueryStaBo bo, HttpServletResponse response) {
+//        CoopBatchReportResultVo coopBatchReportResultVo = coopBatchReportDetailService.queryReport(bo);
+//
+//        ExcelUtil.exportExcel(list, "报表信息", CoopBatchReportVo.class, response);
+
+    }
+
     //@SaCheckPermission("breeding:coopBatchReport:add")
     @Log(title = "报表信息", businessType = BusinessType.INSERT)
     @PostMapping("/create")

+ 8 - 3
UI/VB.VUE/src/core/services/PermissionService.ts

@@ -13,9 +13,12 @@ export function checkPermission(value: string | string[]) {
 		value = [value]
 	}
 	if (value && value instanceof Array && value.length > 0) {
+		if (appStore.authStore.isSuperAdmin()) {
+			return true
+		}
 		const permissions = appStore.authStore.user.permissions
 		const permissionDatas = value
-		const all_permission = "*:*:*"
+		const all_permission = "*"
 		const hasPermission = permissions.some((permission) => {
 			return all_permission === permission || permissionDatas.includes(permission)
 		})
@@ -36,16 +39,18 @@ export function checkPermission(value: string | string[]) {
  * @returns {Boolean}
  */
 export function checkRole(value: string | string[]) {
+	if (appStore.authStore.isSuperAdmin()) {
+		return true
+	}
 	if (typeof value == "string") {
 		value = [value]
 	}
 	if (value && value instanceof Array && value.length > 0) {
 		const roles = appStore.authStore.user.roles
 		const permissionRoles = value
-		const super_admin = "admin"
 
 		const hasRole = roles.some((role) => {
-			return super_admin === role || permissionRoles.includes(role)
+			return permissionRoles.includes(role)
 		})
 
 		if (!hasRole) {

+ 5 - 1
UI/VB.VUE/src/stores/_auth.ts

@@ -9,6 +9,9 @@ export const useAuthStore = defineStore("auth", () => {
 	const errors = ref({})
 	const user = ref<User>({} as User)
 	const isAuthenticated = ref(!!JwtService.getToken())
+	function isSuperAdmin() {
+		return user.value.userName === "admin" || user.value.roles.includes("super_admin")
+	}
 
 	const setToken = (authToken: string) => {
 		isAuthenticated.value = true
@@ -127,6 +130,7 @@ export const useAuthStore = defineStore("auth", () => {
 		callback,
 		logout,
 		getInfo,
-		changeAvatar
+		changeAvatar,
+		isSuperAdmin
 	}
 })