diff --git a/auh-api/Dockerfile b/auh-api/Dockerfile new file mode 100644 index 0000000..0039cda --- /dev/null +++ b/auh-api/Dockerfile @@ -0,0 +1,35 @@ +FROM openjdk:24-ea-17-jdk-oraclelinux9 +MAINTAINER server + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/server + +# 复制jar包 +COPY target/*.jar /home/server/app.jar + +# 程序内部挂在目录 +VOLUME /usr/bin/docker +VOLUME ["/var/run/docker.sock"] +VOLUME /etc/docker/daemon.json +VOLUME ["/www/root/backup"] +VOLUME ["/www/root/server"] + +# 启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/server/app.jar"] + +#暴露 8000 端口 +EXPOSE 8000 + +# 生产环境 +# mvn clean package -Pprod -DskipTests + +# 测试环境 +# mvn clean package -Ptest -DskipTests + diff --git a/auh-api/src/main/java/cn/bunny/services/controller/system/PermissionController.java b/auh-api/src/main/java/cn/bunny/services/controller/system/PermissionController.java index c689da1..06fa9a0 100644 --- a/auh-api/src/main/java/cn/bunny/services/controller/system/PermissionController.java +++ b/auh-api/src/main/java/cn/bunny/services/controller/system/PermissionController.java @@ -84,7 +84,7 @@ public class PermissionController { @PutMapping("file/import") public Result importPermission(@RequestParam(value = "file") MultipartFile file, String type) { permissionService.importPermission(file, type); - return Result.success(ResultCodeEnum.SUCCESS); + return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } @Operation(summary = "获取所有权限", description = "获取所有权限", tags = {"permission::query"}) diff --git a/auh-api/src/main/java/cn/bunny/services/controller/system/RoleController.java b/auh-api/src/main/java/cn/bunny/services/controller/system/RoleController.java index 9af45db..6f398e5 100644 --- a/auh-api/src/main/java/cn/bunny/services/controller/system/RoleController.java +++ b/auh-api/src/main/java/cn/bunny/services/controller/system/RoleController.java @@ -88,6 +88,6 @@ public class RoleController { @PutMapping("file/import") public Result updateRoleByFile(MultipartFile file) { roleService.updateRoleByFile(file); - return Result.success(); + return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } } diff --git a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSend.java b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSend.java index e3c6e35..b6912b2 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSend.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSend.java @@ -4,7 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.web.multipart.MultipartFile; @@ -16,7 +15,6 @@ import java.util.List; * 邮件发送对象 */ @Data -@Builder @AllArgsConstructor @NoArgsConstructor @Schema(name = "EmailSend", title = "邮件发送表单", description = "邮件发送表单") diff --git a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSendInit.java b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSendInit.java index e57a699..d41ee13 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSendInit.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/email/EmailSendInit.java @@ -4,12 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @AllArgsConstructor @NoArgsConstructor @Schema(name = "EmailSendInit", title = "邮件发送初始化", description = "邮件发送初始化") diff --git a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/excel/PermissionExcel.java b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/excel/PermissionExcel.java index b71d351..9bddcbd 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/excel/PermissionExcel.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/common/model/dto/excel/PermissionExcel.java @@ -7,7 +7,6 @@ import com.alibaba.excel.enums.BooleanEnum; import com.alibaba.excel.enums.poi.FillPatternTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -15,7 +14,6 @@ import java.util.ArrayList; import java.util.List; @Data -@Builder @AllArgsConstructor @NoArgsConstructor @HeadFontStyle(fontHeightInPoints = 22, color = 14, bold = BooleanEnum.TRUE) diff --git a/auth-core/src/main/java/cn/bunny/services/domain/common/model/vo/LoginVo.java b/auth-core/src/main/java/cn/bunny/services/domain/common/model/vo/LoginVo.java index 4f7cacb..bde2871 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/common/model/vo/LoginVo.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/common/model/vo/LoginVo.java @@ -1,7 +1,10 @@ package cn.bunny.services.domain.common.model.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.List; @@ -13,7 +16,6 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "LoginVo对象", title = "登录成功返回内容", description = "登录成功返回内容") public class LoginVo extends BaseVo { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/email/dto/EmailUsersAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/email/dto/EmailUsersAddDto.java index d223e0e..8ada0d0 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/email/dto/EmailUsersAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/email/dto/EmailUsersAddDto.java @@ -4,14 +4,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "EmailUsersAddDto对象", title = "添加邮箱用户发送配置", description = "添加邮箱用户发送配置") public class EmailUsersAddDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/files/dto/FilesAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/files/dto/FilesAddDto.java index 0ec37f0..264a4da 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/files/dto/FilesAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/files/dto/FilesAddDto.java @@ -5,7 +5,6 @@ import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.web.multipart.MultipartFile; @@ -15,7 +14,6 @@ import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "FilesAddDto对象", title = "添加文件", description = "添加文件") public class FilesAddDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeAddDto.java index 8daa3dd..436e449 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeAddDto.java @@ -3,14 +3,12 @@ package cn.bunny.services.domain.system.i18n.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "I18nTypeAddDto对象", title = "多语言类型添加", description = "多语言类型添加内容") public class I18nTypeAddDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeUpdateDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeUpdateDto.java index 9a8aba3..e6fc8fd 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeUpdateDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/i18n/dto/I18nTypeUpdateDto.java @@ -4,14 +4,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "I18nTypeUpdateDto对象", title = "多语言类型更新", description = "多语言类型更新内容") public class I18nTypeUpdateDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageAddDto.java index 5968e2f..70afc9d 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageAddDto.java @@ -4,16 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.ArrayList; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "MessageAddDto对象", title = "添加系统消息", description = "添加系统消息") public class MessageAddDto { @@ -22,7 +21,7 @@ public class MessageAddDto { private String title; @Schema(name = "receivedUserIds", title = "接收人用户ID") - private List receivedUserIds; + private List receivedUserIds = new ArrayList<>(); @Schema(name = "sendUserId", title = "发送人用户ID") private Long sendUserId; diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageTypeAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageTypeAddDto.java index c141441..2e72ecc 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageTypeAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/message/dto/MessageTypeAddDto.java @@ -3,14 +3,12 @@ package cn.bunny.services.domain.system.message.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "MessageTypeAddDto对象", title = "添加系统消息类型", description = "添加系统消息类型") public class MessageTypeAddDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserAddDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserAddDto.java index be8800d..04dbada 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserAddDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserAddDto.java @@ -5,14 +5,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "AdminUserAddDto对象", title = "添加用户", description = "用户管理") public class AdminUserAddDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserUpdateByLocalUserDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserUpdateByLocalUserDto.java index b12aa3d..bb2c08d 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserUpdateByLocalUserDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/AdminUserUpdateByLocalUserDto.java @@ -5,14 +5,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "AdminUserUpdateByLocalUserDto对象", title = "更新本地用户信息", description = "更新本地用户信息") public class AdminUserUpdateByLocalUserDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/LoginDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/LoginDto.java index 3265300..aade463 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/LoginDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/LoginDto.java @@ -5,14 +5,12 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "LoginDto", title = "登录表单内容", description = "登录表单内容") public class LoginDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/RefreshTokenDto.java b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/RefreshTokenDto.java index 74ec676..97669ea 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/RefreshTokenDto.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/system/dto/user/RefreshTokenDto.java @@ -4,14 +4,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "RefreshTokenDto对象", title = "登录成功返回内容", description = "登录成功返回内容") public class RefreshTokenDto { diff --git a/auth-core/src/main/java/cn/bunny/services/domain/system/system/vo/router/RouterManageVo.java b/auth-core/src/main/java/cn/bunny/services/domain/system/system/vo/router/RouterManageVo.java index a64abc7..85ba1de 100644 --- a/auth-core/src/main/java/cn/bunny/services/domain/system/system/vo/router/RouterManageVo.java +++ b/auth-core/src/main/java/cn/bunny/services/domain/system/system/vo/router/RouterManageVo.java @@ -7,7 +7,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.List; @@ -16,7 +19,6 @@ import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor -@Builder @Schema(name = "RouterControllerVo对象", title = "管理员用户看到菜单内容", description = "管理员用户管理菜单") public class RouterManageVo extends BaseUserVo { diff --git a/generator-code/src/main/java/cn/bunny/dao/dto/VmsArgumentDto.java b/generator-code/src/main/java/cn/bunny/dao/dto/VmsArgumentDto.java index d096a44..58c894e 100644 --- a/generator-code/src/main/java/cn/bunny/dao/dto/VmsArgumentDto.java +++ b/generator-code/src/main/java/cn/bunny/dao/dto/VmsArgumentDto.java @@ -4,14 +4,12 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data -@Builder @AllArgsConstructor @NoArgsConstructor public class VmsArgumentDto { diff --git a/service/src/main/java/cn/bunny/services/security/service/CustomAuthorizationManagerServiceImpl.java b/service/src/main/java/cn/bunny/services/security/service/CustomAuthorizationManagerServiceImpl.java index b2d724d..d0b2549 100644 --- a/service/src/main/java/cn/bunny/services/security/service/CustomAuthorizationManagerServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/security/service/CustomAuthorizationManagerServiceImpl.java @@ -7,22 +7,27 @@ import cn.bunny.services.domain.common.model.vo.result.ResultCodeEnum; import cn.bunny.services.security.exception.CustomAuthenticationException; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; -import lombok.extern.slf4j.Slf4j; import org.springframework.security.authorization.AuthorizationDecision; import org.springframework.security.authorization.AuthorizationManager; import org.springframework.security.core.Authentication; import org.springframework.security.web.access.intercept.RequestAuthorizationContext; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import java.util.function.Supplier; /** - * 自定义权限判断 - * 判断用户有哪些权限 + * 自定义授权管理器服务实现 + * + *

负责处理API请求的授权决策,主要功能:

+ *
    + *
  1. 验证请求Token的有效性
  2. + *
  3. 检查用户状态(是否禁用)
  4. + *
  5. 设置当前请求上下文信息
  6. + *
  7. 执行权限检查
  8. + *
*/ -@Component -@Slf4j +@Service public class CustomAuthorizationManagerServiceImpl implements AuthorizationManager { @Resource @@ -32,11 +37,17 @@ public class CustomAuthorizationManagerServiceImpl implements AuthorizationManag private PermissionCheckService permissionCheckService; /** - * 检查请求的Token是否携带,并判断是否过期 + * 授权决策主方法 + *
    + *
  • Token验证失败
  • + *
  • 用户状态异常
  • + *
  • 权限检查失败
  • + *
* - * @param authentication Supplier - * @param context RequestAuthorizationContext - * @return AuthorizationDecision + * @param authentication 认证信息提供者 + * @param context 请求授权上下文 + * @return 授权决策结果(允许/拒绝) + * @throws CustomAuthenticationException 当出现以下情况时抛出: */ @Override public AuthorizationDecision check(Supplier authentication, RequestAuthorizationContext context) { @@ -59,6 +70,12 @@ public class CustomAuthorizationManagerServiceImpl implements AuthorizationManag return new AuthorizationDecision(hasPermission); } + /** + * 验证用户状态 + * + * @param loginVo 用户登录信息 + * @throws CustomAuthenticationException 当用户状态异常时抛出 + */ private void validateUserStatus(LoginVo loginVo) { // 登录信息为空 if (loginVo == null) { @@ -71,3 +88,4 @@ public class CustomAuthorizationManagerServiceImpl implements AuthorizationManag } } } +