fix&todo: ClassCopyException补丁优化,张:roleChangeUser部分存在漏洞
This commit is contained in:
parent
23e888138d
commit
92e6c2b0a7
@ -1,6 +1,5 @@
|
|||||||
package com.jsl.oa.controllers;
|
package com.jsl.oa.controllers;
|
||||||
|
|
||||||
import com.jsl.oa.exception.ClassCopyException;
|
|
||||||
import com.jsl.oa.model.voData.UserAddVo;
|
import com.jsl.oa.model.voData.UserAddVo;
|
||||||
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
||||||
import com.jsl.oa.model.voData.UserEditProfileVO;
|
import com.jsl.oa.model.voData.UserEditProfileVO;
|
||||||
@ -166,7 +165,7 @@ public class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@PutMapping("/user/edit")
|
@PutMapping("/user/edit")
|
||||||
public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request) throws ClassCopyException {
|
public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request) {
|
||||||
// 判断是否有参数错误
|
// 判断是否有参数错误
|
||||||
if (bindingResult.hasErrors()) {
|
if (bindingResult.hasErrors()) {
|
||||||
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
|
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
|
||||||
@ -176,7 +175,7 @@ public class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@GetMapping("/user/profile/get")
|
@GetMapping("/user/profile/get")
|
||||||
public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException {
|
public BaseResponse userProfileGet(HttpServletRequest request) {
|
||||||
return userService.userProfileGet(request);
|
return userService.userProfileGet(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package com.jsl.oa.exception;
|
package com.jsl.oa.exception;
|
||||||
|
|
||||||
import com.jsl.oa.utils.ErrorCode;
|
import com.jsl.oa.utils.ErrorCode;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public class ClassCopyException extends IllegalAccessException {
|
public class ClassCopyException extends BusinessException {
|
||||||
public ClassCopyException(@NotNull ErrorCode errorCode) {
|
public ClassCopyException() {
|
||||||
super(errorCode.getOutput() + "|" + errorCode.getMessage());
|
super(ErrorCode.CLASS_COPY_EXCEPTION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.jsl.oa.services;
|
package com.jsl.oa.services;
|
||||||
|
|
||||||
import com.jsl.oa.exception.ClassCopyException;
|
|
||||||
import com.jsl.oa.model.doData.UserDO;
|
import com.jsl.oa.model.doData.UserDO;
|
||||||
import com.jsl.oa.model.voData.UserAddVo;
|
import com.jsl.oa.model.voData.UserAddVo;
|
||||||
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
||||||
@ -87,10 +86,10 @@ public interface UserService {
|
|||||||
|
|
||||||
BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request);
|
BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request);
|
||||||
|
|
||||||
BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) throws ClassCopyException;
|
BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request);
|
||||||
|
|
||||||
|
|
||||||
BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException;
|
BaseResponse userProfileGet(HttpServletRequest request);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,10 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
@Override
|
@Override
|
||||||
public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) {
|
public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) {
|
||||||
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
|
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
|
||||||
if(!roleDAO.roleChangeUser(uid, rid)){
|
// TODO: 2023-01-20|List:10002-未判断用户是否存在
|
||||||
|
// TODO: 2023-01-20|List:10003-保险起见,默认用户主键为 1 的用户为超级管理员
|
||||||
|
// (不可以修改自己权限组,避免修改后不存在管理员,无管理组)
|
||||||
|
if (!roleDAO.roleChangeUser(uid, rid)) {
|
||||||
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
|
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
|
||||||
}
|
}
|
||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
@ -84,8 +87,7 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
// 判断是否存在该 Role
|
// 判断是否存在该 Role
|
||||||
if (getRole != null) {
|
if (getRole != null) {
|
||||||
// 替换 Role 信息
|
// 替换 Role 信息
|
||||||
getRole.setRoleName(roleEditVO.getName())
|
getRole.setRoleName(roleEditVO.getName()).setDisplayName(roleEditVO.getDisplayName());
|
||||||
.setDisplayName(roleEditVO.getDisplayName());
|
|
||||||
// 更新 Role 信息
|
// 更新 Role 信息
|
||||||
if (roleDAO.roleEdit(getRole)) {
|
if (roleDAO.roleEdit(getRole)) {
|
||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.jsl.oa.services.impl;
|
package com.jsl.oa.services.impl;
|
||||||
|
|
||||||
import com.jsl.oa.dao.UserDAO;
|
import com.jsl.oa.dao.UserDAO;
|
||||||
import com.jsl.oa.exception.ClassCopyException;
|
|
||||||
import com.jsl.oa.mapper.RoleMapper;
|
import com.jsl.oa.mapper.RoleMapper;
|
||||||
import com.jsl.oa.model.doData.RoleUserDO;
|
import com.jsl.oa.model.doData.RoleUserDO;
|
||||||
import com.jsl.oa.model.doData.UserCurrentDO;
|
import com.jsl.oa.model.doData.UserCurrentDO;
|
||||||
@ -165,7 +164,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) throws ClassCopyException {
|
public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) {
|
||||||
//检测用户是否为管理员
|
//检测用户是否为管理员
|
||||||
BaseResponse checkManagerResult = isManager(request);
|
BaseResponse checkManagerResult = isManager(request);
|
||||||
if (checkManagerResult.getCode() != 200) {
|
if (checkManagerResult.getCode() != 200) {
|
||||||
@ -188,7 +187,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException {
|
public BaseResponse userProfileGet(HttpServletRequest request) {
|
||||||
// 获取用户Id
|
// 获取用户Id
|
||||||
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
||||||
UserProfile userProfile = new UserProfile();
|
UserProfile userProfile = new UserProfile();
|
||||||
|
@ -219,8 +219,8 @@ public class Processing {
|
|||||||
|
|
||||||
targetField.set(target, value);
|
targetField.set(target, value);
|
||||||
}
|
}
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException ignored) {
|
||||||
throw new ClassCopyException(ErrorCode.CLASS_COPY_EXCEPTION);
|
throw new ClassCopyException();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user