fix[litemall-admin-api]: 权限值列表修复
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user