Browse Source

fix[litemall-admin-api]: 权限值列表修复

Junling Bu 7 years ago
parent
commit
d95d42cc5f

+ 10 - 6
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java

@@ -13,15 +13,12 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class PermissionUtil {
 
-    public static List<PermVo> listPermissions(ApplicationContext context, String basicPackage) {
+    public static List<PermVo> listPermVo(List<Permission> permissions) {
         List<PermVo> root = new ArrayList<>();
-        List<Permission> permissions = findPermissions(context, basicPackage);
         for (Permission permission : permissions) {
             RequiresPermissions requiresPermissions = permission.getRequiresPermissions();
             RequiresPermissionsDesc requiresPermissionsDesc = permission.getRequiresPermissionsDesc();
@@ -88,7 +85,7 @@ public class PermissionUtil {
         return root;
     }
 
-    public static List<Permission> findPermissions(ApplicationContext context, String basicPackage) {
+    public static List<Permission> listPermission(ApplicationContext context, String basicPackage) {
         Map<String, Object> map = context.getBeansWithAnnotation(Controller.class);
         List<Permission> permissions = new ArrayList<>();
         for (Map.Entry<String, Object> entry : map.entrySet()) {
@@ -143,4 +140,11 @@ public class PermissionUtil {
         return permissions;
     }
 
+    public static Set<String> listPermissionString(List<Permission> permissions) {
+        Set<String> permissionsString = new HashSet<>();
+        for(Permission permission : permissions){
+            permissionsString.add(permission.getRequiresPermissions().value()[0]);
+        }
+        return permissionsString;
+    }
 }

+ 1 - 1
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java

@@ -50,7 +50,7 @@ public class AdminCouponController {
         return ResponseUtil.ok(data);
     }
 
-    @RequiresPermissions("admin:coupon:list")
+    @RequiresPermissions("admin:coupon:listuser")
     @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="查询用户")
     @GetMapping("/listuser")
     public Object listuser(Integer userId, Integer couponId, Short status,

+ 10 - 14
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java

@@ -8,6 +8,7 @@ import org.apache.shiro.subject.Subject;
 import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;
 import org.linlinjava.litemall.admin.util.AdminResponseCode;
 import org.linlinjava.litemall.admin.util.PermVo;
+import org.linlinjava.litemall.admin.util.Permission;
 import org.linlinjava.litemall.admin.util.PermissionUtil;
 import org.linlinjava.litemall.core.util.JacksonUtil;
 import org.linlinjava.litemall.core.util.ResponseUtil;
@@ -138,30 +139,25 @@ public class AdminRoleController {
     @Autowired
     private ApplicationContext context;
     private List<PermVo> systemPermissions = null;
+    private Set<String> systemPermissionsString = null;
+
     private List<PermVo> getSystemPermissions(){
         final String basicPackage = "org.linlinjava.litemall.admin";
         if(systemPermissions == null){
-            systemPermissions = PermissionUtil.listPermissions(context, basicPackage);
+            List<Permission> permissions = PermissionUtil.listPermission(context, basicPackage);
+            systemPermissions = PermissionUtil.listPermVo(permissions);
+            systemPermissionsString = PermissionUtil.listPermissionString(permissions);
         }
         return systemPermissions;
     }
 
-    private Set<String> getSystemPermissionsString(){
-        getSystemPermissions();
-
-        Set<String> permissions = new HashSet<String>();
-        for(PermVo permVo : systemPermissions){
-            permissions.add(permVo.getId());
-        }
-        return permissions;
-    }
-
     private Set<String> getAssignedPermissions(Integer roleId){
         // 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。
         // 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。
         Set<String> assignedPermissions = null;
         if(permissionService.checkSuperPermission(roleId)){
-            assignedPermissions = getSystemPermissionsString();
+            getSystemPermissions();
+            assignedPermissions = systemPermissionsString;
         }
         else{
             assignedPermissions = permissionService.queryByRoleId(roleId);
@@ -175,7 +171,7 @@ public class AdminRoleController {
      *
      * @return 系统所有权限列表和管理员已分配权限
      */
-    @RequiresPermissions("admin:role:permission")
+    @RequiresPermissions("admin:role:permission:get")
     @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限详情")
     @GetMapping("/permissions")
     public Object getPermissions(Integer roleId) {
@@ -195,7 +191,7 @@ public class AdminRoleController {
      * @param body
      * @return
      */
-    @RequiresPermissions("admin:role:permission")
+    @RequiresPermissions("admin:role:permission:update")
     @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限变更")
     @PostMapping("/permissions")
     public Object updatePermissions(@RequestBody String body) {

+ 3 - 1
litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java

@@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.linlinjava.litemall.admin.util.PermVo;
+import org.linlinjava.litemall.admin.util.Permission;
 import org.linlinjava.litemall.admin.util.PermissionUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -23,7 +24,8 @@ public class PermissionTest {
     @Test
     public void test() {
         final String basicPackage = "org.linlinjava.litemall.admin";
-        List<PermVo> permVoList = PermissionUtil.listPermissions(context, basicPackage);
+        List<Permission> permissionList = PermissionUtil.listPermission(context, basicPackage);
+        List<PermVo> permVoList = PermissionUtil.listPermVo(permissionList);
         permVoList.stream().forEach(System.out::println);
     }
 }