From ca42493bad0d8bc9f9eeb008b15b69bde7d84cf8 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 12 Nov 2023 15:42:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=B3=BB=E7=BB=9F=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lihongjie/coal/filter/AuthFilter.java | 13 ++++++++++++- .../cn/lihongjie/coal/role/entity/RoleEntity.java | 4 ++++ .../coal/role/repository/RoleRepository.java | 7 ++++++- .../cn/lihongjie/coal/role/service/RoleService.java | 7 +++++++ .../cn/lihongjie/coal/user/service/UserService.java | 6 ++++-- 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java index b2d0d7d5..bf0f370f 100644 --- a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java +++ b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java @@ -5,6 +5,8 @@ import cn.lihongjie.coal.common.Ctx; import cn.lihongjie.coal.exception.BizException; import cn.lihongjie.coal.resource.entity.ResourceEntity; import cn.lihongjie.coal.resource.service.ResourceService; +import cn.lihongjie.coal.role.entity.RoleEntity; +import cn.lihongjie.coal.role.service.RoleService; import cn.lihongjie.coal.session.SessionService; import cn.lihongjie.coal.spring.config.SystemConfig; import cn.lihongjie.coal.user.entity.UserEntity; @@ -19,6 +21,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.SneakyThrows; import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.slf4j.MDC; @@ -37,8 +40,10 @@ import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.pattern.PathPatternParser; import java.io.IOException; +import java.util.ArrayList; import java.util.Optional; import java.util.function.Consumer; +import java.util.stream.Stream; @Component @Order(0) @@ -53,6 +58,8 @@ public class AuthFilter extends OncePerRequestFilter { @Autowired PlatformTransactionManager transactionManager; @Autowired ObjectMapper objectMapper; + @Autowired RoleService roleService; + @Value("${server.servlet.context-path}") private String contextPath; @@ -140,7 +147,11 @@ public class AuthFilter extends OncePerRequestFilter { MDC.put("user", user.getUsername()); Optional userResource = - user.getRoles().stream() + Stream.concat( + ObjectUtils.defaultIfNull( + user.getRoles(), new ArrayList()) + .stream(), + roleService.getDefaultRoles().stream()) .flatMap(x -> x.getPermissions().stream()) .flatMap(x -> x.getResources().stream()) .filter(x -> StringUtils.equals(x.getId(), resource.get().getId())) diff --git a/src/main/java/cn/lihongjie/coal/role/entity/RoleEntity.java b/src/main/java/cn/lihongjie/coal/role/entity/RoleEntity.java index dccf9510..3443d46e 100644 --- a/src/main/java/cn/lihongjie/coal/role/entity/RoleEntity.java +++ b/src/main/java/cn/lihongjie/coal/role/entity/RoleEntity.java @@ -11,6 +11,7 @@ import jakarta.persistence.ManyToMany; import lombok.Data; import org.hibernate.annotations.Cache; +import org.hibernate.annotations.Comment; import java.util.List; @@ -19,6 +20,9 @@ import java.util.List; @Cacheable public class RoleEntity extends OrgCommonEntity { + @Comment("是否为系统默认角色") + private Boolean isSysDefault = false; + @ManyToMany(mappedBy = "roles") @Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE) private List users; diff --git a/src/main/java/cn/lihongjie/coal/role/repository/RoleRepository.java b/src/main/java/cn/lihongjie/coal/role/repository/RoleRepository.java index 631b0306..b3ef6ec1 100644 --- a/src/main/java/cn/lihongjie/coal/role/repository/RoleRepository.java +++ b/src/main/java/cn/lihongjie/coal/role/repository/RoleRepository.java @@ -5,5 +5,10 @@ import cn.lihongjie.coal.role.entity.RoleEntity; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface RoleRepository extends BaseRepository {} +public interface RoleRepository extends BaseRepository { + + List findAllByIsSysDefault(Boolean isSysDefault); +} diff --git a/src/main/java/cn/lihongjie/coal/role/service/RoleService.java b/src/main/java/cn/lihongjie/coal/role/service/RoleService.java index add40c93..f54c1554 100644 --- a/src/main/java/cn/lihongjie/coal/role/service/RoleService.java +++ b/src/main/java/cn/lihongjie/coal/role/service/RoleService.java @@ -21,6 +21,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; +import java.util.List; + @Service @Slf4j public class RoleService extends BaseService { @@ -74,4 +76,9 @@ public class RoleService extends BaseService { return page.map(this.mapper::toDto); } + + public List getDefaultRoles() { + + return repository.findAllByIsSysDefault(true); + } } diff --git a/src/main/java/cn/lihongjie/coal/user/service/UserService.java b/src/main/java/cn/lihongjie/coal/user/service/UserService.java index 4113aeea..87642c65 100644 --- a/src/main/java/cn/lihongjie/coal/user/service/UserService.java +++ b/src/main/java/cn/lihongjie/coal/user/service/UserService.java @@ -9,6 +9,7 @@ import cn.lihongjie.coal.organization.entity.OrganizationEntity; import cn.lihongjie.coal.resource.dto.ResourceDto; import cn.lihongjie.coal.resource.mapper.ResourceMapper; import cn.lihongjie.coal.resource.service.ResourceService; +import cn.lihongjie.coal.role.service.RoleService; import cn.lihongjie.coal.user.dto.ChangeUserPwdDto; import cn.lihongjie.coal.user.dto.CreateUserDto; import cn.lihongjie.coal.user.dto.UpdateUserDto; @@ -50,6 +51,9 @@ public class UserService extends BaseService { @Autowired UserMapper mapper; @Autowired ConversionService conversionService; + + @Autowired RoleService roleService; + private Pbkdf2PasswordEncoder passwordEncoder; @PostConstruct @@ -69,7 +73,6 @@ public class UserService extends BaseService { UserEntity entity = mapper.toEntity(request); stopWatch.start("save"); - this.repository.save(entity); stopWatch.stop(); @@ -84,7 +87,6 @@ public class UserService extends BaseService { public UserDto update(UpdateUserDto request) { UserEntity user = this.repository.get(request.getId()); this.mapper.updateEntity(user, request); - this.repository.save(user); return getById(user.getId()); }