后端权限增加校验
This commit is contained in:
parent
7509811d5b
commit
095d742043
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.electromagnetic.industry.software.manage.aop;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
|
||||||
|
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
||||||
|
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
|
||||||
|
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||||
|
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
|
||||||
|
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
|
||||||
|
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Aspect
|
||||||
|
@Component
|
||||||
|
public class FilePermissionCheckAspect {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
PermissionService permissionService;
|
||||||
|
@Resource
|
||||||
|
EdFileInfoService edFileInfoService;
|
||||||
|
|
||||||
|
@Around("@annotation(requiredPermission)")
|
||||||
|
public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable{
|
||||||
|
|
||||||
|
// 获取方法参数
|
||||||
|
Object[] args = joinPoint.getArgs();
|
||||||
|
|
||||||
|
if (args.length > 0) {
|
||||||
|
FilePermission filePermission = requiredPermission.value();
|
||||||
|
String userId = UserThreadLocal.getUserId();
|
||||||
|
String id = "";
|
||||||
|
|
||||||
|
if (args[0] instanceof String) {
|
||||||
|
String childId = args[0].toString();
|
||||||
|
id = edFileInfoService.getCategoryId(childId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[0] instanceof UpdateFileInfoDTO) {
|
||||||
|
UpdateFileInfoDTO updateFileInfoDTO = (UpdateFileInfoDTO) args[0];
|
||||||
|
String childId = updateFileInfoDTO.getId();
|
||||||
|
id = edFileInfoService.getCategoryId(childId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String,Boolean> permissions = permissionService.getUserPermission(userId,id);
|
||||||
|
if (!permissions.get(filePermission.getCode()).equals(Boolean.TRUE)) {
|
||||||
|
throw new PermissionDeniedException("用户无权限执行此操作");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return joinPoint.proceed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
package com.electromagnetic.industry.software.manage.aop;
|
|
||||||
|
|
||||||
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
|
|
||||||
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
|
||||||
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
|
||||||
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
|
||||||
import org.aspectj.lang.annotation.Before;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Aspect
|
|
||||||
@Component
|
|
||||||
public class PermissionAspect {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
PermissionService permissionService;
|
|
||||||
|
|
||||||
@Before("@annotation(requiredPermission) && args(id)")
|
|
||||||
public void requirePermission(RequiredPermission requiredPermission, String id) {
|
|
||||||
|
|
||||||
FilePermission filePermission = requiredPermission.value();
|
|
||||||
String userId = UserThreadLocal.getUserId();
|
|
||||||
Map<String,Boolean> permissions = permissionService.getUserPermission(userId,id);
|
|
||||||
if (!permissions.get(filePermission.getCode()).equals(Boolean.TRUE)) {
|
|
||||||
throw new SecurityException("用户无权限执行此操作");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.electromagnetic.industry.software.manage.aop;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.annotations.RequiredRole;
|
||||||
|
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
|
||||||
|
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Aspect
|
||||||
|
public class RoleCheckAspect {
|
||||||
|
|
||||||
|
@Around("@annotation(requiredRole)")
|
||||||
|
public Object checkRole(ProceedingJoinPoint joinPoint, RequiredRole requiredRole) throws Throwable {
|
||||||
|
// 获取当前用户角色
|
||||||
|
String currentRole = UserThreadLocal.getAdminType();
|
||||||
|
|
||||||
|
// 检查角色
|
||||||
|
if (requiredRole.value().getValue().equals(currentRole)) {
|
||||||
|
return joinPoint.proceed(); // 用户角色匹配,执行方法
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果角色不匹配,抛出异常或返回无权限响应
|
||||||
|
throw new PermissionDeniedException("用户无权限执行此操作");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.electromagnetic.industry.software.manage.common;
|
package com.electromagnetic.industry.software.manage.common;
|
||||||
|
|
||||||
import com.electromagnetic.industry.software.common.exception.BizException;
|
import com.electromagnetic.industry.software.common.exception.BizException;
|
||||||
|
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
import java.nio.file.AccessDeniedException;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ControllerAdvice
|
@ControllerAdvice
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
@ -29,4 +32,12 @@ public class GlobalExceptionHandler {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return ElectromagneticResultUtil.fail("-1", e.getMsg());
|
return ElectromagneticResultUtil.fail("-1", e.getMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(PermissionDeniedException.class)
|
||||||
|
@ResponseStatus(HttpStatus.FORBIDDEN)
|
||||||
|
@ResponseBody
|
||||||
|
public ElectromagneticResult<?> accessDeniedError(PermissionDeniedException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
return ElectromagneticResultUtil.fail("-1", e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.electromagnetic.industry.software.manage.controller;
|
package com.electromagnetic.industry.software.manage.controller;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
|
||||||
|
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
|
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
|
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
|
||||||
|
|
@ -32,6 +34,7 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.createFolder(createFolderDTO);
|
return edFileInfoService.createFolder(createFolderDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.DELETE)
|
||||||
@RequestMapping("delete")
|
@RequestMapping("delete")
|
||||||
public ElectromagneticResult<?> delete(@RequestParam String id) {
|
public ElectromagneticResult<?> delete(@RequestParam String id) {
|
||||||
return edFileInfoService.delete(id);
|
return edFileInfoService.delete(id);
|
||||||
|
|
@ -42,6 +45,7 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
|
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.UPLOAD)
|
||||||
@RequestMapping("upload")
|
@RequestMapping("upload")
|
||||||
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
|
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
|
||||||
@RequestParam("file") MultipartFile file,
|
@RequestParam("file") MultipartFile file,
|
||||||
|
|
@ -49,16 +53,19 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.upload(parentId, file, strategy);
|
return edFileInfoService.upload(parentId, file, strategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.DOWNLOAD)
|
||||||
@RequestMapping("download")
|
@RequestMapping("download")
|
||||||
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
|
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
|
||||||
return edFileInfoService.download(id, response);
|
return edFileInfoService.download(id, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.EDIT)
|
||||||
@RequestMapping("updateFileInfo")
|
@RequestMapping("updateFileInfo")
|
||||||
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
|
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
|
||||||
return edFileInfoService.updateFileInfo(updateFileInfoDTO);
|
return edFileInfoService.updateFileInfo(updateFileInfoDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.MOVE)
|
||||||
@RequestMapping("moveFile")
|
@RequestMapping("moveFile")
|
||||||
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
|
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
|
||||||
@RequestParam("targetFolderId") String targetFolderId,
|
@RequestParam("targetFolderId") String targetFolderId,
|
||||||
|
|
@ -66,6 +73,7 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.moveFile(id, targetFolderId, strategy);
|
return edFileInfoService.moveFile(id, targetFolderId, strategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiredPermission(value = FilePermission.MOVE)
|
||||||
@RequestMapping("copyFile")
|
@RequestMapping("copyFile")
|
||||||
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
|
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
|
||||||
@RequestParam("targetFolderId") String targetFolderId,
|
@RequestParam("targetFolderId") String targetFolderId,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.electromagnetic.industry.software.manage.controller;
|
package com.electromagnetic.industry.software.manage.controller;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.annotations.RequiredRole;
|
||||||
|
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
|
||||||
import com.electromagnetic.industry.software.common.exception.BizException;
|
import com.electromagnetic.industry.software.common.exception.BizException;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
||||||
|
|
@ -19,6 +21,7 @@ public class RoleController {
|
||||||
private RoleService roleService;
|
private RoleService roleService;
|
||||||
|
|
||||||
@ApiOperation(value = "新建角色", notes = "")
|
@ApiOperation(value = "新建角色", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@RequestMapping(value = "/createRole", method = RequestMethod.POST)
|
@RequestMapping(value = "/createRole", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> createRole(@RequestBody RoleDTO roleDTO) {
|
public ElectromagneticResult<?> createRole(@RequestBody RoleDTO roleDTO) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -30,6 +33,7 @@ public class RoleController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "更新角色", notes = "")
|
@ApiOperation(value = "更新角色", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@RequestMapping(value = "/updateRole", method = RequestMethod.POST)
|
@RequestMapping(value = "/updateRole", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> updateRole(@RequestBody RoleDTO roleDTO) {
|
public ElectromagneticResult<?> updateRole(@RequestBody RoleDTO roleDTO) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -41,36 +45,42 @@ public class RoleController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除角色", notes = "")
|
@ApiOperation(value = "删除角色", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/deleteRole/{roleId}")
|
@GetMapping(value = "/deleteRole/{roleId}")
|
||||||
public ElectromagneticResult<?> deleteRole(@PathVariable("roleId") String roleId) {
|
public ElectromagneticResult<?> deleteRole(@PathVariable("roleId") String roleId) {
|
||||||
return ElectromagneticResultUtil.success(roleService.deleteRole(roleId));
|
return ElectromagneticResultUtil.success(roleService.deleteRole(roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查看角色", notes = "")
|
@ApiOperation(value = "查看角色", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/getSingleRole/{roleId}")
|
@GetMapping(value = "/getSingleRole/{roleId}")
|
||||||
public ElectromagneticResult<?> getRole(@PathVariable("roleId") String roleId) {
|
public ElectromagneticResult<?> getRole(@PathVariable("roleId") String roleId) {
|
||||||
return ElectromagneticResultUtil.success(roleService.getRole(roleId));
|
return ElectromagneticResultUtil.success(roleService.getRole(roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "获取角色列表", notes = "")
|
@ApiOperation(value = "获取角色列表", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> getRoles(@RequestBody RolePageDTO rolePageDTO) {
|
public ElectromagneticResult<?> getRoles(@RequestBody RolePageDTO rolePageDTO) {
|
||||||
return ElectromagneticResultUtil.success(roleService.getRoles(rolePageDTO));
|
return ElectromagneticResultUtil.success(roleService.getRoles(rolePageDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "通过角色名查看角色权限", notes = "")
|
@ApiOperation(value = "通过角色名查看角色权限", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/getRoleByName")
|
@GetMapping(value = "/getRoleByName")
|
||||||
public ElectromagneticResult<?> getRoleByName(@RequestParam("roleName") String roleName) {
|
public ElectromagneticResult<?> getRoleByName(@RequestParam("roleName") String roleName) {
|
||||||
return ElectromagneticResultUtil.success(roleService.getRoleByName(roleName));
|
return ElectromagneticResultUtil.success(roleService.getRoleByName(roleName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "角色名列表", notes = "")
|
@ApiOperation(value = "角色名列表", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/getRoleNames")
|
@GetMapping(value = "/getRoleNames")
|
||||||
public ElectromagneticResult<?> getRoleNames() {
|
public ElectromagneticResult<?> getRoleNames() {
|
||||||
return ElectromagneticResultUtil.success(roleService.getAllRoleNames());
|
return ElectromagneticResultUtil.success(roleService.getAllRoleNames());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "获得角色配置模版", notes = "")
|
@ApiOperation(value = "获得角色配置模版", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/getRoleTemplate")
|
@GetMapping(value = "/getRoleTemplate")
|
||||||
public ElectromagneticResult<?> getRoleTemplate() {
|
public ElectromagneticResult<?> getRoleTemplate() {
|
||||||
return ElectromagneticResultUtil.success(roleService.getRoleTemplate());
|
return ElectromagneticResultUtil.success(roleService.getRoleTemplate());
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.electromagnetic.industry.software.manage.controller;
|
package com.electromagnetic.industry.software.manage.controller;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.annotations.RequiredRole;
|
||||||
|
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
|
||||||
import com.electromagnetic.industry.software.common.enums.PublishEnum;
|
import com.electromagnetic.industry.software.common.enums.PublishEnum;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
|
||||||
|
|
@ -26,30 +28,35 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "新增用户信息", notes = "")
|
@ApiOperation(value = "新增用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@PostMapping("/createUser")
|
@PostMapping("/createUser")
|
||||||
public ElectromagneticResult<?> createUser(@RequestBody UserRequest userRequest) {
|
public ElectromagneticResult<?> createUser(@RequestBody UserRequest userRequest) {
|
||||||
return userService.createUser(userRequest);
|
return userService.createUser(userRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "编辑用户信息", notes = "")
|
@ApiOperation(value = "编辑用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@PutMapping("/updateUser")
|
@PutMapping("/updateUser")
|
||||||
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest) {
|
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest) {
|
||||||
return userService.modifyUser(userModiRequest);
|
return userService.modifyUser(userModiRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "发布用户信息", notes = "")
|
@ApiOperation(value = "发布用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@RequestMapping(value = "/publish", method = RequestMethod.POST)
|
@RequestMapping(value = "/publish", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> publishUser(@RequestBody UserPublishRequest userPublishRequest) {
|
public ElectromagneticResult<?> publishUser(@RequestBody UserPublishRequest userPublishRequest) {
|
||||||
return userService.publishUser(userPublishRequest);
|
return userService.publishUser(userPublishRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "获取单条用户信息", notes = "")
|
@ApiOperation(value = "获取单条用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@RequestMapping(value = "/getInfo", method = RequestMethod.GET)
|
@RequestMapping(value = "/getInfo", method = RequestMethod.GET)
|
||||||
public ElectromagneticResult<?> getSingleUser(GetSingleUserRequest getSingleUserRequest) {
|
public ElectromagneticResult<?> getSingleUser(GetSingleUserRequest getSingleUserRequest) {
|
||||||
return userService.getSingleUser(getSingleUserRequest);
|
return userService.getSingleUser(getSingleUserRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询用户信息", notes = "")
|
@ApiOperation(value = "查询用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> searchUser(@RequestBody SearchUserRequest searchUserRequest) {
|
public ElectromagneticResult<?> searchUser(@RequestBody SearchUserRequest searchUserRequest) {
|
||||||
return userService.searchUser(searchUserRequest);
|
return userService.searchUser(searchUserRequest);
|
||||||
|
|
@ -62,6 +69,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除用户信息", notes = "")
|
@ApiOperation(value = "删除用户信息", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SYSTEM)
|
||||||
@PostMapping(value = "/deleteUser")
|
@PostMapping(value = "/deleteUser")
|
||||||
public ElectromagneticResult<?> deleteUser(@RequestBody UserDeleteRequest userDeleteRequest) {
|
public ElectromagneticResult<?> deleteUser(@RequestBody UserDeleteRequest userDeleteRequest) {
|
||||||
return userService.deleteUser(userDeleteRequest);
|
return userService.deleteUser(userDeleteRequest);
|
||||||
|
|
@ -74,6 +82,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "人员绑定界面查询用户", notes = "")
|
@ApiOperation(value = "人员绑定界面查询用户", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@RequestMapping(value = "/bindRole/list", method = RequestMethod.POST)
|
@RequestMapping(value = "/bindRole/list", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> getPublishedUsers(@RequestBody SearchUserRequest searchUserRequest) {
|
public ElectromagneticResult<?> getPublishedUsers(@RequestBody SearchUserRequest searchUserRequest) {
|
||||||
searchUserRequest.setIsPublished(PublishEnum.PUBLISHED.getCode().toString());
|
searchUserRequest.setIsPublished(PublishEnum.PUBLISHED.getCode().toString());
|
||||||
|
|
@ -81,6 +90,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "人员绑定", notes = "")
|
@ApiOperation(value = "人员绑定", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@RequestMapping(value = "/bindRoles", method = RequestMethod.POST)
|
@RequestMapping(value = "/bindRoles", method = RequestMethod.POST)
|
||||||
public ElectromagneticResult<?> bindRoles(@RequestBody List<UserBindRoleDTO> list) {
|
public ElectromagneticResult<?> bindRoles(@RequestBody List<UserBindRoleDTO> list) {
|
||||||
if (userService.bindRoles(list)) {
|
if (userService.bindRoles(list)) {
|
||||||
|
|
@ -91,6 +101,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "密码重置", notes = "")
|
@ApiOperation(value = "密码重置", notes = "")
|
||||||
|
@RequiredRole(AdminTypeEnum.SECURITY)
|
||||||
@GetMapping(value = "/resetPassword/{userId}")
|
@GetMapping(value = "/resetPassword/{userId}")
|
||||||
public ElectromagneticResult<?> resetPassword(@PathVariable("userId") String userId) {
|
public ElectromagneticResult<?> resetPassword(@PathVariable("userId") String userId) {
|
||||||
return ElectromagneticResultUtil.success(userService.resetPassword(userId));
|
return ElectromagneticResultUtil.success(userService.resetPassword(userId));
|
||||||
|
|
|
||||||
|
|
@ -153,4 +153,8 @@ public interface EdFileInfoService {
|
||||||
*/
|
*/
|
||||||
ElectromagneticResult<?> detail(String id);
|
ElectromagneticResult<?> detail(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件的层级Id
|
||||||
|
*/
|
||||||
|
String getCategoryId (String id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,5 @@ public interface PermissionService {
|
||||||
* @param ids
|
* @param ids
|
||||||
*/
|
*/
|
||||||
Map<String, Boolean> filterExportIds(String[] ids);
|
Map<String, Boolean> filterExportIds(String[] ids);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1125,4 +1125,20 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
return destColibPath;
|
return destColibPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件的层级Id
|
||||||
|
* @param id 文件id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getCategoryId (String id){
|
||||||
|
EdFileInfo file = this.baseMapper.selectById(id);
|
||||||
|
if (file == null) {
|
||||||
|
throw new IllegalArgumentException("此ID未查询到文件:"+id);
|
||||||
|
}
|
||||||
|
if(file.getFileCode().length()<6){
|
||||||
|
throw new StringIndexOutOfBoundsException("此文件的FILE_CODE小于六位:"+id);
|
||||||
|
}
|
||||||
|
return file.getFileCode().substring(0, 6);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
||||||
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||||
|
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
|
||||||
import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper;
|
import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper;
|
||||||
import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper;
|
import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper;
|
||||||
|
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.models.RolePermission;
|
import com.electromagnetic.industry.software.manage.pojo.models.RolePermission;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
|
import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
|
||||||
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
||||||
|
|
@ -24,6 +26,8 @@ public class PermissionServiceImpl implements PermissionService {
|
||||||
UserRoleMapper userRoleMapper;
|
UserRoleMapper userRoleMapper;
|
||||||
@Resource
|
@Resource
|
||||||
RolePermissionMapper rolePermissionMapper;
|
RolePermissionMapper rolePermissionMapper;
|
||||||
|
@Resource
|
||||||
|
EdFileInfoMapper edFileInfoMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询当前用户在当前目录的功能权限
|
* 查询当前用户在当前目录的功能权限
|
||||||
|
|
@ -67,7 +71,16 @@ public class PermissionServiceImpl implements PermissionService {
|
||||||
queryWrapper1.select(RolePermission::getFileId)
|
queryWrapper1.select(RolePermission::getFileId)
|
||||||
.in(RolePermission::getRoleId, roleIds)
|
.in(RolePermission::getRoleId, roleIds)
|
||||||
.eq(RolePermission::getPermissionCode, FilePermission.VIEW);
|
.eq(RolePermission::getPermissionCode, FilePermission.VIEW);
|
||||||
return rolePermissionMapper.selectObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList());
|
List<String> ids = rolePermissionMapper.selectObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Set<String> result = new HashSet<>();
|
||||||
|
// 把父亲节点加上
|
||||||
|
for (String id : ids) {
|
||||||
|
EdFileInfo file = edFileInfoMapper.selectById(id);
|
||||||
|
String[] parentIds = file.getFilePath().split("_");
|
||||||
|
result.addAll(Arrays.asList(parentIds));
|
||||||
|
}
|
||||||
|
return new ArrayList<>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@ package com.electromagnetic.industry.software.common.annotations;
|
||||||
|
|
||||||
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.*;
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
|
@Documented
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.METHOD)
|
@Target({ElementType.METHOD, ElementType.PARAMETER})
|
||||||
|
|
||||||
public @interface RequiredPermission {
|
public @interface RequiredPermission {
|
||||||
|
|
||||||
FilePermission value();
|
FilePermission value();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.electromagnetic.industry.software.common.annotations;
|
||||||
|
|
||||||
|
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
|
@Documented
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface RequiredRole {
|
||||||
|
AdminTypeEnum value();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.electromagnetic.industry.software.common.exception;
|
||||||
|
|
||||||
|
public class PermissionDeniedException extends RuntimeException {
|
||||||
|
|
||||||
|
public PermissionDeniedException() {
|
||||||
|
super("Permission Denied: You do not have access to perform this operation.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public PermissionDeniedException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PermissionDeniedException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PermissionDeniedException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue