添加系统默认角色

This commit is contained in:
2023-11-12 15:42:28 +08:00
parent ec40926827
commit ca42493bad
5 changed files with 33 additions and 4 deletions

View File

@@ -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<ResourceEntity> userResource =
user.getRoles().stream()
Stream.concat(
ObjectUtils.defaultIfNull(
user.getRoles(), new ArrayList<RoleEntity>())
.stream(),
roleService.getDefaultRoles().stream())
.flatMap(x -> x.getPermissions().stream())
.flatMap(x -> x.getResources().stream())
.filter(x -> StringUtils.equals(x.getId(), resource.get().getId()))

View File

@@ -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<UserEntity> users;

View File

@@ -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<RoleEntity> {}
public interface RoleRepository extends BaseRepository<RoleEntity> {
List<RoleEntity> findAllByIsSysDefault(Boolean isSysDefault);
}

View File

@@ -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<RoleEntity, RoleRepository> {
@@ -74,4 +76,9 @@ public class RoleService extends BaseService<RoleEntity, RoleRepository> {
return page.map(this.mapper::toDto);
}
public List<RoleEntity> getDefaultRoles() {
return repository.findAllByIsSysDefault(true);
}
}

View File

@@ -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<UserEntity, UserRepository> {
@Autowired UserMapper mapper;
@Autowired ConversionService conversionService;
@Autowired RoleService roleService;
private Pbkdf2PasswordEncoder passwordEncoder;
@PostConstruct
@@ -69,7 +73,6 @@ public class UserService extends BaseService<UserEntity, UserRepository> {
UserEntity entity = mapper.toEntity(request);
stopWatch.start("save");
this.repository.save(entity);
stopWatch.stop();
@@ -84,7 +87,6 @@ public class UserService extends BaseService<UserEntity, UserRepository> {
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());
}