修改异常处理.
This commit is contained in:
@@ -6,7 +6,12 @@ import com.orion.lang.utils.Exceptions;
|
||||
import com.orion.lang.utils.Strings;
|
||||
|
||||
/**
|
||||
* 错误码
|
||||
* 用于定义错误码
|
||||
* <p>
|
||||
* 1. http 通用 status
|
||||
* 2. 前端需要特殊处理
|
||||
* 3. @ExceptionHandler 全局异常
|
||||
* 其他情况可以定义在 ExceprionMessage 中
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
@@ -15,6 +20,8 @@ import com.orion.lang.utils.Strings;
|
||||
@SuppressWarnings("ALL")
|
||||
public enum ErrorCode implements CodeInfo {
|
||||
|
||||
// -------------------- http message --------------------
|
||||
|
||||
BAD_REQUEST(400, "参数验证失败"),
|
||||
|
||||
UNAUTHORIZED(401, "当前认证信息已失效, 请重新登录"),
|
||||
@@ -27,7 +34,7 @@ public enum ErrorCode implements CodeInfo {
|
||||
|
||||
REQUEST_TIMEOUT(408, "处理超时"),
|
||||
|
||||
CONFLICT(409, "状态发生改变, 请刷新后重试"),
|
||||
CONFLICT(409, "数据状态发生改变, 请刷新后重试"),
|
||||
|
||||
PAYLOAD_TOO_LARGE(413, "请求过大"),
|
||||
|
||||
@@ -45,10 +52,6 @@ public enum ErrorCode implements CodeInfo {
|
||||
|
||||
USER_LOCKED(702, "当前用户已被锁定"),
|
||||
|
||||
ROLE_PRESENT(703, "角色 [{}] 不存在"),
|
||||
|
||||
DATA_ALTER(704, "数据发生改变, 请刷新后重试"),
|
||||
|
||||
// -------------------- 自定义 - 通用 --------------------
|
||||
|
||||
NETWORK_FLUCTUATION(900, "当前环境网路波动"),
|
||||
|
||||
@@ -31,6 +31,8 @@ public interface ErrorMessage {
|
||||
|
||||
String ROLE_ABSENT = "角色不存在";
|
||||
|
||||
String ROLE_CODE_ABSENT = "角色 [{}] 不存在";
|
||||
|
||||
String INVALID_PARENT_MENU = "所选父菜单不合法";
|
||||
|
||||
String PARENT_MENU_ABSENT = "父菜单不存在";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.orion.ops.module.infra.enums;
|
||||
|
||||
import com.orion.ops.framework.common.constant.ErrorCode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -45,4 +46,19 @@ public enum UserStatusEnum {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户状态
|
||||
*
|
||||
* @param status status
|
||||
*/
|
||||
public static void checkUserStatus(Integer status) {
|
||||
if (UserStatusEnum.DISABLED.getStatus().equals(status)) {
|
||||
// 禁用状态
|
||||
throw ErrorCode.USER_DISABLED.exception();
|
||||
} else if (UserStatusEnum.LOCKED.getStatus().equals(status)) {
|
||||
// 锁定状态
|
||||
throw ErrorCode.USER_LOCKED.exception();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
|
||||
// 获取登陆信息
|
||||
LoginUser user = authenticationService.getLoginUser(tokenInfo.getId());
|
||||
// 检查用户状态
|
||||
this.checkUserStatus(user);
|
||||
UserStatusEnum.checkUserStatus(user.getStatus());
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -78,17 +78,4 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户状态
|
||||
*
|
||||
* @param user user
|
||||
*/
|
||||
private void checkUserStatus(LoginUser user) {
|
||||
if (UserStatusEnum.DISABLED.getStatus().equals(user.getStatus())) {
|
||||
throw ErrorCode.USER_DISABLED.exception();
|
||||
} else if (UserStatusEnum.LOCKED.getStatus().equals(user.getStatus())) {
|
||||
throw ErrorCode.USER_LOCKED.exception();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.orion.lang.utils.Exceptions;
|
||||
import com.orion.lang.utils.collect.Lists;
|
||||
import com.orion.lang.utils.crypto.Signatures;
|
||||
import com.orion.ops.framework.common.constant.Const;
|
||||
import com.orion.ops.framework.common.constant.ErrorCode;
|
||||
import com.orion.ops.framework.common.constant.ErrorMessage;
|
||||
import com.orion.ops.framework.common.security.LoginUser;
|
||||
import com.orion.ops.framework.common.utils.CryptoUtils;
|
||||
@@ -75,7 +74,7 @@ public class AuthenticationServiceImpl implements AuthenticationService {
|
||||
boolean passwordCorrect = this.checkPassword(request, user);
|
||||
Valid.isTrue(passwordCorrect, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
// 检查用户状态
|
||||
this.checkUserStatus(user.getStatus());
|
||||
UserStatusEnum.checkUserStatus(user.getStatus());
|
||||
// 设置上次登录时间
|
||||
this.setLastLoginTime(user.getId());
|
||||
// 检查用户缓存
|
||||
@@ -239,21 +238,6 @@ public class AuthenticationServiceImpl implements AuthenticationService {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户状态
|
||||
*
|
||||
* @param status status
|
||||
*/
|
||||
private void checkUserStatus(Integer status) {
|
||||
if (UserStatusEnum.DISABLED.getStatus().equals(status)) {
|
||||
// 禁用状态
|
||||
throw ErrorCode.USER_DISABLED.exception();
|
||||
} else if (UserStatusEnum.LOCKED.getStatus().equals(status)) {
|
||||
// 锁定状态
|
||||
throw ErrorCode.USER_LOCKED.exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置最后登录时间
|
||||
*
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.orion.ops.module.infra.service.impl;
|
||||
|
||||
import com.orion.lang.utils.collect.Lists;
|
||||
import com.orion.ops.framework.common.constant.Const;
|
||||
import com.orion.ops.framework.common.security.LoginUser;
|
||||
import com.orion.ops.framework.security.core.utils.SecurityUtils;
|
||||
import com.orion.ops.module.infra.convert.SystemMenuConvert;
|
||||
@@ -156,10 +157,10 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
// 查询角色菜单
|
||||
Stream<SystemMenuCacheDTO> mergeStream;
|
||||
if (RoleDefine.containsAdmin(roles)) {
|
||||
// 管理员拥有全部权限
|
||||
// 管理员拥有全部菜单
|
||||
mergeStream = menuCache.stream();
|
||||
} else {
|
||||
// 当前用户所适配的角色
|
||||
// 当前用户所适配的角色菜单
|
||||
mergeStream = roles.stream()
|
||||
.map(roleMenuCache::get)
|
||||
.filter(Objects::nonNull)
|
||||
@@ -187,15 +188,21 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
if (roles.isEmpty()) {
|
||||
permissions = Lists.empty();
|
||||
} else {
|
||||
permissions = roles.stream()
|
||||
.map(roleMenuCache::get)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(Collection::stream)
|
||||
.filter(s -> MenuStatusEnum.ENABLED.getStatus().equals(s.getStatus()))
|
||||
.map(SystemMenuCacheDTO::getPermission)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
if (RoleDefine.containsAdmin(roles)) {
|
||||
// 管理员拥有全部权限
|
||||
permissions = Lists.of(Const.ASTERISK);
|
||||
} else {
|
||||
// 当前用户所适配的角色的权限
|
||||
permissions = roles.stream()
|
||||
.map(roleMenuCache::get)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(Collection::stream)
|
||||
.filter(s -> MenuStatusEnum.ENABLED.getStatus().equals(s.getStatus()))
|
||||
.map(SystemMenuCacheDTO::getPermission)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
// 组装数据
|
||||
return UserPermissionVO.builder()
|
||||
|
||||
@@ -60,7 +60,7 @@ public class SystemRoleMenuServiceImpl implements SystemRoleMenuService {
|
||||
// 查询菜单列表
|
||||
List<SystemMenuDO> menuList = systemMenuDAO.selectBatchIds(menuIdList);
|
||||
if (menuIdList.size() != menuList.size()) {
|
||||
throw ErrorCode.DATA_ALTER.exception();
|
||||
throw ErrorCode.CONFLICT.exception();
|
||||
}
|
||||
// 查询角色菜单
|
||||
List<Long> beforeMenuIdList = systemRoleMenuDAO.of()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.orion.ops.module.infra.service.impl;
|
||||
|
||||
import com.orion.lang.utils.collect.Lists;
|
||||
import com.orion.ops.framework.common.constant.ErrorCode;
|
||||
import com.orion.ops.framework.common.constant.ErrorMessage;
|
||||
import com.orion.ops.framework.common.security.LoginUser;
|
||||
import com.orion.ops.framework.common.utils.Valid;
|
||||
@@ -75,10 +74,7 @@ public class SystemUserRoleServiceImpl implements SystemUserRoleService {
|
||||
.map(SystemRoleDO::getCode)
|
||||
.collect(Collectors.toList());
|
||||
for (String roleCode : roleCodeList) {
|
||||
// 角色不存在
|
||||
if (!userRoleCodes.contains(roleCode)) {
|
||||
throw ErrorCode.ROLE_PRESENT.exception(roleCode);
|
||||
}
|
||||
Valid.in(roleCode, userRoleCodes, ErrorMessage.ROLE_CODE_ABSENT, roleCode);
|
||||
}
|
||||
}
|
||||
// 删除用户角色关联
|
||||
|
||||
Reference in New Issue
Block a user