diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/common/LoginController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/common/LoginController.java index e3f32a8..7376dd1 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/common/LoginController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/common/LoginController.java @@ -18,7 +18,7 @@ import com.agileboot.infrastructure.security.AuthenticationUtils; import com.agileboot.admin.customize.service.login.dto.CaptchaDTO; import com.agileboot.admin.customize.service.login.dto.ConfigDTO; import com.agileboot.admin.customize.service.login.command.LoginCommand; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.annotations.ratelimit.RateLimitKey; import com.agileboot.admin.customize.service.login.LoginService; import io.swagger.v3.oas.annotations.Operation; @@ -100,7 +100,7 @@ public class LoginController { public ResponseDTO login(@RequestBody LoginCommand loginCommand) { // 生成令牌 String token = loginService.login(loginCommand); - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); CurrentLoginUserDTO currentUserDTO = userApplicationService.getLoginUserInfo(loginUser); return ResponseDTO.ok(new TokenDTO(token, currentUserDTO)); @@ -114,7 +114,7 @@ public class LoginController { @Operation(summary = "获取当前登录用户信息") @GetMapping("/getLoginUserInfo") public ResponseDTO getLoginUserInfo() { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); CurrentLoginUserDTO currentUserDTO = userApplicationService.getLoginUserInfo(loginUser); @@ -129,7 +129,7 @@ public class LoginController { @Operation(summary = "获取用户对应的菜单路由", description = "用于动态生成路由") @GetMapping("/getRouters") public ResponseDTO> getRouters() { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); List routerTree = menuApplicationService.getRouterTree(loginUser); return ResponseDTO.ok(routerTree); } diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysMenuController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysMenuController.java index c4222fd..5fe0099 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysMenuController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysMenuController.java @@ -11,7 +11,7 @@ import com.agileboot.domain.system.menu.dto.MenuDetailDTO; import com.agileboot.domain.system.menu.query.MenuQuery; import com.agileboot.infrastructure.annotations.accessLog.AccessLog; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.BusinessTypeEnum; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -74,7 +74,7 @@ public class SysMenuController extends BaseController { @Operation(summary = "菜单列表(树级)", description = "菜单树级下拉框") @GetMapping("/dropdown") public ResponseDTO>> dropdownList() { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); List> dropdownList = menuApplicationService.getDropdownList(loginUser); return ResponseDTO.ok(dropdownList); } diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysProfileController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysProfileController.java index 3905790..46170a4 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysProfileController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysProfileController.java @@ -14,7 +14,7 @@ import com.agileboot.domain.system.user.command.UpdateUserPasswordCommand; import com.agileboot.domain.system.user.dto.UserProfileDTO; import com.agileboot.infrastructure.annotations.accessLog.AccessLog; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.BusinessTypeEnum; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -49,7 +49,7 @@ public class SysProfileController extends BaseController { @Operation(summary = "获取个人信息") @GetMapping public ResponseDTO profile() { - LoginUser user = AuthenticationUtils.getLoginUser(); + WebLoginUser user = AuthenticationUtils.getLoginUser(); UserProfileDTO userProfile = userApplicationService.getUserProfile(user.getUserId()); return ResponseDTO.ok(userProfile); } @@ -61,7 +61,7 @@ public class SysProfileController extends BaseController { @AccessLog(title = "个人信息", businessType = BusinessTypeEnum.MODIFY) @PutMapping public ResponseDTO updateProfile(@RequestBody UpdateProfileCommand command) { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); command.setUserId(loginUser.getUserId()); userApplicationService.updateUserProfile(command); return ResponseDTO.ok(); @@ -74,7 +74,7 @@ public class SysProfileController extends BaseController { @AccessLog(title = "个人信息", businessType = BusinessTypeEnum.MODIFY) @PutMapping("/password") public ResponseDTO updatePassword(@RequestBody UpdateUserPasswordCommand command) { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); command.setUserId(loginUser.getUserId()); userApplicationService.updatePasswordBySelf(loginUser, command); return ResponseDTO.ok(); @@ -90,7 +90,7 @@ public class SysProfileController extends BaseController { if (file.isEmpty()) { throw new ApiException(ErrorCode.Business.USER_UPLOAD_FILE_FAILED); } - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); String avatarUrl = FileUploadUtils.upload(UploadSubDir.AVATAR_PATH, file); userApplicationService.updateUserAvatar(new UpdateUserAvatarCommand(loginUser.getUserId(), avatarUrl)); diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysUserController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysUserController.java index 07522f2..761aefd 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysUserController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/system/SysUserController.java @@ -16,7 +16,7 @@ import com.agileboot.domain.system.user.dto.UserDetailDTO; import com.agileboot.domain.system.user.query.SearchUserQuery; import com.agileboot.infrastructure.annotations.accessLog.AccessLog; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.BusinessTypeEnum; import com.agileboot.orm.system.result.SearchUserDO; import io.swagger.v3.oas.annotations.Operation; @@ -136,7 +136,7 @@ public class SysUserController extends BaseController { @DeleteMapping("/{userIds}") public ResponseDTO remove(@PathVariable List userIds) { BulkOperationCommand bulkDeleteCommand = new BulkOperationCommand<>(userIds); - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); userApplicationService.deleteUsers(loginUser, bulkDeleteCommand); return ResponseDTO.ok(); } diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/JwtAuthenticationTokenFilter.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/JwtAuthenticationTokenFilter.java index 9e2c967..ff7379f 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/JwtAuthenticationTokenFilter.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/JwtAuthenticationTokenFilter.java @@ -1,8 +1,8 @@ package com.agileboot.admin.customize.config; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.service.TokenService; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.login.TokenService; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -33,7 +33,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { - LoginUser loginUser = tokenService.getLoginUser(request); + WebLoginUser loginUser = tokenService.getLoginUser(request); if (loginUser != null && AuthenticationUtils.getAuthentication() == null) { tokenService.refreshToken(loginUser); // 如果没有将当前登录用户放入到上下文中的话,会认定用户未授权,返回用户未登陆的错误 @@ -45,7 +45,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { } - private void putCurrentLoginUserIntoContext(HttpServletRequest request, LoginUser loginUser) { + private void putCurrentLoginUserIntoContext(HttpServletRequest request, WebLoginUser loginUser) { UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java index d532662..c630dc0 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java @@ -9,9 +9,8 @@ import com.agileboot.common.utils.ServletHolderUtil; import com.agileboot.infrastructure.cache.redis.RedisCacheService; import com.agileboot.infrastructure.thread.AsyncTaskFactory; import com.agileboot.infrastructure.thread.ThreadPoolManager; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.service.TokenService; -import com.agileboot.infrastructure.web.service.UserDetailsServiceImpl; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.login.TokenService; import com.agileboot.orm.common.enums.LoginStatusEnum; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -92,7 +91,7 @@ public class SecurityConfig { @Bean public LogoutSuccessHandler logOutSuccessHandler() { return (request, response, authentication) -> { - LoginUser loginUser = tokenService.getLoginUser(request); + WebLoginUser loginUser = tokenService.getLoginUser(request); if (loginUser != null) { String userName = loginUser.getUsername(); // 删除用户缓存记录 diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java index 4a2ea08..7a0cc18 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java @@ -25,8 +25,7 @@ import com.agileboot.infrastructure.thread.ThreadPoolManager; import com.agileboot.admin.customize.service.login.dto.CaptchaDTO; import com.agileboot.admin.customize.service.login.dto.ConfigDTO; import com.agileboot.admin.customize.service.login.command.LoginCommand; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.service.TokenService; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.ConfigKeyEnum; import com.agileboot.orm.common.enums.LoginStatusEnum; import com.agileboot.orm.system.entity.SysUserEntity; @@ -105,7 +104,7 @@ public class LoginService { // 把当前登录用户 放入上下文中 SecurityContextHolder.getContext().setAuthentication(authentication); // 这里获取的loginUser是UserDetailsServiceImpl#loadUserByUsername方法返回的LoginUser - LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + WebLoginUser loginUser = (WebLoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser); // 生成token return tokenService.createTokenAndPutUserInCache(loginUser); @@ -203,7 +202,7 @@ public class LoginService { * 记录登录信息 * @param loginUser 登录用户 */ - public void recordLoginInfo(LoginUser loginUser) { + public void recordLoginInfo(WebLoginUser loginUser) { ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginUser.getUsername(), LoginStatusEnum.LOGIN_SUCCESS, LoginStatusEnum.LOGIN_SUCCESS.description())); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/TokenService.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/TokenService.java similarity index 93% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/TokenService.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/TokenService.java index e8e9f5c..7eab177 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/TokenService.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/TokenService.java @@ -1,4 +1,4 @@ -package com.agileboot.infrastructure.web.service; +package com.agileboot.admin.customize.service.login; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; @@ -7,7 +7,7 @@ import com.agileboot.common.constant.Constants.Token; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; import com.agileboot.infrastructure.cache.redis.RedisCacheService; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.MalformedJwtException; @@ -63,7 +63,7 @@ public class TokenService { * * @return 用户信息 */ - public LoginUser getLoginUser(HttpServletRequest request) { + public WebLoginUser getLoginUser(HttpServletRequest request) { // 获取请求携带的令牌 String token = getTokenFromRequest(request); if (StrUtil.isNotEmpty(token)) { @@ -91,7 +91,7 @@ public class TokenService { * @param loginUser 用户信息 * @return 令牌 */ - public String createTokenAndPutUserInCache(LoginUser loginUser) { + public String createTokenAndPutUserInCache(WebLoginUser loginUser) { loginUser.setCachedKey(IdUtil.fastUUID()); redisCache.loginUserCache.set(loginUser.getCachedKey(), loginUser); @@ -103,7 +103,7 @@ public class TokenService { * 当超过20分钟,自动刷新token * @param loginUser 登录用户 */ - public void refreshToken(LoginUser loginUser) { + public void refreshToken(WebLoginUser loginUser) { long currentTime = System.currentTimeMillis(); if (currentTime > loginUser.getAutoRefreshCacheTime()) { loginUser.setAutoRefreshCacheTime(currentTime + TimeUnit.MINUTES.toMillis(autoRefreshTime)); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/UserDetailsServiceImpl.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/UserDetailsServiceImpl.java similarity index 84% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/UserDetailsServiceImpl.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/UserDetailsServiceImpl.java index cb3327f..14c33fa 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/UserDetailsServiceImpl.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/UserDetailsServiceImpl.java @@ -1,10 +1,10 @@ -package com.agileboot.infrastructure.web.service; +package com.agileboot.admin.customize.service.login; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; import com.agileboot.orm.common.enums.DataScopeEnum; import com.agileboot.orm.common.enums.UserStatusEnum; @@ -35,6 +35,7 @@ import org.springframework.stereotype.Service; /** * 自定义加载用户信息通过用户名 * 用于SpringSecurity 登录流程 + * 没有办法把这个类 放进loginService中 会在SecurityConfig中造成循环依赖 * @see com.agileboot.infrastructure.config.SecurityConfig#filterChain(HttpSecurity) * @author valarchie */ @@ -67,20 +68,23 @@ public class UserDetailsServiceImpl implements UserDetailsService { log.info("登录用户:{} 已被停用.", username); throw new ApiException(ErrorCode.Business.USER_IS_DISABLE, username); } - LoginUser loginUser = new LoginUser(userEntity.getUserId(), userEntity.getIsAdmin(), userEntity.getUsername(), - userEntity.getPassword()); - loginUser.setLoginTime(System.currentTimeMillis()); - loginUser.setAutoRefreshCacheTime(loginUser.getLoginTime() + TimeUnit.MINUTES.toMillis(tokenService.getAutoRefreshTime())); - loginUser.fillUserAgent(); + + RoleInfo roleInfo = getRoleInfo(userEntity.getRoleId(), userEntity.getIsAdmin()); + + WebLoginUser loginUser = new WebLoginUser(userEntity.getUserId(), userEntity.getIsAdmin(), userEntity.getUsername(), + userEntity.getPassword(), roleInfo, userEntity.getDeptId()); + loginUser.fillLoginInfo(); + loginUser.setAutoRefreshCacheTime(loginUser.getLoginInfo().getLoginTime() + + TimeUnit.MINUTES.toMillis(tokenService.getAutoRefreshTime())); return loginUser; } - public RoleInfo getRoleInfo(Long roleId) { + public RoleInfo getRoleInfo(Long roleId, boolean isAdmin) { if (roleId == null) { return RoleInfo.EMPTY_ROLE; } - if (roleId == RoleInfo.ADMIN_ROLE_ID) { + if (isAdmin) { LambdaQueryWrapper menuQuery = Wrappers.lambdaQuery(); menuQuery.select(SysMenuEntity::getMenuId); List allMenus = menuService.list(menuQuery); @@ -115,5 +119,4 @@ public class UserDetailsServiceImpl implements UserDetailsService { } - } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataPermissionCheckerFactory.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionCheckerFactory.java similarity index 67% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataPermissionCheckerFactory.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionCheckerFactory.java index 688fd81..0dd57ed 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataPermissionCheckerFactory.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionCheckerFactory.java @@ -1,13 +1,14 @@ -package com.agileboot.infrastructure.web.domain.permission; +package com.agileboot.admin.customize.service.permission; import cn.hutool.extra.spring.SpringUtil; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.checker.AllDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.checker.CustomDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.checker.DefaultDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.checker.DeptTreeDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.checker.OnlySelfDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.checker.SingleDeptDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.checker.AllDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.checker.CustomDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.checker.DefaultDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.checker.DeptTreeDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.checker.OnlySelfDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.checker.SingleDeptDataPermissionChecker; import com.agileboot.orm.common.enums.DataScopeEnum; import com.agileboot.orm.system.service.ISysDeptService; import javax.annotation.PostConstruct; @@ -40,7 +41,7 @@ public class DataPermissionCheckerFactory { } - public static AbstractDataPermissionChecker getChecker(LoginUser loginUser) { + public static AbstractDataPermissionChecker getChecker(WebLoginUser loginUser) { if (loginUser == null) { return deptTreeChecker; } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/DataPermissionService.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionService.java similarity index 75% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/DataPermissionService.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionService.java index 2298d0f..0d30980 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/DataPermissionService.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/DataPermissionService.java @@ -1,11 +1,10 @@ -package com.agileboot.infrastructure.web.service; +package com.agileboot.admin.customize.service.permission; import cn.hutool.core.collection.CollUtil; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; -import com.agileboot.infrastructure.web.domain.permission.DataPermissionCheckerFactory; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.entity.SysUserEntity; import com.agileboot.orm.system.service.ISysUserService; import java.util.List; @@ -31,7 +30,7 @@ public class DataPermissionService { * @return 检验结果 */ public boolean checkUserId(Long userId) { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); SysUserEntity targetUser = userService.getById(userId); if (targetUser == null) { return true; @@ -57,12 +56,12 @@ public class DataPermissionService { } public boolean checkDeptId(Long deptId) { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); return checkDataScope(loginUser, deptId, null); } - public boolean checkDataScope(LoginUser loginUser, Long targetDeptId, Long targetUserId) { + public boolean checkDataScope(WebLoginUser loginUser, Long targetDeptId, Long targetUserId) { DataCondition dataCondition = DataCondition.builder().targetDeptId(targetDeptId).targetUserId(targetUserId).build(); AbstractDataPermissionChecker checker = DataPermissionCheckerFactory.getChecker(loginUser); return checker.check(loginUser, dataCondition); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/MenuPermissionService.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/MenuPermissionService.java similarity index 86% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/MenuPermissionService.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/MenuPermissionService.java index c2971bf..cbe262a 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/service/MenuPermissionService.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/MenuPermissionService.java @@ -1,9 +1,9 @@ -package com.agileboot.infrastructure.web.service; +package com.agileboot.admin.customize.service.permission; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; import java.util.Set; import org.springframework.stereotype.Service; @@ -26,7 +26,7 @@ public class MenuPermissionService { if (StrUtil.isEmpty(permission)) { return false; } - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); if (loginUser == null || CollUtil.isEmpty(loginUser.getRoleInfo().getMenuPermissions())) { return false; } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/AbstractDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/AbstractDataPermissionChecker.java similarity index 66% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/AbstractDataPermissionChecker.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/AbstractDataPermissionChecker.java index 2428eef..0978788 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/AbstractDataPermissionChecker.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/AbstractDataPermissionChecker.java @@ -1,6 +1,6 @@ -package com.agileboot.infrastructure.web.domain.permission; +package com.agileboot.admin.customize.service.permission.model; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.service.ISysDeptService; import lombok.Data; @@ -20,6 +20,6 @@ public abstract class AbstractDataPermissionChecker { * @param condition 条件 * @return 校验结果 */ - public abstract boolean check(LoginUser loginUser, DataCondition condition); + public abstract boolean check(WebLoginUser loginUser, DataCondition condition); } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataCondition.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/DataCondition.java similarity index 84% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataCondition.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/DataCondition.java index 099955d..edec2bd 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/DataCondition.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/DataCondition.java @@ -1,4 +1,4 @@ -package com.agileboot.infrastructure.web.domain.permission; +package com.agileboot.admin.customize.service.permission.model; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/AllDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/AllDataPermissionChecker.java new file mode 100644 index 0000000..4bb314c --- /dev/null +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/AllDataPermissionChecker.java @@ -0,0 +1,25 @@ +package com.agileboot.admin.customize.service.permission.model.checker; + +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; +import com.agileboot.orm.system.service.ISysDeptService; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据权限测试接口 + * @author valarchie + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class AllDataPermissionChecker extends AbstractDataPermissionChecker { + + private ISysDeptService deptService; + + + @Override + public boolean check(WebLoginUser loginUser, DataCondition condition) { + return true; + } +} diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/CustomDataPermissionChecker.java similarity index 70% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionChecker.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/CustomDataPermissionChecker.java index 5a97c03..58fe271 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionChecker.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/CustomDataPermissionChecker.java @@ -1,9 +1,9 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission.model.checker; import cn.hutool.core.collection.CollUtil; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import java.util.Set; import lombok.AllArgsConstructor; @@ -25,7 +25,7 @@ public class CustomDataPermissionChecker extends AbstractDataPermissionChecker { @Override - public boolean check(LoginUser loginUser, DataCondition condition) { + public boolean check(WebLoginUser loginUser, DataCondition condition) { if (condition == null || loginUser == null) { return false; } diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DefaultDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DefaultDataPermissionChecker.java new file mode 100644 index 0000000..3ac469f --- /dev/null +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DefaultDataPermissionChecker.java @@ -0,0 +1,25 @@ +package com.agileboot.admin.customize.service.permission.model.checker; + +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; +import com.agileboot.orm.system.service.ISysDeptService; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据权限测试接口 + * @author valarchie + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DefaultDataPermissionChecker extends AbstractDataPermissionChecker { + + private ISysDeptService deptService; + + @Override + public boolean check(WebLoginUser loginUser, DataCondition condition) { + return false; + } + +} diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DeptTreeDataPermissionChecker.java similarity index 73% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionChecker.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DeptTreeDataPermissionChecker.java index 0e55e79..242e740 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionChecker.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/DeptTreeDataPermissionChecker.java @@ -1,8 +1,8 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission.model.checker; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import java.util.Objects; import lombok.AllArgsConstructor; @@ -23,7 +23,7 @@ public class DeptTreeDataPermissionChecker extends AbstractDataPermissionChecker private ISysDeptService deptService; @Override - public boolean check(LoginUser loginUser, DataCondition condition) { + public boolean check(WebLoginUser loginUser, DataCondition condition) { if (condition == null || loginUser == null) { return false; } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/OnlySelfDataPermissionChecker.java similarity index 69% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionChecker.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/OnlySelfDataPermissionChecker.java index eef9534..c612ab8 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionChecker.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/OnlySelfDataPermissionChecker.java @@ -1,8 +1,8 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission.model.checker; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import java.util.Objects; import lombok.AllArgsConstructor; @@ -23,7 +23,7 @@ public class OnlySelfDataPermissionChecker extends AbstractDataPermissionChecker private ISysDeptService deptService; @Override - public boolean check(LoginUser loginUser, DataCondition condition) { + public boolean check(WebLoginUser loginUser, DataCondition condition) { if (condition == null || loginUser == null) { return false; } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionChecker.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/SingleDeptDataPermissionChecker.java similarity index 69% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionChecker.java rename to agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/SingleDeptDataPermissionChecker.java index fca68f8..575b17e 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionChecker.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/permission/model/checker/SingleDeptDataPermissionChecker.java @@ -1,8 +1,8 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission.model.checker; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.AbstractDataPermissionChecker; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import java.util.Objects; import lombok.AllArgsConstructor; @@ -23,7 +23,7 @@ public class SingleDeptDataPermissionChecker extends AbstractDataPermissionCheck private ISysDeptService deptService; @Override - public boolean check(LoginUser loginUser, DataCondition condition) { + public boolean check(WebLoginUser loginUser, DataCondition condition) { if (condition == null || loginUser == null) { return false; } diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionCheckerTest.java b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/CustomDataPermissionCheckerTest.java similarity index 87% rename from agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionCheckerTest.java rename to agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/CustomDataPermissionCheckerTest.java index 2154989..746e70c 100644 --- a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/CustomDataPermissionCheckerTest.java +++ b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/CustomDataPermissionCheckerTest.java @@ -1,13 +1,14 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.admin.customize.service.permission.model.checker.CustomDataPermissionChecker; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import org.apache.commons.collections4.SetUtils; import org.junit.jupiter.api.BeforeEach; @@ -16,7 +17,7 @@ import org.junit.jupiter.api.Test; class CustomDataPermissionCheckerTest { private final ISysDeptService deptService = mock(ISysDeptService.class); - public LoginUser loginUser = mock(LoginUser.class); + public WebLoginUser loginUser = mock(WebLoginUser.class); @BeforeEach public void mockBefore() { diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionCheckerTest.java b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/DeptTreeDataPermissionCheckerTest.java similarity index 80% rename from agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionCheckerTest.java rename to agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/DeptTreeDataPermissionCheckerTest.java index 72624e0..088c9e5 100644 --- a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/DeptTreeDataPermissionCheckerTest.java +++ b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/DeptTreeDataPermissionCheckerTest.java @@ -1,4 +1,4 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -6,9 +6,10 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.admin.customize.service.permission.model.checker.DeptTreeDataPermissionChecker; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -18,7 +19,7 @@ class DeptTreeDataPermissionCheckerTest { private final ISysDeptService deptService = mock(ISysDeptService.class); - public LoginUser loginUser = mock(LoginUser.class); + public WebLoginUser loginUser = mock(WebLoginUser.class); @BeforeEach public void mockBefore() { @@ -30,7 +31,7 @@ class DeptTreeDataPermissionCheckerTest { DeptTreeDataPermissionChecker checker = new DeptTreeDataPermissionChecker(deptService); boolean check1 = checker.check(null, null); - boolean check2 = checker.check(new LoginUser(), null); + boolean check2 = checker.check(new WebLoginUser(), null); boolean check3 = checker.check(null, new DataCondition()); boolean check4 = checker.check(loginUser, new DataCondition()); @@ -61,7 +62,7 @@ class DeptTreeDataPermissionCheckerTest { void testCheckWhenIsSameDept() { DeptTreeDataPermissionChecker checker = new DeptTreeDataPermissionChecker(deptService); - Mockito.when(deptService.isChildOfTheDept(any(), any())).thenReturn(false); + when(deptService.isChildOfTheDept(any(), any())).thenReturn(false); when(loginUser.getDeptId()).thenReturn(1L); DataCondition dataCondition = new DataCondition(); dataCondition.setTargetDeptId(1L); @@ -76,7 +77,7 @@ class DeptTreeDataPermissionCheckerTest { void testCheckWhenFailed() { DeptTreeDataPermissionChecker checker = new DeptTreeDataPermissionChecker(deptService); - Mockito.when(deptService.isChildOfTheDept(any(), any())).thenReturn(false); + when(deptService.isChildOfTheDept(any(), any())).thenReturn(false); when(loginUser.getDeptId()).thenReturn(1L); DataCondition dataCondition = new DataCondition(); dataCondition.setTargetDeptId(2L); diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionCheckerTest.java b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/OnlySelfDataPermissionCheckerTest.java similarity index 73% rename from agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionCheckerTest.java rename to agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/OnlySelfDataPermissionCheckerTest.java index 54159dc..a7a2104 100644 --- a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/OnlySelfDataPermissionCheckerTest.java +++ b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/OnlySelfDataPermissionCheckerTest.java @@ -1,11 +1,12 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.admin.customize.service.permission.model.checker.OnlySelfDataPermissionChecker; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import org.junit.jupiter.api.Test; @@ -18,9 +19,9 @@ class OnlySelfDataPermissionCheckerTest { OnlySelfDataPermissionChecker checker = new OnlySelfDataPermissionChecker(deptService); boolean check1 = checker.check(null, null); - boolean check2 = checker.check(new LoginUser(), null); + boolean check2 = checker.check(new WebLoginUser(), null); boolean check3 = checker.check(null, new DataCondition()); - boolean check4 = checker.check(new LoginUser(), new DataCondition()); + boolean check4 = checker.check(new WebLoginUser(), new DataCondition()); assertFalse(check1); assertFalse(check2); @@ -31,7 +32,7 @@ class OnlySelfDataPermissionCheckerTest { @Test void testCheckWhenSameUserId() { OnlySelfDataPermissionChecker checker = new OnlySelfDataPermissionChecker(deptService); - LoginUser loginUser = new LoginUser(); + WebLoginUser loginUser = new WebLoginUser(); loginUser.setUserId(1L); DataCondition dataCondition = new DataCondition(); dataCondition.setTargetUserId(1L); @@ -45,7 +46,7 @@ class OnlySelfDataPermissionCheckerTest { @Test void testCheckWhenDifferentUserId() { OnlySelfDataPermissionChecker checker = new OnlySelfDataPermissionChecker(deptService); - LoginUser loginUser = new LoginUser(); + WebLoginUser loginUser = new WebLoginUser(); loginUser.setUserId(1L); DataCondition dataCondition = new DataCondition(); dataCondition.setTargetDeptId(2L); diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionCheckerTest.java b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/SingleDeptDataPermissionCheckerTest.java similarity index 81% rename from agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionCheckerTest.java rename to agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/SingleDeptDataPermissionCheckerTest.java index b4c765c..3c8477f 100644 --- a/agileboot-infrastructure/src/test/java/com/agileboot/infrastructure/web/domain/permission/checker/SingleDeptDataPermissionCheckerTest.java +++ b/agileboot-admin/src/test/java/com/agileboot/admin/customize/service/permission/SingleDeptDataPermissionCheckerTest.java @@ -1,13 +1,14 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; +package com.agileboot.admin.customize.service.permission; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.admin.customize.service.permission.model.checker.SingleDeptDataPermissionChecker; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; +import com.agileboot.admin.customize.service.permission.model.DataCondition; import com.agileboot.orm.system.service.ISysDeptService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,7 +17,7 @@ class SingleDeptDataPermissionCheckerTest { private final ISysDeptService deptService = mock(ISysDeptService.class); - public LoginUser loginUser = mock(LoginUser.class); + public WebLoginUser loginUser = mock(WebLoginUser.class); @BeforeEach public void mockBefore() { @@ -29,7 +30,7 @@ class SingleDeptDataPermissionCheckerTest { SingleDeptDataPermissionChecker checker = new SingleDeptDataPermissionChecker(deptService); boolean check1 = checker.check(null, null); - boolean check2 = checker.check(new LoginUser(), null); + boolean check2 = checker.check(new WebLoginUser(), null); boolean check3 = checker.check(null, new DataCondition()); boolean check4 = checker.check(loginUser, new DataCondition()); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/common/cache/CacheCenter.java b/agileboot-domain/src/main/java/com/agileboot/domain/common/cache/CacheCenter.java index b88a212..8559002 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/common/cache/CacheCenter.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/common/cache/CacheCenter.java @@ -5,7 +5,7 @@ import com.agileboot.infrastructure.cache.guava.AbstractGuavaCacheTemplate; import com.agileboot.infrastructure.cache.guava.GuavaCacheService; import com.agileboot.infrastructure.cache.redis.RedisCacheService; import com.agileboot.infrastructure.cache.redis.RedisCacheTemplate; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; import com.agileboot.orm.system.entity.SysDeptEntity; import com.agileboot.orm.system.entity.SysPostEntity; @@ -29,7 +29,7 @@ public class CacheCenter { public static RedisCacheTemplate captchaCache; - public static RedisCacheTemplate loginUserCache; + public static RedisCacheTemplate loginUserCache; public static RedisCacheTemplate userCache; @@ -51,7 +51,7 @@ public class CacheCenter { loginUserCache = redisCache.loginUserCache; userCache = redisCache.userCache; roleCache = redisCache.roleCache; - roleModelInfoCache = redisCache.roleModelInfoCache; +// roleModelInfoCache = redisCache.roleModelInfoCache; postCache = redisCache.postCache; } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/monitor/dto/OnlineUserDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/monitor/dto/OnlineUserDTO.java index 8b5c299..fe3bbef 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/monitor/dto/OnlineUserDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/monitor/dto/OnlineUserDTO.java @@ -1,7 +1,7 @@ package com.agileboot.domain.monitor.dto; import com.agileboot.domain.common.cache.CacheCenter; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.entity.SysDeptEntity; import lombok.Data; @@ -54,7 +54,7 @@ public class OnlineUserDTO { private Long loginTime; - public OnlineUserDTO(LoginUser user) { + public OnlineUserDTO(WebLoginUser user) { if (user == null) { return; } @@ -65,7 +65,7 @@ public class OnlineUserDTO { this.loginLocation = user.getLoginInfo().getLocation(); this.browser = user.getLoginInfo().getBrowser(); this.operationSystem = user.getLoginInfo().getOperationSystem(); - this.loginTime = user.getLoginTime(); + this.loginTime = user.getLoginInfo().getLoginTime(); SysDeptEntity deptEntity = CacheCenter.deptCache.get(user.getDeptId() + ""); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/system/menu/MenuApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/system/menu/MenuApplicationService.java index f7297ae..9f14a74 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/system/menu/MenuApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/system/menu/MenuApplicationService.java @@ -12,7 +12,7 @@ import com.agileboot.domain.system.menu.dto.RouterDTO; import com.agileboot.domain.system.menu.model.MenuModel; import com.agileboot.domain.system.menu.model.MenuModelFactory; import com.agileboot.domain.system.menu.query.MenuQuery; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.StatusEnum; import com.agileboot.orm.system.entity.SysMenuEntity; import com.agileboot.orm.system.service.ISysMenuService; @@ -51,7 +51,7 @@ public class MenuApplicationService { return new MenuDetailDTO(byId); } - public List> getDropdownList(LoginUser loginUser) { + public List> getDropdownList(WebLoginUser loginUser) { List menuEntityList = loginUser.isAdmin() ? menuService.list() : menuService.getMenuListByUserId(loginUser.getUserId()); @@ -116,7 +116,7 @@ public class MenuApplicationService { } - public List> buildMenuEntityTree(LoginUser loginUser) { + public List> buildMenuEntityTree(WebLoginUser loginUser) { List allMenus; if (loginUser.isAdmin()) { allMenus = menuService.list(); @@ -166,7 +166,7 @@ public class MenuApplicationService { } - public List getRouterTree(LoginUser loginUser) { + public List getRouterTree(WebLoginUser loginUser) { List> trees = buildMenuEntityTree(loginUser); return buildRouterTree(trees); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/system/user/UserApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/system/user/UserApplicationService.java index 8d8d250..4c24ed2 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/system/user/UserApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/system/user/UserApplicationService.java @@ -20,7 +20,7 @@ import com.agileboot.domain.system.user.dto.UserProfileDTO; import com.agileboot.domain.system.user.model.UserModel; import com.agileboot.domain.system.user.model.UserModelFactory; import com.agileboot.domain.system.user.query.SearchUserQuery; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.entity.SysPostEntity; import com.agileboot.orm.system.entity.SysRoleEntity; import com.agileboot.orm.system.entity.SysUserEntity; @@ -77,7 +77,7 @@ public class UserApplicationService { * * @return 当前登录用户信息 */ - public CurrentLoginUserDTO getLoginUserInfo(LoginUser loginUser) { + public CurrentLoginUserDTO getLoginUserInfo(WebLoginUser loginUser) { CurrentLoginUserDTO permissionDTO = new CurrentLoginUserDTO(); permissionDTO.setUserInfo(new UserDTO(CacheCenter.userCache.getObjectById(loginUser.getUserId()))); @@ -144,7 +144,7 @@ public class UserApplicationService { CacheCenter.userCache.delete(model.getUserId()); } - public void deleteUsers(LoginUser loginUser, BulkOperationCommand command) { + public void deleteUsers(WebLoginUser loginUser, BulkOperationCommand command) { for (Long id : command.getIds()) { UserModel userModel = userModelFactory.loadById(id); userModel.checkCanBeDelete(loginUser); @@ -152,7 +152,7 @@ public class UserApplicationService { } } - public void updatePasswordBySelf(LoginUser loginUser, UpdateUserPasswordCommand command) { + public void updatePasswordBySelf(WebLoginUser loginUser, UpdateUserPasswordCommand command) { UserModel userModel = userModelFactory.loadById(command.getUserId()); userModel.modifyPassword(command); userModel.updateById(); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/system/user/model/UserModel.java b/agileboot-domain/src/main/java/com/agileboot/domain/system/user/model/UserModel.java index c68acb1..8d8d876 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/system/user/model/UserModel.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/system/user/model/UserModel.java @@ -14,7 +14,7 @@ import com.agileboot.domain.system.user.command.UpdateProfileCommand; import com.agileboot.domain.system.user.command.UpdateUserCommand; import com.agileboot.domain.system.user.command.UpdateUserPasswordCommand; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.entity.SysUserEntity; import com.agileboot.orm.system.service.ISysUserService; import java.util.Objects; @@ -114,7 +114,7 @@ public class UserModel extends SysUserEntity { } } - public void checkCanBeDelete(LoginUser loginUser) { + public void checkCanBeDelete(WebLoginUser loginUser) { if (Objects.equals(getUserId(), loginUser.getUserId()) || this.getIsAdmin()) { throw new ApiException(ErrorCode.Business.USER_CURRENT_USER_CAN_NOT_BE_DELETE); diff --git a/agileboot-domain/src/test/java/com/agileboot/domain/system/user/model/UserModelTest.java b/agileboot-domain/src/test/java/com/agileboot/domain/system/user/model/UserModelTest.java index ccc6e4c..c700fc9 100644 --- a/agileboot-domain/src/test/java/com/agileboot/domain/system/user/model/UserModelTest.java +++ b/agileboot-domain/src/test/java/com/agileboot/domain/system/user/model/UserModelTest.java @@ -11,7 +11,7 @@ import com.agileboot.domain.system.post.model.PostModelFactory; import com.agileboot.domain.system.role.model.RoleModelFactory; import com.agileboot.domain.system.user.command.UpdateUserPasswordCommand; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.system.service.ISysUserService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -84,7 +84,7 @@ class UserModelTest { void testCheckCanBeDeleteWhenDeleteItself() { UserModel userModel = userModelFactory.create(); userModel.setUserId(USER_ID); - LoginUser loginUser = new LoginUser(); + WebLoginUser loginUser = new WebLoginUser(); loginUser.setUserId(USER_ID); ApiException exception = assertThrows(ApiException.class, () -> userModel.checkCanBeDelete(loginUser)); @@ -97,7 +97,7 @@ class UserModelTest { UserModel userModel = userModelFactory.create(); long adminId = 1L; userModel.setUserId(adminId); - LoginUser loginUser = new LoginUser(); + WebLoginUser loginUser = new WebLoginUser(); loginUser.setUserId(2L); ApiException exception = assertThrows(ApiException.class, () -> userModel.checkCanBeDelete(loginUser)); @@ -110,7 +110,7 @@ class UserModelTest { void testCheckCanBeDeleteWhenSuccessful() { UserModel userModel = userModelFactory.create(); userModel.setUserId(2L); - LoginUser loginUser = new LoginUser(); + WebLoginUser loginUser = new WebLoginUser(); loginUser.setUserId(ADMIN_USER_ID); Assertions.assertDoesNotThrow(() -> userModel.checkCanBeDelete(loginUser)); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/accessLog/OperationLogModel.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/accessLog/OperationLogModel.java index 78a27cf..88ce0b9 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/accessLog/OperationLogModel.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/accessLog/OperationLogModel.java @@ -6,9 +6,8 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.json.JSONUtil; import com.agileboot.common.utils.ServletHolderUtil; -import com.agileboot.infrastructure.annotations.accessLog.AccessLog; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.orm.common.enums.OperationStatusEnum; import com.agileboot.orm.common.enums.RequestMethodEnum; import com.agileboot.orm.common.enums.util.BasicEnumUtil; @@ -38,7 +37,7 @@ public class OperationLogModel extends SysOperationLogEntity { // 获取当前的用户 String ip = ServletUtil.getClientIP(request); setOperatorIp(ip); - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); if (loginUser != null) { this.setUsername(loginUser.getUsername()); } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/ratelimit/RateLimit.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/ratelimit/RateLimit.java index 2aa9778..7a46517 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/ratelimit/RateLimit.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/ratelimit/RateLimit.java @@ -5,7 +5,7 @@ import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; import com.agileboot.common.utils.ServletHolderUtil; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -77,7 +77,7 @@ public @interface RateLimit { WEB_USER { @Override public String generateCombinedKey(RateLimit rateLimiter) { - LoginUser loginUser = AuthenticationUtils.getWebLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getWebLoginUser(); if (loginUser == null) { throw new ApiException(ErrorCode.Client.COMMON_NO_AUTHORIZATION); } @@ -91,7 +91,7 @@ public @interface RateLimit { APP_USER { @Override public String generateCombinedKey(RateLimit rateLimiter) { - LoginUser loginUser = AuthenticationUtils.getAppLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getAppLoginUser(); if (loginUser == null) { throw new ApiException(ErrorCode.Client.COMMON_NO_AUTHORIZATION); } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/unrepeatable/Unrepeatable.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/unrepeatable/Unrepeatable.java index 4b248f6..88d0720 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/unrepeatable/Unrepeatable.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/annotations/unrepeatable/Unrepeatable.java @@ -2,7 +2,7 @@ package com.agileboot.infrastructure.annotations.unrepeatable; import cn.hutool.core.util.StrUtil; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; @@ -46,7 +46,7 @@ public @interface Unrepeatable { String username; try { - LoginUser loginUser = AuthenticationUtils.getAppLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getAppLoginUser(); username = loginUser.getUsername(); } catch (Exception e) { username = NO_LOGIN; @@ -69,7 +69,7 @@ public @interface Unrepeatable { String username; try { - LoginUser loginUser = AuthenticationUtils.getWebLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getWebLoginUser(); username = loginUser.getUsername(); } catch (Exception e) { username = NO_LOGIN; diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/redis/RedisCacheService.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/redis/RedisCacheService.java index a15d69e..d8eab1a 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/redis/RedisCacheService.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/redis/RedisCacheService.java @@ -2,9 +2,8 @@ package com.agileboot.infrastructure.cache.redis; import cn.hutool.extra.spring.SpringUtil; import com.agileboot.infrastructure.cache.RedisUtil; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.agileboot.infrastructure.web.domain.login.RoleInfo; -import com.agileboot.infrastructure.web.service.UserDetailsServiceImpl; import com.agileboot.orm.system.entity.SysPostEntity; import com.agileboot.orm.system.entity.SysRoleEntity; import com.agileboot.orm.system.entity.SysUserEntity; @@ -15,6 +14,7 @@ import java.io.Serializable; import javax.annotation.PostConstruct; import lombok.NonNull; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Component; /** @@ -28,13 +28,13 @@ public class RedisCacheService { private RedisUtil redisUtil; public RedisCacheTemplate captchaCache; - public RedisCacheTemplate loginUserCache; + public RedisCacheTemplate loginUserCache; public RedisCacheTemplate userCache; public RedisCacheTemplate roleCache; public RedisCacheTemplate postCache; - public RedisCacheTemplate roleModelInfoCache; +// public RedisCacheTemplate roleModelInfoCache; @PostConstruct public void init() { @@ -59,14 +59,14 @@ public class RedisCacheService { } }; - roleModelInfoCache = new RedisCacheTemplate(redisUtil, CacheKeyEnum.ROLE_MODEL_INFO_KEY) { - @Override - public RoleInfo getObjectFromDb(Object id) { - UserDetailsServiceImpl userDetailsService = SpringUtil.getBean(UserDetailsServiceImpl.class); - return userDetailsService.getRoleInfo((Long) id); - } - - }; +// roleModelInfoCache = new RedisCacheTemplate(redisUtil, CacheKeyEnum.ROLE_MODEL_INFO_KEY) { +// @Override +// public RoleInfo getObjectFromDb(Object id) { +// UserDetailsService userDetailsService = SpringUtil.getBean(UserDetailsService.class); +// return userDetailsService.getRoleInfo((Long) id); +// } +// +// }; postCache = new RedisCacheTemplate(redisUtil, CacheKeyEnum.POST_ENTITY_KEY) { @Override diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CustomMetaObjectHandler.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CustomMetaObjectHandler.java index 3316925..cb106fa 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CustomMetaObjectHandler.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CustomMetaObjectHandler.java @@ -1,7 +1,7 @@ package com.agileboot.infrastructure.mybatisplus; import com.agileboot.infrastructure.security.AuthenticationUtils; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import java.util.Date; import lombok.extern.slf4j.Slf4j; @@ -49,7 +49,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler { public Long getUserIdSafely() { Long userId = null; try { - LoginUser loginUser = AuthenticationUtils.getLoginUser(); + WebLoginUser loginUser = AuthenticationUtils.getLoginUser(); userId = loginUser.getUserId(); } catch (Exception e) { log.warn("can not find user in current thread."); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/security/AuthenticationUtils.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/security/AuthenticationUtils.java index 1c1345c..9aaf9d0 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/security/AuthenticationUtils.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/security/AuthenticationUtils.java @@ -3,7 +3,7 @@ package com.agileboot.infrastructure.security; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; -import com.agileboot.infrastructure.web.domain.login.LoginUser; +import com.agileboot.infrastructure.web.domain.login.WebLoginUser; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @@ -32,9 +32,9 @@ public class AuthenticationUtils { * 获取用户 **/ @Deprecated - public static LoginUser getLoginUser() { + public static WebLoginUser getLoginUser() { try { - return (LoginUser) getAuthentication().getPrincipal(); + return (WebLoginUser) getAuthentication().getPrincipal(); } catch (Exception e) { throw new ApiException(ErrorCode.Business.USER_FAIL_TO_GET_USER_INFO); } @@ -43,9 +43,9 @@ public class AuthenticationUtils { /** * 获取App用户 **/ - public static LoginUser getAppLoginUser() { + public static WebLoginUser getAppLoginUser() { try { - return (LoginUser) getAuthentication().getPrincipal(); + return (WebLoginUser) getAuthentication().getPrincipal(); } catch (Exception e) { throw new ApiException(ErrorCode.Business.USER_FAIL_TO_GET_USER_INFO); } @@ -54,9 +54,9 @@ public class AuthenticationUtils { /** * 获取App用户 **/ - public static LoginUser getWebLoginUser() { + public static WebLoginUser getWebLoginUser() { try { - return (LoginUser) getAuthentication().getPrincipal(); + return (WebLoginUser) getAuthentication().getPrincipal(); } catch (Exception e) { throw new ApiException(ErrorCode.Business.USER_FAIL_TO_GET_USER_INFO); } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginUser.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/BaseLoginUser.java similarity index 70% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginUser.java rename to agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/BaseLoginUser.java index 409bc91..ccf11ac 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginUser.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/BaseLoginUser.java @@ -20,67 +20,38 @@ import org.springframework.security.core.userdetails.UserDetails; */ @Data @NoArgsConstructor -public class LoginUser implements UserDetails { +public class BaseLoginUser implements UserDetails { private static final long serialVersionUID = 1L; - private Long userId; + protected Long userId; /** * 用户唯一标识,缓存的key */ - private String cachedKey; + protected String cachedKey; - private boolean isAdmin; + protected String username; - private String username; - - private String password; + protected String password; /** * 登录信息 */ - private final LoginInfo loginInfo = new LoginInfo(); - - /** - * 登录时间 - */ - private Long loginTime; - - /** - * 当超过这个时间 则触发刷新缓存时间 - */ - private Long autoRefreshCacheTime; + protected final LoginInfo loginInfo = new LoginInfo(); - public LoginUser(Long userId, Boolean isAdmin, String username, String password) { + public BaseLoginUser(Long userId, String username, String password) { this.userId = userId; - this.isAdmin = isAdmin; this.username = username; this.password = password; } - public RoleInfo getRoleInfo() { - return SpringUtil.getBean(RedisCacheService.class).roleModelInfoCache.getObjectById(getRoleId()); - } - - public Long getRoleId() { - if (isAdmin()) { - return RoleInfo.ADMIN_ROLE_ID; - } else { - return SpringUtil.getBean(RedisCacheService.class).userCache.getObjectById(userId).getRoleId(); - } - } - - public Long getDeptId() { - return SpringUtil.getBean(RedisCacheService.class).userCache.getObjectById(userId).getDeptId(); - } - /** * 设置用户代理信息 * */ - public void fillUserAgent() { + public void fillLoginInfo() { UserAgent userAgent = UserAgent.parseUserAgentString(ServletHolderUtil.getRequest().getHeader("User-Agent")); String ip = ServletUtil.getClientIP(ServletHolderUtil.getRequest()); @@ -88,6 +59,7 @@ public class LoginUser implements UserDetails { this.getLoginInfo().setLocation(IpRegionUtil.getBriefLocationByIp(ip)); this.getLoginInfo().setBrowser(userAgent.getBrowser().getName()); this.getLoginInfo().setOperationSystem(userAgent.getOperatingSystem().getName()); + this.getLoginInfo().setLoginTime(System.currentTimeMillis()); } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginInfo.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginInfo.java index ef30c3f..515f0a1 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginInfo.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/LoginInfo.java @@ -28,4 +28,9 @@ public class LoginInfo { */ private String operationSystem; + /** + * 登录时间 + */ + private Long loginTime; + } diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/WebLoginUser.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/WebLoginUser.java new file mode 100644 index 0000000..8f79923 --- /dev/null +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/login/WebLoginUser.java @@ -0,0 +1,53 @@ +package com.agileboot.infrastructure.web.domain.login; + +import cn.hutool.extra.spring.SpringUtil; +import com.agileboot.infrastructure.cache.redis.RedisCacheService; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 登录用户身份权限 + * @author valarchie + */ +@Data +@NoArgsConstructor +public class WebLoginUser extends BaseLoginUser { + + private static final long serialVersionUID = 1L; + + private boolean isAdmin; + + private Long deptId; + + private RoleInfo roleInfo; + + /** + * 当超过这个时间 则触发刷新缓存时间 + */ + private Long autoRefreshCacheTime; + + + public WebLoginUser(Long userId, Boolean isAdmin, String username, String password, RoleInfo roleInfo, + Long deptId) { + this.userId = userId; + this.isAdmin = isAdmin; + this.username = username; + this.password = password; + this.roleInfo = roleInfo; + this.deptId = deptId; + } + + public RoleInfo getRoleInfo() { + return roleInfo; + } + + public Long getRoleId() { + return getRoleInfo().getRoleId(); + } + + public Long getDeptId() { + return deptId; + } + + +} diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/AllDataPermissionChecker.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/AllDataPermissionChecker.java deleted file mode 100644 index e68f31d..0000000 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/AllDataPermissionChecker.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; - -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; -import com.agileboot.orm.system.service.ISysDeptService; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 数据权限测试接口 - * @author valarchie - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class AllDataPermissionChecker extends AbstractDataPermissionChecker { - - private ISysDeptService deptService; - - - @Override - public boolean check(LoginUser loginUser, DataCondition condition) { - return true; - } -} diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DefaultDataPermissionChecker.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DefaultDataPermissionChecker.java deleted file mode 100644 index 285bfe2..0000000 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/web/domain/permission/checker/DefaultDataPermissionChecker.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.agileboot.infrastructure.web.domain.permission.checker; - -import com.agileboot.infrastructure.web.domain.login.LoginUser; -import com.agileboot.infrastructure.web.domain.permission.AbstractDataPermissionChecker; -import com.agileboot.infrastructure.web.domain.permission.DataCondition; -import com.agileboot.orm.system.service.ISysDeptService; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 数据权限测试接口 - * @author valarchie - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class DefaultDataPermissionChecker extends AbstractDataPermissionChecker { - - private ISysDeptService deptService; - - @Override - public boolean check(LoginUser loginUser, DataCondition condition) { - return false; - } - -}