Compare commits
No commits in common. "8dc4c731d0ce478bab43e75c237f3f03cb3e117e" and "e0d3fc23ed0ea597eea69b7d1067d4113f4f6408" have entirely different histories.
8dc4c731d0
...
e0d3fc23ed
|
|
@ -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("用户无权限执行此操作");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -37,10 +37,4 @@ public interface PermissionService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Map<String, Boolean> transToMap(List<String> permissionCodes);
|
Map<String, Boolean> transToMap(List<String> permissionCodes);
|
||||||
|
|
||||||
/**
|
|
||||||
* 检查文件id列表是否可具有导出权限
|
|
||||||
* @param ids
|
|
||||||
*/
|
|
||||||
String[] filterExportIds(String[] ids);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper;
|
||||||
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;
|
||||||
import com.electromagnetic.industry.software.manage.service.RolePermissionService;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
|
@ -38,7 +37,7 @@ public class PermissionServiceImpl implements PermissionService {
|
||||||
|
|
||||||
List<String> roleIds = getRoles(userId);
|
List<String> roleIds = getRoles(userId);
|
||||||
// 只有当 roleIds 不为空且不为 null 时,才添加 in 条件
|
// 只有当 roleIds 不为空且不为 null 时,才添加 in 条件
|
||||||
if (roleIds.isEmpty()) {
|
if (CollUtil.isEmpty(roleIds)) {
|
||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||||
|
|
@ -59,10 +58,6 @@ public class PermissionServiceImpl implements PermissionService {
|
||||||
String userId = UserThreadLocal.getUserId();
|
String userId = UserThreadLocal.getUserId();
|
||||||
List<String> roleIds = getRoles(userId);
|
List<String> roleIds = getRoles(userId);
|
||||||
|
|
||||||
if (roleIds ==null || roleIds.isEmpty()) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||||
queryWrapper1.select(RolePermission::getFileId)
|
queryWrapper1.select(RolePermission::getFileId)
|
||||||
.in(RolePermission::getRoleId, roleIds)
|
.in(RolePermission::getRoleId, roleIds)
|
||||||
|
|
@ -117,29 +112,4 @@ public class PermissionServiceImpl implements PermissionService {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 检查文件id列表是否可具有导出权限
|
|
||||||
* @param ids
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String[] filterExportIds(String[] ids){
|
|
||||||
if (ids.length==0) {
|
|
||||||
return ids;
|
|
||||||
}
|
|
||||||
String userId=UserThreadLocal.getUserId();
|
|
||||||
List<String> roleIds = getRoles(userId);
|
|
||||||
List<String> result = new ArrayList<>();
|
|
||||||
for (String id : ids) {
|
|
||||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
queryWrapper.eq(RolePermission::getFileId, id)
|
|
||||||
.eq(RolePermission::getPermissionCode, FilePermission.EXPORT.getCode())
|
|
||||||
.in(RolePermission::getRoleId, roleIds);
|
|
||||||
List<RolePermission> list = rolePermissionMapper.selectList(queryWrapper);
|
|
||||||
if (!list.isEmpty()) {
|
|
||||||
result.add(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.toArray(new String[0]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
package com.electromagnetic.industry.software.common.annotations;
|
|
||||||
|
|
||||||
import com.electromagnetic.industry.software.common.enums.FilePermission;
|
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target(ElementType.METHOD)
|
|
||||||
public @interface RequiredPermission {
|
|
||||||
FilePermission value();
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue