diff --git a/auth-common/pom.xml b/auth-common/pom.xml index 737f179..1c64e6b 100644 --- a/auth-common/pom.xml +++ b/auth-common/pom.xml @@ -77,5 +77,25 @@ com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter + + + org.webjars + bootstrap + + + org.webjars + font-awesome + + + org.webjars + jquery + + + + org.jetbrains + annotations + 13.0 + compile + diff --git a/auth-common/src/main/java/com/auth/common/model/common/result/PageResult.java b/auth-common/src/main/java/com/auth/common/model/common/result/PageResult.java index b16e7c7..669321f 100644 --- a/auth-common/src/main/java/com/auth/common/model/common/result/PageResult.java +++ b/auth-common/src/main/java/com/auth/common/model/common/result/PageResult.java @@ -16,7 +16,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "PageResult 对象", title = "分页返回结果", description = "分页返回结果") +@Schema(name = "分页返回结果", title = "分页返回结果", description = "分页返回结果") public class PageResult implements Serializable { @Schema(name = "pageNo", title = "当前页") diff --git a/auth-common/src/main/java/com/auth/common/model/common/result/Result.java b/auth-common/src/main/java/com/auth/common/model/common/result/Result.java index dc355b3..7b1c6d6 100644 --- a/auth-common/src/main/java/com/auth/common/model/common/result/Result.java +++ b/auth-common/src/main/java/com/auth/common/model/common/result/Result.java @@ -5,6 +5,9 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.List; + @Data @AllArgsConstructor @NoArgsConstructor @@ -15,6 +18,8 @@ public class Result { private String message; // 返回数据 private T data; + // 权限范围 + private List auths; /** * 自定义返回体 @@ -28,17 +33,60 @@ public class Result { return result; } + /** + * 自定义返回体 + * + * @param data 返回体 + * @param auths 权限范围 + * @return Result + */ + protected static Result build(T data, List auths) { + Result result = new Result<>(); + result.setData(data); + result.setAuths(auths); + return result; + } + + /** + * 自定义返回体,使用ResultCodeEnum构建 + * + * @param data 返回体 + * @param codeEnum 返回状态码 + * @return {@link Result} + */ + public static Result build(T data, ResultCodeEnum codeEnum) { + Result result = build(data); + result.setCode(codeEnum.getCode()); + result.setMessage(codeEnum.getMessage()); + return result; + } + + /** + * 自定义返回体,使用ResultCodeEnum构建 + * + * @param data 返回体 + * @param codeEnum 返回状态码 + * @return {@link Result} + */ + public static Result build(T data, List auths, ResultCodeEnum codeEnum) { + Result result = build(data); + result.setCode(codeEnum.getCode()); + result.setMessage(codeEnum.getMessage()); + result.setAuths(auths); + return result; + } + /** * 自定义返回体,使用ResultCodeEnum构建 * - * @param body 返回体 * @param codeEnum 返回状态码 * @return Result */ - public static Result build(T body, ResultCodeEnum codeEnum) { - Result result = build(body); + public static Result build(List auths, ResultCodeEnum codeEnum) { + Result result = build(null); result.setCode(codeEnum.getCode()); result.setMessage(codeEnum.getMessage()); + result.setAuths(auths); return result; } @@ -48,13 +96,15 @@ public class Result { * @param body 返回体 * @param code 返回状态码 * @param message 返回消息 - * @return Result + * @param auths 权限范围 + * @return {@link Result} */ - public static Result build(T body, Integer code, String message) { + public static Result build(T body, Integer code, String message, List auths) { Result result = build(body); result.setCode(code); result.setMessage(message); result.setData(null); + result.setAuths(auths); return result; } @@ -76,6 +126,16 @@ public class Result { return build(data, ResultCodeEnum.SUCCESS); } + /** + * 操作成功 + * + * @param data baseCategory1List + * @param auths 权限范围 + */ + public static Result success(T data, List auths) { + return build(data, auths, ResultCodeEnum.SUCCESS); + } + /** * 操作成功-状态码 * @@ -86,13 +146,32 @@ public class Result { } /** - * 操作成功-自定义返回数据和状态码 + * 操作成功-状态码 * - * @param data 返回体 * @param codeEnum 状态码 */ public static Result success(T data, ResultCodeEnum codeEnum) { - return build(data, codeEnum); + return success(data, new ArrayList<>(), codeEnum); + } + + /** + * 操作成功-状态码 + * + * @param codeEnum 状态码 + */ + public static Result success(List auths, ResultCodeEnum codeEnum) { + return build(null, auths, codeEnum); + } + + /** + * 操作成功-自定义返回数据和状态码 + * + * @param data 返回体 + * @param auths 权限范围 + * @param codeEnum 状态码 + */ + public static Result success(T data, List auths, ResultCodeEnum codeEnum) { + return build(data, auths, codeEnum); } /** @@ -102,7 +181,7 @@ public class Result { * @param message 错误信息 */ public static Result success(T data, String message) { - return build(data, 200, message); + return build(data, 200, message, new ArrayList<>()); } /** @@ -113,7 +192,7 @@ public class Result { * @param message 错误信息 */ public static Result success(T data, Integer code, String message) { - return build(data, code, message); + return build(data, code, message, new ArrayList<>()); } /** @@ -159,7 +238,7 @@ public class Result { * @param message 错误信息 */ public static Result error(T data, Integer code, String message) { - return build(data, code, message); + return build(data, code, message, new ArrayList<>()); } /** @@ -169,6 +248,6 @@ public class Result { * @param message 错误信息 */ public static Result error(T data, String message) { - return build(null, 500, message); + return build(null, 500, message, new ArrayList<>()); } } diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/AuthLogEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/AuthLogEntity.java new file mode 100644 index 0000000..5d5a377 --- /dev/null +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/AuthLogEntity.java @@ -0,0 +1,59 @@ +package com.auth.dao.base.entity; + +import com.auth.common.model.common.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +@TableName("sys_auth_log") +@Schema(name = "AuthLog-系统授权日志实体类", title = "系统授权日志", description = "系统授权日志的实体类对象") +public class AuthLogEntity extends BaseEntity { + + @Schema(name = "eventType", title = "事件类型(GRANTED=授权成功,DENIED=授权拒绝)") + private String eventType; + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "userId", title = "用户ID") + private Long userId; + + @Schema(name = "requestIp", title = "请求IP") + private String requestIp; + + @Schema(name = "requestMethod", title = "请求方法(GET,POST等)") + private String requestMethod; + + @Schema(name = "requestUri", title = "请求URI") + private String requestUri; + + @Schema(name = "className", title = "类名") + private String className; + + @Schema(name = "methodName", title = "方法名") + private String methodName; + + @Schema(name = "methodParams", title = "方法参数(JSON格式)") + private String methodParams; + + @Schema(name = "requiredAuthority", title = "所需权限达式") + private String requiredAuthority; + + @Schema(name = "userAuthorities", title = "用户拥有的权限(JSON格式)") + private String userAuthorities; + + @Schema(name = "decisionReason", title = "决策原因") + private String decisionReason; + + @Schema(name = "exceptionMessage", title = "异常信息") + private String exceptionMessage; + + @Schema(name = "isDeleted", title = "删除标志(0=未删除 1=已删除)") + private Boolean isDeleted; + +} \ No newline at end of file diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DeptEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DeptEntity.java similarity index 91% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DeptEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DeptEntity.java index 7ae9d24..c66ea5e 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DeptEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DeptEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_dept") -@Schema(name = "Dept对象", title = "部门表", description = "部门表的实体类对象") +@Schema(name = "Dept-部门实体类", title = "部门", description = "部门的实体类对象") public class DeptEntity extends BaseEntity { @Schema(name = "parentId", title = "父级id") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DictEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DictEntity.java similarity index 88% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DictEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DictEntity.java index 28bbaba..c9dc0e6 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/DictEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/DictEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_dict") -@Schema(name = "Dict对象", title = "系统数据字典", description = "系统数据字典的实体类对象") +@Schema(name = "Dict-系统数据字典实体类", title = "系统数据字典", description = "系统数据字典的实体类对象") public class DictEntity extends BaseEntity { @Schema(name = "dictType", title = "字典类型") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailConfigEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailConfigEntity.java similarity index 87% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailConfigEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailConfigEntity.java index 537e632..6e6ee62 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailConfigEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailConfigEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -13,7 +13,7 @@ import java.time.LocalDateTime; @Setter @Accessors(chain = true) @TableName("sys_email_config") -@Schema(name = "EmailConfig对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的实体类对象") +@Schema(name = "EmailConfig-系统邮件服务器配置实体类对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的实体类对象") public class EmailConfigEntity extends BaseEntity { @Schema(name = "configName", title = "配置名称") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailTemplateEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailTemplateEntity.java similarity index 91% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailTemplateEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailTemplateEntity.java index 50db007..bf2df91 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/EmailTemplateEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/EmailTemplateEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_email_template") -@Schema(name = "EmailTemplate对象", title = "邮件模板表", description = "邮件模板表的实体类对象") +@Schema(name = "EmailTemplate-邮件模板实体类", title = "邮件模板", description = "邮件模板的实体类对象") public class EmailTemplateEntity extends BaseEntity { @Schema(name = "templateName", title = "模板名称") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/FileEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/FileEntity.java similarity index 91% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/FileEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/FileEntity.java index 42889e2..7a817d2 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/FileEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/FileEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_file") -@Schema(name = "File对象", title = "系统文件存储", description = "系统文件存储的实体类对象") +@Schema(name = "File-系统文件存储实体类", title = "系统文件存储", description = "系统文件存储的实体类对象") public class FileEntity extends BaseEntity { @Schema(name = "fileUid", title = "文件唯一标识(可用于外部引用)") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/LoginLogEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/LoginLogEntity.java similarity index 87% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/LoginLogEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/LoginLogEntity.java index 3f89594..8c238f4 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/LoginLogEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/LoginLogEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_login_log") -@Schema(name = "LoginLog对象", title = "系统用户登录日志", description = "系统用户登录日志的实体类对象") +@Schema(name = "LoginLog-系统用户登录日志实体类", title = "系统用户登录日志", description = "系统用户登录日志的实体类对象") public class LoginLogEntity extends BaseEntity { @Schema(name = "userId", title = "用户ID") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuEntity.java similarity index 91% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuEntity.java index a7cf0be..9782041 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_menu") -@Schema(name = "Menu对象", title = "系统菜单权限", description = "系统菜单权限的实体类对象") +@Schema(name = "Menu-系统菜单权限实体类", title = "系统菜单权限", description = "系统菜单权限的实体类对象") public class MenuEntity extends BaseEntity { @Schema(name = "parentId", title = "父菜单ID(0表示一级菜单)") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuRoleEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuRoleEntity.java similarity index 72% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuRoleEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuRoleEntity.java index 7555820..018f165 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/MenuRoleEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/MenuRoleEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_menu_role") -@Schema(name = "MenuRole对象", title = "系统菜单角色关联", description = "系统菜单角色关联的实体类对象") +@Schema(name = "MenuRole-系统菜单角色关联实体类", title = "系统菜单角色关联", description = "系统菜单角色关联的实体类对象") public class MenuRoleEntity extends BaseEntity { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/OperationLogEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/OperationLogEntity.java similarity index 90% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/OperationLogEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/OperationLogEntity.java index e8fab0c..af0f8b6 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/OperationLogEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/OperationLogEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_operation_log") -@Schema(name = "OperationLog对象", title = "系统操作日志", description = "系统操作日志的实体类对象") +@Schema(name = "OperationLog-系统操作日志实体类", title = "系统操作日志", description = "系统操作日志的实体类对象") public class OperationLogEntity extends BaseEntity { @Schema(name = "module", title = "操作模块") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/PermissionEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/PermissionEntity.java similarity index 92% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/PermissionEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/PermissionEntity.java index 0454603..8d125f9 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/PermissionEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/PermissionEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_permission") -@Schema(name = "Permission对象", title = "系统权限表", description = "系统权限表的实体类对象") +@Schema(name = "Permission-系统权限实体类", title = "系统权限", description = "系统权限的实体类对象") public class PermissionEntity extends BaseEntity { @Schema(name = "parentId", title = "父级id") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleDataScopeEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleDataScopeEntity.java similarity index 70% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleDataScopeEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleDataScopeEntity.java index 886708d..8325b72 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleDataScopeEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleDataScopeEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_role_data_scope") -@Schema(name = "RoleDataScope对象", title = "系统角色数据权限范围", description = "系统角色数据权限范围的实体类对象") +@Schema(name = "RoleDataScope-系统角色数据权限范围实体类", title = "系统角色数据权限范围", description = "系统角色数据权限范围的实体类对象") public class RoleDataScopeEntity extends BaseEntity { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleEntity.java similarity index 89% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleEntity.java index b26dc9f..c259bd8 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RoleEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RoleEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_role") -@Schema(name = "Role对象", title = "系统角色表", description = "系统角色表的实体类对象") +@Schema(name = "Role-系统角色实体类", title = "系统角色", description = "系统角色的实体类对象") public class RoleEntity extends BaseEntity { @Schema(name = "roleCode", title = "角色代码") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RolePermissionEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RolePermissionEntity.java similarity index 80% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RolePermissionEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RolePermissionEntity.java index e2e0635..f0931ff 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/RolePermissionEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/RolePermissionEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_role_permission") -@Schema(name = "RolePermission对象", title = "系统角色权限表", description = "系统角色权限表的实体类对象") +@Schema(name = "RolePermission-系统角色权限实体类", title = "系统角色权限", description = "系统角色权限的实体类对象") public class RolePermissionEntity extends BaseEntity { @Schema(name = "roleId", title = "角色id") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserDeptEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserDeptEntity.java similarity index 82% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserDeptEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserDeptEntity.java index fe8f8da..1791ebe 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserDeptEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserDeptEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_user_dept") -@Schema(name = "UserDept对象", title = "部门用户关系表", description = "部门用户关系表的实体类对象") +@Schema(name = "UserDept-部门用户关系实体类", title = "部门用户关系", description = "部门用户关系的实体类对象") public class UserDeptEntity extends BaseEntity { @Schema(name = "userId", title = "用户id") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserEntity.java new file mode 100644 index 0000000..a7e5a01 --- /dev/null +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserEntity.java @@ -0,0 +1,94 @@ +package com.auth.dao.base.entity; + +import com.auth.common.model.common.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; +import java.util.Date; + +@Getter +@Setter +@Accessors(chain = true) +@TableName("sys_user") +@Schema(name = "User-用户信息实体类", title = "用户信息", description = "用户信息的实体类对象") +// 💡 根据自己需求看是否需要自定义用户信息 +public class UserEntity extends BaseEntity /* implements UserDetails, CredentialsContainer */ { + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "nickname", title = "昵称") + private String nickname; + + @Schema(name = "email", title = "邮箱") + private String email; + + @Schema(name = "phone", title = "手机号") + private String phone; + + @Schema(name = "password", title = "密码") + private String password; + + @Schema(name = "avatar", title = "头像") + private String avatar; + + @Schema(name = "summary", title = "个人描述") + private String summary; + + @Schema(name = "ipAddress", title = "最后登录IP") + private String ipAddress; + + @Schema(name = "ipRegion", title = "最后登录ip归属地") + private String ipRegion; + + @Schema(name = "status", title = "1:禁用 0:正常") + private Boolean status; + + @Schema(name = "salt", title = "密码盐值") + private String salt; + + @Schema(name = "gender", title = "性别(0=未知,1=男,2=女)") + private Integer gender; + + @Schema(name = "birthday", title = "出生日期") + private Date birthday; + + @Schema(name = "introduction", title = "个人简介") + private String introduction; + + @Schema(name = "lastLoginIp", title = "最后登录IP") + private String lastLoginIp; + + @Schema(name = "lastLoginRegion", title = "最后登录地区") + private String lastLoginRegion; + + @Schema(name = "lastLoginTime", title = "最后登录时间") + private LocalDateTime lastLoginTime; + + @Schema(name = "deptId", title = "所属部门ID") + private Long deptId; + + @Schema(name = "postId", title = "所属岗位ID") + private Long postId; + + @Schema(name = "isDeleted", title = "是否删除") + private Integer isDeleted; + + // @TableField(exist = false) + // private Set authorities; + // + // @Override + // public void eraseCredentials() { + // this.password = null; + // } + // + // @Override + // public Set getAuthorities() { + // return this.authorities; + // } + +} diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserRoleEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserRoleEntity.java similarity index 76% rename from auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserRoleEntity.java rename to auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserRoleEntity.java index 34d6147..5ee5952 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserRoleEntity.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/UserRoleEntity.java @@ -1,4 +1,4 @@ -package com.auth.dao.base.entity.base; +package com.auth.dao.base.entity; import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; @Setter @Accessors(chain = true) @TableName("sys_user_role") -@Schema(name = "UserRole对象", title = "系统用户角色关系表", description = "系统用户角色关系表的实体类对象") +@Schema(name = "UserRole系统用户角色关系实体类", title = "系统用户角色关系", description = "系统用户角色关系的实体类对象") public class UserRoleEntity extends BaseEntity { @Schema(name = "userId", title = "用户id") diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserEntity.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserEntity.java deleted file mode 100644 index cd7d893..0000000 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/base/UserEntity.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.auth.dao.base.entity.base; - -import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; -import org.springframework.security.core.CredentialsContainer; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; - -import java.time.LocalDateTime; -import java.util.Date; -import java.util.Set; - -@Getter -@Setter -@Accessors(chain = true) -@TableName("sys_user") -@Schema(name = "User对象", title = "用户信息", description = "用户信息的实体类对象") -public class UserEntity implements UserDetails, CredentialsContainer { - - @Schema(name = "id", title = "唯一标识") - @TableId(value = "id", type = IdType.ASSIGN_ID) - @JsonFormat(shape = JsonFormat.Shape.STRING) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @Schema(name = "username", title = "用户名") - private String username; - - @Schema(name = "nickname", title = "昵称") - private String nickname; - - @Schema(name = "email", title = "邮箱") - private String email; - - @Schema(name = "phone", title = "手机号") - private String phone; - - @Schema(name = "password", title = "密码") - private String password; - - @Schema(name = "avatar", title = "头像") - private String avatar; - - @Schema(name = "sex", title = "0:女 1:男") - private Integer sex; - - @Schema(name = "summary", title = "个人描述") - private String summary; - - @Schema(name = "ipAddress", title = "最后登录IP") - private String ipAddress; - - @Schema(name = "ipRegion", title = "最后登录ip归属地") - private String ipRegion; - - @Schema(name = "status", title = "1:禁用 0:正常") - private Integer status; - - @Schema(name = "isDeleted", title = "是否删除") - private Integer isDeleted; - - @Schema(name = "salt", title = "密码盐值") - private String salt; - - @Schema(name = "gender", title = "性别(0=未知,1=男,2=女)") - private Integer gender; - - @Schema(name = "birthday", title = "出生日期") - private Date birthday; - - @Schema(name = "introduction", title = "个人简介") - private String introduction; - - @Schema(name = "lastLoginIp", title = "最后登录IP") - private String lastLoginIp; - - @Schema(name = "lastLoginRegion", title = "最后登录地区") - private String lastLoginRegion; - - @Schema(name = "lastLoginTime", title = "最后登录时间") - private LocalDateTime lastLoginTime; - - @Schema(name = "deptId", title = "所属部门ID") - private Long deptId; - - @Schema(name = "postId", title = "所属岗位ID") - private Long postId; - - @Schema(name = "createTime", title = "创建时间") - @TableField(fill = FieldFill.INSERT) - private LocalDateTime createTime; - - @Schema(name = "updateTime", title = "更新时间") - @TableField(fill = FieldFill.INSERT_UPDATE) - private LocalDateTime updateTime; - - @Schema(name = "createUser", title = "创建用户") - @TableField(fill = FieldFill.INSERT) - @JsonFormat(shape = JsonFormat.Shape.STRING) - @JsonSerialize(using = ToStringSerializer.class) - private Long createUser; - - @Schema(name = "updateUser", title = "操作用户") - @TableField(fill = FieldFill.INSERT_UPDATE) - @JsonFormat(shape = JsonFormat.Shape.STRING) - @JsonSerialize(using = ToStringSerializer.class) - private Long updateUser; - - @TableField(exist = false) - private Set authorities; - - @Override - public void eraseCredentials() { - this.password = null; - } - - @Override - public Set getAuthorities() { - return this.authorities; - } -} \ No newline at end of file diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/package-info.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/package-info.java deleted file mode 100644 index 05e96e0..0000000 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/entity/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.auth.dao.base.entity; \ No newline at end of file diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/AuthLogMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/AuthLogMapper.java new file mode 100644 index 0000000..f7bf508 --- /dev/null +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/AuthLogMapper.java @@ -0,0 +1,33 @@ +package com.auth.dao.base.mapper.v1; + + +import com.auth.dao.base.entity.AuthLogEntity; +import com.auth.model.base.dto.AuthLogDto; +import com.auth.model.base.vo.AuthLogVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 系统授权日志表 Mapper 接口 + *

+ * + * @author AuthoritySystem + * @since 2025-07-19 14:26:58 + */ +@Mapper +public interface AuthLogMapper extends BaseMapper { + + /** + * 分页查询系统授权日志表内容 + * + * @param pageParams 系统授权日志表分页参数 + * @param dto 系统授权日志表查询表单 + * @return 系统授权日志表分页结果 + */ + IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") AuthLogDto dto); + +} diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DeptMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DeptMapper.java index 018f601..1754f0d 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DeptMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DeptMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.DeptDto; import com.auth.model.base.vo.DeptVo; -import com.auth.dao.base.entity.base.DeptEntity; +import com.auth.dao.base.entity.DeptEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DictMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DictMapper.java index 030258b..bd03e83 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DictMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/DictMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.DictDto; import com.auth.model.base.vo.DictVo; -import com.auth.dao.base.entity.base.DictEntity; +import com.auth.dao.base.entity.DictEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailConfigMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailConfigMapper.java index 5e9b8b1..fbc6f2f 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailConfigMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailConfigMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.EmailConfigDto; import com.auth.model.base.vo.EmailConfigVo; -import com.auth.dao.base.entity.base.EmailConfigEntity; +import com.auth.dao.base.entity.EmailConfigEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailTemplateMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailTemplateMapper.java index cdc1409..ea1c635 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailTemplateMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/EmailTemplateMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.EmailTemplateDto; import com.auth.model.base.vo.EmailTemplateVo; -import com.auth.dao.base.entity.base.EmailTemplateEntity; +import com.auth.dao.base.entity.EmailTemplateEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/FileMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/FileMapper.java index 62e6a0f..dfb0c0f 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/FileMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/FileMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.FileDto; import com.auth.model.base.vo.FileVo; -import com.auth.dao.base.entity.base.FileEntity; +import com.auth.dao.base.entity.FileEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/LoginLogMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/LoginLogMapper.java index a1c311d..5c2f574 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/LoginLogMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/LoginLogMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.LoginLogDto; import com.auth.model.base.vo.LoginLogVo; -import com.auth.dao.base.entity.base.LoginLogEntity; +import com.auth.dao.base.entity.LoginLogEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuMapper.java index 213b4b9..995b355 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.MenuDto; import com.auth.model.base.vo.MenuVo; -import com.auth.dao.base.entity.base.MenuEntity; +import com.auth.dao.base.entity.MenuEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuRoleMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuRoleMapper.java index ad0a884..15ecdcc 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuRoleMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/MenuRoleMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.MenuRoleDto; import com.auth.model.base.vo.MenuRoleVo; -import com.auth.dao.base.entity.base.MenuRoleEntity; +import com.auth.dao.base.entity.MenuRoleEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/OperationLogMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/OperationLogMapper.java index f7cc62d..1b6b681 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/OperationLogMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/OperationLogMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.OperationLogDto; import com.auth.model.base.vo.OperationLogVo; -import com.auth.dao.base.entity.base.OperationLogEntity; +import com.auth.dao.base.entity.OperationLogEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/PermissionMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/PermissionMapper.java index 643363e..e814ef2 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/PermissionMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/PermissionMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.PermissionDto; import com.auth.model.base.vo.PermissionVo; -import com.auth.dao.base.entity.base.PermissionEntity; +import com.auth.dao.base.entity.PermissionEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleDataScopeMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleDataScopeMapper.java index 572e44d..124879a 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleDataScopeMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleDataScopeMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.RoleDataScopeDto; import com.auth.model.base.vo.RoleDataScopeVo; -import com.auth.dao.base.entity.base.RoleDataScopeEntity; +import com.auth.dao.base.entity.RoleDataScopeEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleMapper.java index 56819d2..bf211a6 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RoleMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.RoleDto; import com.auth.model.base.vo.RoleVo; -import com.auth.dao.base.entity.base.RoleEntity; +import com.auth.dao.base.entity.RoleEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RolePermissionMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RolePermissionMapper.java index 56a1fdf..0ff0fb3 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RolePermissionMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/RolePermissionMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.RolePermissionDto; import com.auth.model.base.vo.RolePermissionVo; -import com.auth.dao.base.entity.base.RolePermissionEntity; +import com.auth.dao.base.entity.RolePermissionEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserDeptMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserDeptMapper.java index 3c1ac0b..62fb4c8 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserDeptMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserDeptMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.UserDeptDto; import com.auth.model.base.vo.UserDeptVo; -import com.auth.dao.base.entity.base.UserDeptEntity; +import com.auth.dao.base.entity.UserDeptEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserMapper.java index 2430ef7..f1f803b 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserMapper.java @@ -1,10 +1,11 @@ package com.auth.dao.base.mapper.v1; +import com.auth.dao.base.entity.PermissionEntity; +import com.auth.dao.base.entity.RoleEntity; +import com.auth.dao.base.entity.UserEntity; +import com.auth.dao.base.view.UserRolePermission; import com.auth.model.base.dto.UserDto; import com.auth.model.base.vo.UserVo; -import com.auth.dao.base.entity.base.PermissionEntity; -import com.auth.dao.base.entity.base.RoleEntity; -import com.auth.dao.base.entity.base.UserEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -34,12 +35,12 @@ public interface UserMapper extends BaseMapper { IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") UserDto dto); /** - * 根据用户名查询用户信息 + * 根据用户id查询用户角色和权限信息 * - * @param username 用户名 + * @param userId 用户Id * @return 用户实体类 */ - UserEntity selectByUsername(String username); + List selectUserRolePermissionByUsername(Long userId); /** * 根据用户id查找该用户的角色内容 @@ -56,4 +57,12 @@ public interface UserMapper extends BaseMapper { * @return 权限列表 */ List selectPermissionByUserId(Long userId); + + /** + * 根据用户名查询用户信息 + * + * @param username 用户名 + * @return 用户实体类 + */ + UserEntity selectByUsername(String username); } diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserRoleMapper.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserRoleMapper.java index 9347c55..6414480 100644 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserRoleMapper.java +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/mapper/v1/UserRoleMapper.java @@ -2,7 +2,7 @@ package com.auth.dao.base.mapper.v1; import com.auth.model.base.dto.UserRoleDto; import com.auth.model.base.vo.UserRoleVo; -import com.auth.dao.base.entity.base.UserRoleEntity; +import com.auth.dao.base.entity.UserRoleEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/package-info.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/package-info.java deleted file mode 100644 index 64a34f2..0000000 --- a/auth-dao/dao-base/src/main/java/com/auth/dao/base/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.auth.dao.base; \ No newline at end of file diff --git a/auth-dao/dao-base/src/main/java/com/auth/dao/base/view/UserRolePermission.java b/auth-dao/dao-base/src/main/java/com/auth/dao/base/view/UserRolePermission.java new file mode 100644 index 0000000..bf79698 --- /dev/null +++ b/auth-dao/dao-base/src/main/java/com/auth/dao/base/view/UserRolePermission.java @@ -0,0 +1,65 @@ +package com.auth.dao.base.view; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Getter +@Setter +@Accessors(chain = true) +@TableName("v_user_role_permission") +@Schema(name = "UserRolePermission-用户角色权限信息实体类", title = "用户角色权限信息", description = "用户角色权限信息的实体类对象") +public class UserRolePermission { + + // 用户角色关联信息 + private Long userId; + + // 角色权限关联信息 + private Long roleId; + private Long permissionId; + + // 权限信息 + private String permissionCode; + private String permissionName; + private String permissionType; + private String url; + private String method; + private Integer permissionLevel; + private String permissionPath; + private Integer permissionOrderNum; + private Integer permissionStatus; + private String permissionRemark; + + // 用户信息 + private String username; + private String nickname; + private String email; + private String phone; + private String salt; + private String password; + private String avatar; + private Integer gender; + private Date birthday; + private String introduction; + private String lastLoginIp; + private Date lastLoginTime; + private String lastLoginRegion; + private Integer status; + private Long deptId; + private Long postId; + private Boolean isDeleted; + + // 角色信息 + private String roleCode; + private String roleName; + private String roleType; + private String roleDataScope; + private Integer roleOrderNum; + private Integer roleStatus; + private String roleRemark; + +} diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/AuthLogMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/AuthLogMapper.xml new file mode 100644 index 0000000..fac246a --- /dev/null +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/AuthLogMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, event_type,username,user_id,request_ip,request_method,request_uri,class_name,method_name,method_params,required_authority,user_authorities,decision_reason,exception_message,is_deleted, create_time, update_time, create_user, update_user + + + + + + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/DeptMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/DeptMapper.xml index 944888b..164f470 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/DeptMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/DeptMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/DictMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/DictMapper.xml index bba09d6..82ede7e 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/DictMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/DictMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/EmailConfigMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/EmailConfigMapper.xml index f2b8689..b407e71 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/EmailConfigMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/EmailConfigMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/EmailTemplateMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/EmailTemplateMapper.xml index 48fc6b9..d74d156 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/EmailTemplateMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/EmailTemplateMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/FileMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/FileMapper.xml index 1f66459..9798359 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/FileMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/FileMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/LoginLogMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/LoginLogMapper.xml index 3e5a730..9738712 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/LoginLogMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/LoginLogMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/MenuMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/MenuMapper.xml index e9fa6a0..ff0d06c 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/MenuMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/MenuMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/MenuRoleMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/MenuRoleMapper.xml index db824af..e910fe1 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/MenuRoleMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/MenuRoleMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/OperationLogMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/OperationLogMapper.xml index a654f55..5329c16 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/OperationLogMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/OperationLogMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/PermissionMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/PermissionMapper.xml index 321f8d4..3faf3c5 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/PermissionMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/PermissionMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/RoleDataScopeMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/RoleDataScopeMapper.xml index 27eb591..3479455 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/RoleDataScopeMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/RoleDataScopeMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/RoleMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/RoleMapper.xml index 119834b..432e2b0 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/RoleMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/RoleMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/RolePermissionMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/RolePermissionMapper.xml index a84f366..7c25c2b 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/RolePermissionMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/RolePermissionMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/UserDeptMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/UserDeptMapper.xml index dab730f..566946c 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/UserDeptMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/UserDeptMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/UserMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/UserMapper.xml index 8e295bb..bcbf97e 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/UserMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/UserMapper.xml @@ -3,7 +3,7 @@ - + @@ -117,16 +117,17 @@ - - + select * + from v_user_role_permission vurp + where vurp.user_id = #{userId} + and vurp.is_deleteds = 0 + and vurp.status = 0 - SELECT tr.* FROM t_user_role tur JOIN t_role tr ON tur.role_id = tr.id @@ -138,7 +139,7 @@ - SELECT DISTINCT p.* FROM sys_permission p JOIN sys_role_permission rp ON p.id = rp.permission_id @@ -146,4 +147,12 @@ WHERE ur.user_id = #{userId} + + + diff --git a/auth-dao/dao-base/src/main/resources/mapper/v1/UserRoleMapper.xml b/auth-dao/dao-base/src/main/resources/mapper/v1/UserRoleMapper.xml index c8f69d0..b7fea98 100644 --- a/auth-dao/dao-base/src/main/resources/mapper/v1/UserRoleMapper.xml +++ b/auth-dao/dao-base/src/main/resources/mapper/v1/UserRoleMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/AuthLogDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/AuthLogDto.java new file mode 100644 index 0000000..a9737ef --- /dev/null +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/AuthLogDto.java @@ -0,0 +1,52 @@ +package com.auth.model.base.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(name = "AuthLogDTO-系统授权日志", title = "系统授权日志", description = "系统授权日志的DTO对象") +public class AuthLogDto { + + @Schema(name = "eventType", title = "事件类型(GRANTED=授权成功,DENIED=授权拒绝)") + private String eventType; + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "userId", title = "用户ID") + private Long userId; + + @Schema(name = "requestIp", title = "请求IP") + private String requestIp; + + @Schema(name = "requestMethod", title = "请求方法(GET,POST等)") + private String requestMethod; + + @Schema(name = "requestUri", title = "请求URI") + private String requestUri; + + @Schema(name = "className", title = "类名") + private String className; + + @Schema(name = "methodName", title = "方法名") + private String methodName; + + @Schema(name = "methodParams", title = "方法参数(JSON格式)") + private String methodParams; + + @Schema(name = "requiredAuthority", title = "所需权限表达式") + private String requiredAuthority; + + @Schema(name = "userAuthorities", title = "用户拥有的权限(JSON格式)") + private String userAuthorities; + + @Schema(name = "decisionReason", title = "决策原因") + private String decisionReason; + + @Schema(name = "exceptionMessage", title = "异常信息") + private String exceptionMessage; + + @Schema(name = "isDeleted", title = "删除标志(0=未删除 1=已删除)") + private Boolean isDeleted; + +} \ No newline at end of file diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DeptDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DeptDto.java index 92f6e1a..e205e9f 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DeptDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DeptDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "DeptDTO对象", title = "部门表", description = "部门表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "DeptDTO-部门传输类", title = "部门", description = "部门的DTO对象") public class DeptDto { @Schema(name = "parentId", title = "父级id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java index 5b4c96e..cccfe0c 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "DictDTO对象", title = "系统数据字典", description = "系统数据字典的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "DictDTO-系统数据字典传输", title = "系统数据字典", description = "系统数据字典的DTO对象") public class DictDto { @Schema(name = "dictType", title = "字典类型") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailConfigDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailConfigDto.java index 32f36dd..951262e 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailConfigDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailConfigDto.java @@ -1,12 +1,18 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; @Data -@Schema(name = "EmailConfigDTO对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "EmailConfigDTO-系统邮件服务器配置传输对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的DTO对象") public class EmailConfigDto { @Schema(name = "configName", title = "配置名称") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailTemplateDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailTemplateDto.java index d491693..64a9047 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailTemplateDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/EmailTemplateDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "EmailTemplateDTO对象", title = "邮件模板表", description = "邮件模板表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "EmailTemplateDTO-邮件模板传输对象", title = "邮件模板", description = "邮件模板的DTO对象") public class EmailTemplateDto { @Schema(name = "templateName", title = "模板名称") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/FileDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/FileDto.java index 01db9c0..491d567 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/FileDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/FileDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "FileDTO对象", title = "系统文件存储", description = "系统文件存储的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "FileDTO-系统文件存储传输对象", title = "系统文件存储", description = "系统文件存储的DTO对象") public class FileDto { @Schema(name = "fileUid", title = "文件唯一标识(可用于外部引用)") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginDto.java index b9edc4a..a20c710 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginDto.java @@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -@Schema(name = "LoginDto", title = "LoginDto登录参数", description = "登录请求参数") +@Schema(name = "LoginDTO-登录表单", title = "登录表单", description = "登录请求参数") public class LoginDto { @Schema(name = "type", description = "登录类型") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginLogDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginLogDto.java index c86b060..59c6740 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginLogDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/LoginLogDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "LoginLogDTO对象", title = "系统用户登录日志", description = "系统用户登录日志的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "LoginLogDTO-系统用户登录日志传输对象", title = "系统用户登录日志", description = "系统用户登录日志的DTO对象") public class LoginLogDto { @Schema(name = "userId", title = "用户ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuDto.java index a71e216..c5bb00c 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "MenuDTO对象", title = "系统菜单权限", description = "系统菜单权限的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MenuDTO-系统菜单权限传输对象", title = "系统菜单权限", description = "系统菜单权限的DTO对象") public class MenuDto { @Schema(name = "parentId", title = "父菜单ID(0表示一级菜单)") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuRoleDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuRoleDto.java index d073845..21ddf8f 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuRoleDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/MenuRoleDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "MenuRoleDTO对象", title = "系统菜单角色关联", description = "系统菜单角色关联的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MenuRoleDTO-系统菜单角色关联传输对象", title = "系统菜单角色关联", description = "系统菜单角色关联的DTO对象") public class MenuRoleDto { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/OperationLogDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/OperationLogDto.java index f9dcec5..11d2657 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/OperationLogDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/OperationLogDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "OperationLogDTO对象", title = "系统操作日志", description = "系统操作日志的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "OperationLogDTO-系统操作日志传输对象", title = "系统操作日志", description = "系统操作日志的DTO对象") public class OperationLogDto { @Schema(name = "module", title = "操作模块") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/PermissionDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/PermissionDto.java index 7f646b4..c553226 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/PermissionDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/PermissionDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "PermissionDTO对象", title = "系统权限表", description = "系统权限表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "PermissionDTO-系统权限传输对象", title = "系统权限", description = "系统权限的DTO对象") public class PermissionDto { @Schema(name = "parentId", title = "父级id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDataScopeDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDataScopeDto.java index 751a697..3482c29 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDataScopeDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDataScopeDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "RoleDataScopeDTO对象", title = "系统角色数据权限范围", description = "系统角色数据权限范围的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "RoleDataScopeDTO-系统角色数据权限范围传输对象", title = "系统角色数据权限范围", description = "系统角色数据权限范围的DTO对象") public class RoleDataScopeDto { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDto.java index f7be517..26d8107 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RoleDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "RoleDTO对象", title = "系统角色表", description = "系统角色表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "RoleDTO-系统角色传输对象", title = "系统角色", description = "系统角色的DTO对象") public class RoleDto { @Schema(name = "roleCode", title = "角色代码") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RolePermissionDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RolePermissionDto.java index 20b80e3..3dbdbd0 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/RolePermissionDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/RolePermissionDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "RolePermissionDTO对象", title = "系统角色权限表", description = "系统角色权限表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "RolePermissionDTO-系统角色权限传输对象", title = "系统角色权限", description = "系统角色权限的DTO对象") public class RolePermissionDto { @Schema(name = "roleId", title = "角色id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDeptDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDeptDto.java index 46fc270..5cf92f5 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDeptDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDeptDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "UserDeptDTO对象", title = "部门用户关系表", description = "部门用户关系表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "UserDeptDTO-部门用户关系传输对象", title = "部门用户关系", description = "部门用户关系的DTO对象") public class UserDeptDto { @Schema(name = "userId", title = "用户id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDto.java index 98a4fd5..9dbc539 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserDto.java @@ -1,13 +1,19 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; import java.util.Date; @Data -@Schema(name = "UserDTO对象", title = "用户信息", description = "用户信息的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "UserDTO-用户信息传输对象", title = "用户信息", description = "用户信息的DTO对象") public class UserDto { @Schema(name = "username", title = "用户名") @@ -25,7 +31,7 @@ public class UserDto { @Schema(name = "password", title = "密码") private String password; - @Schema(name = "avatar", title = "") + @Schema(name = "avatar", title = "头像URL") private String avatar; @Schema(name = "sex", title = "0:女 1:男") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserRoleDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserRoleDto.java index b3e74dc..2c25985 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserRoleDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/UserRoleDto.java @@ -1,10 +1,16 @@ package com.auth.model.base.dto; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data -@Schema(name = "UserRoleDTO对象", title = "系统用户角色关系表", description = "系统用户角色关系表的DTO对象") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "UserRoleDTO-系统用户角色关系传输对象", title = "系统用户角色关系", description = "系统用户角色关系的DTO对象") public class UserRoleDto { @Schema(name = "userId", title = "用户id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/AuthLogVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/AuthLogVo.java new file mode 100644 index 0000000..dc8da43 --- /dev/null +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/AuthLogVo.java @@ -0,0 +1,60 @@ +package com.auth.model.base.vo; + +import com.auth.common.model.common.BaseVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Schema(name = "AuthLogVO-系统授权日志表返回对象", title = "系统授权日志表", description = "系统授权日志表的VO对象") +public class AuthLogVo extends BaseVo { + + @Schema(name = "eventType", title = "事件类型(GRANTED=授权成功,DENIED=授权拒绝)") + private String eventType; + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "userId", title = "用户ID") + private Long userId; + + @Schema(name = "requestIp", title = "请求IP") + private String requestIp; + + @Schema(name = "requestMethod", title = "请求方法(GET,POST等)") + private String requestMethod; + + @Schema(name = "requestUri", title = "请求URI") + private String requestUri; + + @Schema(name = "className", title = "类名") + private String className; + + @Schema(name = "methodName", title = "方法名") + private String methodName; + + @Schema(name = "methodParams", title = "方法参数(JSON格式)") + private String methodParams; + + @Schema(name = "requiredAuthority", title = "所需权限表达式") + private String requiredAuthority; + + @Schema(name = "userAuthorities", title = "用户拥有的权限(JSON格式)") + private String userAuthorities; + + @Schema(name = "decisionReason", title = "决策原因") + private String decisionReason; + + @Schema(name = "exceptionMessage", title = "异常信息") + private String exceptionMessage; + + @Schema(name = "isDeleted", title = "删除标志(0=未删除 1=已删除)") + private Boolean isDeleted; + +} + diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/DeptVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/DeptVo.java index cf33576..30aa11f 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/DeptVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/DeptVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "DeptVO对象", title = "部门表", description = "部门表的VO对象") +@Schema(name = "DeptVO-部门返回对象", title = "部门", description = "部门的VO对象") public class DeptVo { @Schema(name = "parentId", title = "父级id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/DictVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/DictVo.java index 9cdf5af..95d5cf3 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/DictVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/DictVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "DictVO对象", title = "系统数据字典", description = "系统数据字典的VO对象") +@Schema(name = "DictVO-系统数据字典返回对象", title = "系统数据字典", description = "系统数据字典的VO对象") public class DictVo { @Schema(name = "dictType", title = "字典类型") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailConfigVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailConfigVo.java index 2200e08..2161cb1 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailConfigVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailConfigVo.java @@ -10,7 +10,7 @@ import java.time.LocalDateTime; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "EmailConfigVO对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的VO对象") +@Schema(name = "EmailConfigVO-系统邮件服务器配置返回对象", title = "系统邮件服务器配置", description = "系统邮件服务器配置的VO对象") public class EmailConfigVo { @Schema(name = "configName", title = "配置名称") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailTemplateVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailTemplateVo.java index ac602de..824139a 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailTemplateVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/EmailTemplateVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "EmailTemplateVO对象", title = "邮件模板表", description = "邮件模板表的VO对象") +@Schema(name = "EmailTemplateVO-邮件模板返回对象", title = "邮件模板", description = "邮件模板的VO对象") public class EmailTemplateVo { @Schema(name = "templateName", title = "模板名称") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/FileVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/FileVo.java index 78867f2..13e1035 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/FileVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/FileVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "FileVO对象", title = "系统文件存储", description = "系统文件存储的VO对象") +@Schema(name = "FileVO-系统文件存储返回对象", title = "系统文件存储", description = "系统文件存储的VO对象") public class FileVo { @Schema(name = "fileUid", title = "文件唯一标识(可用于外部引用)") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginLogVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginLogVo.java index 95d0210..fbbe5be 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginLogVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginLogVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "LoginLogVO对象", title = "系统用户登录日志", description = "系统用户登录日志的VO对象") +@Schema(name = "LoginLogVO-系统用户登录日志返回对象", title = "系统用户登录日志", description = "系统用户登录日志的VO对象") public class LoginLogVo { @Schema(name = "userId", title = "用户ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginVo.java index 1a6869d..607fd3c 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/LoginVo.java @@ -11,7 +11,7 @@ import lombok.NoArgsConstructor; @EqualsAndHashCode(callSuper = true) @AllArgsConstructor @NoArgsConstructor -@Schema(name = "LoginVo对象", title = "登录成功返回内容", description = "登录成功返回内容") +@Schema(name = "LoginVo-登录成功返回内容返回对象", title = "登录成功返回内容", description = "登录成功返回内容") public class LoginVo extends BaseVo { @Schema(name = "nickname", title = "昵称") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuRoleVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuRoleVo.java index f78bb0d..6d9dbdb 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuRoleVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuRoleVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "MenuRoleVO对象", title = "系统菜单角色关联", description = "系统菜单角色关联的VO对象") +@Schema(name = "MenuRoleVO-系统菜单角色关联返回对象", title = "系统菜单角色关联", description = "系统菜单角色关联的VO对象") public class MenuRoleVo { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuVo.java index a507b4c..a5eb38c 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/MenuVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "MenuVO对象", title = "系统菜单权限", description = "系统菜单权限的VO对象") +@Schema(name = "MenuVO-系统菜单权限返回对象", title = "系统菜单权限", description = "系统菜单权限的VO对象") public class MenuVo { @Schema(name = "parentId", title = "父菜单ID(0表示一级菜单)") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/OperationLogVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/OperationLogVo.java index 85c585c..784b868 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/OperationLogVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/OperationLogVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "OperationLogVO对象", title = "系统操作日志", description = "系统操作日志的VO对象") +@Schema(name = "OperationLogVO-系统操作日志返回对象", title = "系统操作日志", description = "系统操作日志的VO对象") public class OperationLogVo { @Schema(name = "module", title = "操作模块") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/PermissionVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/PermissionVo.java index 20a2a30..8d189d7 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/PermissionVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/PermissionVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "PermissionVO对象", title = "系统权限表", description = "系统权限表的VO对象") +@Schema(name = "PermissionVO-系统权限返回对象", title = "系统权限", description = "系统权限的VO对象") public class PermissionVo { @Schema(name = "parentId", title = "父级id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleDataScopeVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleDataScopeVo.java index 2f7bb0c..62fcb12 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleDataScopeVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleDataScopeVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "RoleDataScopeVO对象", title = "系统角色数据权限范围", description = "系统角色数据权限范围的VO对象") +@Schema(name = "RoleDataScopeVO-系统角色数据权限范围返回对象", title = "系统角色数据权限范围", description = "系统角色数据权限范围的VO对象") public class RoleDataScopeVo { @Schema(name = "roleId", title = "角色ID") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RolePermissionVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RolePermissionVo.java index 4a96a6e..0f8e85d 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RolePermissionVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RolePermissionVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "RolePermissionVO对象", title = "系统角色权限表", description = "系统角色权限表的VO对象") +@Schema(name = "RolePermissionVO-系统角色权限返回对象", title = "系统角色权限", description = "系统角色权限的VO对象") public class RolePermissionVo { @Schema(name = "roleId", title = "角色id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleVo.java index 9f67ce9..25a3eac 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/RoleVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "RoleVO对象", title = "系统角色表", description = "系统角色表的VO对象") +@Schema(name = "RoleVO-系统角色对象", title = "系统角色", description = "系统角色的VO对象") public class RoleVo { @Schema(name = "roleCode", title = "角色代码") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserDeptVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserDeptVo.java index 1e22dc7..01e2c21 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserDeptVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserDeptVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "UserDeptVO对象", title = "部门用户关系表", description = "部门用户关系表的VO对象") +@Schema(name = "UserDeptVO-部门用户关系返回对象", title = "部门用户关系", description = "部门用户关系的VO对象") public class UserDeptVo { @Schema(name = "userId", title = "用户id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserRoleVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserRoleVo.java index ed940e2..6e09adb 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserRoleVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserRoleVo.java @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "UserRoleVO对象", title = "系统用户角色关系表", description = "系统用户角色关系表的VO对象") +@Schema(name = "UserRoleVO-系统用户角色关系返回对象", title = "系统用户角色关系", description = "系统用户角色关系的VO对象") public class UserRoleVo { @Schema(name = "userId", title = "用户id") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserVo.java b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserVo.java index e83efa8..cc96e78 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserVo.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/vo/UserVo.java @@ -11,7 +11,7 @@ import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "UserVO对象", title = "用户信息", description = "用户信息的VO对象") +@Schema(name = "用户信息返回对象", title = "用户信息", description = "用户信息的VO对象") public class UserVo { @Schema(name = "username", title = "用户名") @@ -29,7 +29,7 @@ public class UserVo { @Schema(name = "password", title = "密码") private String password; - @Schema(name = "avatar", title = "") + @Schema(name = "avatar", title = "头像URL") private String avatar; @Schema(name = "sex", title = "0:女 1:男") diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm index a7b222c..a38dab8 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm @@ -12,12 +12,12 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "${classUppercaseName}DTO对象", title = "${comment}", description = "${comment}的DTO对象") +@Schema(name = "${classUppercaseName}DTO-${comment}传输对象", title = "${comment}", description = "${comment}的DTO对象") public class ${classUppercaseName}Dto { -#foreach($field in ${columnInfoList}) -@Schema(name = "${field.lowercaseName}", title = "${field.comment}") -private ${field.javaType} ${field.lowercaseName}; + #foreach($field in ${columnInfoList}) + @Schema(name = "${field.lowercaseName}", title = "${field.comment}") + private ${field.javaType} ${field.lowercaseName}; -#end + #end } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/model/entity/entity.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/model/entity/entity.java.vm index 9766a75..6600324 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/model/entity/entity.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/model/entity/entity.java.vm @@ -1,4 +1,3 @@ - import com.auth.common.model.common.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; @@ -17,15 +16,15 @@ import java.util.Date; @Setter @Accessors(chain = true) @TableName("${tableName}") -@Schema(name = "${classUppercaseName}对象", title = "${comment}", description = "${comment}的实体类对象") +@Schema(name = "${classUppercaseName}-${comment}实体类", title = "${comment}", description = "${comment}的实体类对象") public class ${classUppercaseName}Entity extends BaseEntity { -#foreach($field in ${columnInfoList}) - @Schema(name = "${field.lowercaseName}", title = "${field.comment}") - #if($field.isPrimaryKey) - @TableId(type = IdType.ASSIGN_ID) - #end - private ${field.javaType} ${field.lowercaseName}; + #foreach($field in ${columnInfoList}) + @Schema(name = "${field.lowercaseName}", title = "${field.comment}") + #if($field.isPrimaryKey) + @TableId(type = IdType.ASSIGN_ID) + #end + private ${field.javaType} ${field.lowercaseName}; -#end + #end } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/model/vo/vo.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/model/vo/vo.java.vm index 07ebfd8..aa644ac 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/model/vo/vo.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/model/vo/vo.java.vm @@ -13,7 +13,7 @@ import java.time.LocalDateTime; @Data @AllArgsConstructor @NoArgsConstructor -@Schema(name = "${classUppercaseName}VO对象", title = "${comment}", description = "${comment}的VO对象") +@Schema(name = "${classUppercaseName}VO-${comment}返回对象", title = "${comment}", description = "${comment}的VO对象") public class ${classUppercaseName}Vo { #foreach($field in ${columnInfoList}) diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/annotation/AuthorizationLogic.java b/auth-module/module-security/src/main/java/com/auth/module/security/annotation/AuthorizationLogic.java new file mode 100644 index 0000000..0302ea1 --- /dev/null +++ b/auth-module/module-security/src/main/java/com/auth/module/security/annotation/AuthorizationLogic.java @@ -0,0 +1,50 @@ +package com.auth.module.security.annotation; + + +import com.auth.module.security.config.properties.SecurityConfigProperties; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +@Component("auth") +@RequiredArgsConstructor +public class AuthorizationLogic { + + private final SecurityConfigProperties securityConfigProperties; + + /** + * 基本权限检查 + */ + public boolean decide(String requiredAuthority) { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if (authentication == null || !authentication.isAuthenticated()) { + return false; + } + + // 检查用户是否有指定权限或是admin + boolean baseAuthority = authentication.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .anyMatch(auth -> auth.equals(requiredAuthority)); + + return baseAuthority || isAdmin(authentication); + } + + /** + * 检查是否是管理员 + */ + public boolean isAdmin() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + return authentication != null && isAdmin(authentication); + } + + private boolean isAdmin(Authentication authentication) { + return securityConfigProperties.getAdminAuthorities().stream() + .anyMatch(auth -> authentication.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .anyMatch(ga -> ga.equals(auth))); + } + +} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/annotation/programmatically/AuthorizationLogic.java b/auth-module/module-security/src/main/java/com/auth/module/security/annotation/programmatically/AuthorizationLogic.java deleted file mode 100644 index a228612..0000000 --- a/auth-module/module-security/src/main/java/com/auth/module/security/annotation/programmatically/AuthorizationLogic.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.auth.module.security.annotation.programmatically; - -import org.springframework.stereotype.Component; - -/** - * 验证控制器或者传入参数是否指定值 - */ -@Component("auth") -public class AuthorizationLogic { - - public boolean decide(String name) { - // 直接使用name的实现 - // System.out.println(name); - return name.equalsIgnoreCase("user"); - } - -} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/config/AuthorizationManagerConfiguration.java b/auth-module/module-security/src/main/java/com/auth/module/security/config/AuthorizationManagerConfiguration.java new file mode 100644 index 0000000..e6e161a --- /dev/null +++ b/auth-module/module-security/src/main/java/com/auth/module/security/config/AuthorizationManagerConfiguration.java @@ -0,0 +1,35 @@ +package com.auth.module.security.config; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; +import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler; +import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; + +@Configuration +// @EnableMethodSecurity(prePostEnabled = false) +public class AuthorizationManagerConfiguration { + + @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + public MethodSecurityExpressionHandler methodSecurityExpressionHandler() { + DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler(); + // 可选配置---移除 ROLE_ 前缀 + // handler.setDefaultRolePrefix(""); + return handler; + } + + // @Bean + // @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + // Advisor preAuthorize(PreAuthorizationManager manager) { + // return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager); + // } + // + // @Bean + // @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + // Advisor postAuthorize(PostAuthorizationManager manager) { + // return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager); + // } + +} diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/config/SecurityWebConfiguration.java b/auth-module/module-security/src/main/java/com/auth/module/security/config/SecurityWebConfiguration.java index 0d56e53..03f5ac2 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/config/SecurityWebConfiguration.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/config/SecurityWebConfiguration.java @@ -1,6 +1,7 @@ package com.auth.module.security.config; +import com.auth.module.security.config.properties.SecurityConfigProperties; import com.auth.module.security.filter.JwtAuthenticationFilter; import com.auth.module.security.handler.SecurityAccessDeniedHandler; import com.auth.module.security.handler.SecurityAuthenticationEntryPoint; @@ -16,7 +17,6 @@ import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import java.util.List; @Configuration @EnableWebSecurity @@ -24,16 +24,15 @@ import java.util.List; @RequiredArgsConstructor public class SecurityWebConfiguration { - public static List securedPaths = List.of("/api/**"); - public static List noAuthPaths = List.of("/*/login"); private final JwtAuthenticationFilter jwtAuthenticationFilter; + private final SecurityConfigProperties pathsProperties; @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 前端段分离不需要---禁用明文验证 - .httpBasic(AbstractHttpConfigurer::disable) + // .httpBasic(AbstractHttpConfigurer::disable) // 前端段分离不需要---禁用默认登录页 .formLogin(AbstractHttpConfigurer::disable) // 前端段分离不需要---禁用退出页 @@ -47,18 +46,19 @@ public class SecurityWebConfiguration { .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS) ) + // 如果要对部分接口做登录校验 或者 项目中需要使用粗粒度的 校验 .authorizeHttpRequests(authorizeRequests -> // 访问路径为 /api 时需要进行认证 authorizeRequests // 不认证登录接口 - .requestMatchers(noAuthPaths.toArray(String[]::new)).permitAll() + .requestMatchers(pathsProperties.noAuthPaths.toArray(String[]::new)).permitAll() // ❗只认证 securedPaths 下的所有接口 // ======================================================================= // 也可以在这里写多参数传入,如:"/api/**","/admin/**" // 但是在 Spring过滤器中,如果要放行不需要认证请求,但是需要认证的接口必需要携带token。 // 做法是在这里定义要认证的接口,如果要做成动态可以放到数据库。 // ======================================================================= - .requestMatchers(securedPaths.toArray(String[]::new)).authenticated() + .requestMatchers(pathsProperties.securedPaths.toArray(String[]::new)).authenticated() // 其余请求都放行 .anyRequest().permitAll() ) @@ -68,7 +68,7 @@ public class SecurityWebConfiguration { // 没有权限访问 exception.accessDeniedHandler(new SecurityAccessDeniedHandler()); }) - .addFilterAfter(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class) + .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class) ; return http.build(); diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/config/password/MD5PasswordEncoder.java b/auth-module/module-security/src/main/java/com/auth/module/security/config/password/MD5PasswordEncoder.java index 66fb8ee..408f72a 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/config/password/MD5PasswordEncoder.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/config/password/MD5PasswordEncoder.java @@ -1,6 +1,10 @@ package com.auth.module.security.config.password; import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.util.DigestUtils; +import org.springframework.util.StringUtils; + +import java.util.HexFormat; /** *

MD5密码编码器实现

@@ -12,37 +16,37 @@ import org.springframework.security.crypto.password.PasswordEncoder; * *

Spring Security推荐使用BCrypt、PBKDF2、Argon2或Scrypt等自适应单向函数替代MD5。

* - * @see org.springframework.security.crypto.password.PasswordEncoder + * @see PasswordEncoder * 一般仅用于遗留系统兼容,新系统应使用更安全的密码编码器 */ -// public class MD5PasswordEncoder implements PasswordEncoder { -// -// @Override -// public String encode(CharSequence rawPassword) { -// if (rawPassword == null) { -// throw new IllegalArgumentException("原始密码不能为null"); -// } -// -// byte[] md5Digest = DigestUtils.md5Digest(rawPassword.toString().getBytes()); -// return HexFormat.of().formatHex(md5Digest); -// } -// -// @Override -// public boolean matches(CharSequence rawPassword, String encodedPassword) { -// if (rawPassword == null) { -// throw new IllegalArgumentException("原始密码不能为null"); -// } -// -// if (!StringUtils.hasText(encodedPassword)) { -// return false; -// } -// -// return encodedPassword.equalsIgnoreCase(encode(rawPassword)); -// } -// -// @Override -// public boolean upgradeEncoding(String encodedPassword) { -// // MD5已不安全,始终返回true建议升级到更安全的算法 -// return true; -// } -// } \ No newline at end of file +public class MD5PasswordEncoder implements PasswordEncoder { + + @Override + public String encode(CharSequence rawPassword) { + if (rawPassword == null) { + throw new IllegalArgumentException("原始密码不能为null"); + } + + byte[] md5Digest = DigestUtils.md5Digest(rawPassword.toString().getBytes()); + return HexFormat.of().formatHex(md5Digest); + } + + @Override + public boolean matches(CharSequence rawPassword, String encodedPassword) { + if (rawPassword == null) { + throw new IllegalArgumentException("原始密码不能为null"); + } + + if (!StringUtils.hasText(encodedPassword)) { + return false; + } + + return encodedPassword.equalsIgnoreCase(encode(rawPassword)); + } + + @Override + public boolean upgradeEncoding(String encodedPassword) { + // MD5已不安全,始终返回true建议升级到更安全的算法 + return true; + } +} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/config/properties/SecurityConfigProperties.java b/auth-module/module-security/src/main/java/com/auth/module/security/config/properties/SecurityConfigProperties.java new file mode 100644 index 0000000..54f14e9 --- /dev/null +++ b/auth-module/module-security/src/main/java/com/auth/module/security/config/properties/SecurityConfigProperties.java @@ -0,0 +1,27 @@ +package com.auth.module.security.config.properties; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.List; + +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = "security-path") +@Schema(name = "SecurityPathsProperties对象", description = "路径忽略和认证") +public class SecurityConfigProperties { + + @Schema(name = "noAuthPaths", description = "不用认证的路径") + public List noAuthPaths; + + @Schema(name = "securedPaths", description = "需要认证的路径") + public List securedPaths; + + @Schema(name = "允许的角色或权限", description = "允许的角色或权限") + public List adminAuthorities; + +} diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/controller/LoginController.java b/auth-module/module-security/src/main/java/com/auth/module/security/controller/LoginController.java index 43ce108..6fd750f 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/controller/LoginController.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/controller/LoginController.java @@ -1,5 +1,6 @@ package com.auth.module.security.controller; + import com.auth.common.model.common.result.Result; import com.auth.model.base.dto.LoginDto; import com.auth.model.base.vo.LoginVo; @@ -12,18 +13,18 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@Tag(name = "登录接口", description = "用户登录接口") -@RequestMapping("/api") +@Tag(name = "登录接口") @RestController +@RequestMapping("/api") @RequiredArgsConstructor public class LoginController { private final LoginService loginService; - @Operation(summary = "登录", description = "用户登录") + @Operation(summary = "用户登录", description = "用户登录") @PostMapping("login") - public Result login(@RequestBody LoginDto dto) { - LoginVo vo = loginService.login(dto); + public Result login(@RequestBody LoginDto loginDto) { + LoginVo vo = loginService.login(loginDto); return Result.success(vo); } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/event/AuthenticationEvents.java b/auth-module/module-security/src/main/java/com/auth/module/security/event/AuthenticationEvents.java index 437560a..e06ffa6 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/event/AuthenticationEvents.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/event/AuthenticationEvents.java @@ -1,5 +1,11 @@ package com.auth.module.security.event; +import com.alibaba.fastjson2.JSON; +import com.auth.common.context.BaseContext; +import com.auth.dao.base.entity.AuthLogEntity; +import com.auth.dao.base.mapper.v1.AuthLogMapper; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.aopalliance.intercept.MethodInvocation; import org.springframework.context.event.EventListener; @@ -8,14 +14,18 @@ import org.springframework.security.authorization.event.AuthorizationDeniedEvent import org.springframework.security.authorization.event.AuthorizationGrantedEvent; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.lang.reflect.Method; -import java.util.Arrays; @Slf4j @Component +@RequiredArgsConstructor public class AuthenticationEvents { + private final AuthLogMapper authLogMapper; + /** * 监听拒绝授权内容 * @@ -24,29 +34,48 @@ public class AuthenticationEvents { @EventListener public void onFailure(AuthorizationDeniedEvent failure) { try { - // getSource 和 getObject意思一样,一种是传入泛型自动转换一种是要手动转换 - Object source = failure.getSource(); - - // 直接获取泛型对象 + // 当前执行的方法 MethodInvocation methodInvocation = failure.getObject(); + // 方法名称 Method method = methodInvocation.getMethod(); + // 方法参数 Object[] args = methodInvocation.getArguments(); - log.warn("方法调用被拒绝: {}.{}, 参数: {}", - method.getDeclaringClass().getSimpleName(), - method.getName(), - Arrays.toString(args)); - - // 这里面的信息,和接口 /api/security/current-user 内容一样 + // 用户身份 Authentication authentication = failure.getAuthentication().get(); + // 用户名 + String username = authentication.getName(); + // 决策结果 + AuthorizationDecision decision = failure.getAuthorizationDecision(); - AuthorizationDecision authorizationDecision = failure.getAuthorizationDecision(); - // ExpressionAuthorizationDecision [granted=false, expressionAttribute=hasAuthority('ADMIN')] - System.out.println(authorizationDecision); + // 获取请求上下文信息 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + + AuthLogEntity authLog = new AuthLogEntity(); + if (attributes != null) { + HttpServletRequest request = attributes.getRequest(); + authLog.setRequestIp(request.getRemoteAddr()); + authLog.setRequestMethod(request.getMethod()); + authLog.setRequestUri(request.getRequestURI()); + } + + // 构建日志实体 + authLog.setEventType("DENIED"); + authLog.setUsername(username); + // 需要实现获取用户ID的方法 + authLog.setUserId(BaseContext.getUserId()); + authLog.setClassName(method.getDeclaringClass().getName()); + authLog.setMethodName(method.getName()); + authLog.setMethodParams(JSON.toJSONString(args)); + authLog.setRequiredAuthority(decision.toString()); + authLog.setUserAuthorities(JSON.toJSONString(authentication.getAuthorities())); + authLog.setCreateUser(BaseContext.getUserId()); + + // 保存到数据库 + authLogMapper.insert(authLog); - log.warn("授权失败 - 用户: {}, 权限: {}", authentication.getName(), authorizationDecision); } catch (Exception e) { - log.info(e.getMessage()); + log.error("记录授权失败日志异常", e); } } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/filter/JwtAuthenticationFilter.java b/auth-module/module-security/src/main/java/com/auth/module/security/filter/JwtAuthenticationFilter.java index 4a44525..e004c7f 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/filter/JwtAuthenticationFilter.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/filter/JwtAuthenticationFilter.java @@ -4,7 +4,7 @@ import com.auth.common.context.BaseContext; import com.auth.common.exception.AuthenticSecurityException; import com.auth.common.exception.MyAuthenticationException; import com.auth.common.model.common.result.ResultCodeEnum; -import com.auth.module.security.config.SecurityWebConfiguration; +import com.auth.module.security.config.properties.SecurityConfigProperties; import com.auth.module.security.handler.SecurityAuthenticationEntryPoint; import com.auth.module.security.provider.JwtTokenProvider; import com.auth.module.security.service.DbUserDetailService; @@ -14,7 +14,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.lang.Nullable; +import org.jetbrains.annotations.NotNull; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; @@ -33,93 +33,99 @@ import java.io.IOException; public class JwtAuthenticationFilter extends OncePerRequestFilter { private final JwtTokenProvider jwtTokenProvider; - private final DbUserDetailService userDetailService; + private final DbUserDetailService userDetailsService; private final SecurityAuthenticationEntryPoint securityAuthenticationEntryPoint; + private final SecurityConfigProperties pathsProperties; @Override - protected void doFilterInternal(@Nullable HttpServletRequest request, - @Nullable HttpServletResponse response, - @Nullable FilterChain filterChain) throws ServletException, IOException, AuthenticSecurityException { - if (filterChain == null || request == null) return; - - // 先校验不需要认证的接口 - RequestMatcher[] requestNoAuthMatchers = SecurityWebConfiguration.noAuthPaths.stream() - .map(AntPathRequestMatcher::new) - .toArray(RequestMatcher[]::new); - OrRequestMatcher noAuthRequestMatcher = new OrRequestMatcher(requestNoAuthMatchers); - if (noAuthRequestMatcher.matches(request)) { - filterChain.doFilter(request, response); - return; - } - - // 获取需要认证的接口 - RequestMatcher[] requestSecureMatchers = SecurityWebConfiguration.securedPaths.stream() - .map(AntPathRequestMatcher::new) - .toArray(RequestMatcher[]::new); - OrRequestMatcher secureRequestMatcher = new OrRequestMatcher(requestSecureMatchers); - - // 公开接口直接放行 - if (!secureRequestMatcher.matches(request)) { - filterChain.doFilter(request, response); - return; - } - - final String authHeader = request.getHeader("Authorization"); - // 如果当前请求不包含验证Token直接返回 - if (authHeader == null || !authHeader.startsWith("Bearer ")) { - filterChain.doFilter(request, response); - throw new AuthenticSecurityException(ResultCodeEnum.LOGIN_AUTH); - } - - // 当前请求的Token - final String jwtToken = authHeader.substring(7); - + protected void doFilterInternal(@NotNull HttpServletRequest request, + @NotNull HttpServletResponse response, + @NotNull FilterChain filterChain) throws ServletException, IOException { try { - // 检查当前Token是否过期 - if (jwtTokenProvider.isExpired(jwtToken)) { - // 💡如果过期不需要进行判断和验证,需要直接放行可以像下面这样写 - // =================================================== - // filterChain.doFilter(request, response); - // return; - // =================================================== - throw new AuthenticSecurityException(ResultCodeEnum.AUTHENTICATION_EXPIRED); + // 检查白名单路径 + if (isNoAuthPath(request)) { + filterChain.doFilter(request, response); + return; } - // 解析当前Token中的用户名 - String username = jwtTokenProvider.getUsernameFromToken(jwtToken); - Long userId = jwtTokenProvider.getUserIdFromToken(jwtToken); + // 检查是否需要认证的路径 + if (!isSecurePath(request)) { + filterChain.doFilter(request, response); + return; + } - // 当前用户名存在,并且 Security上下文为空,设置认证相关信息 - if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { - // 调用用户信息进行登录 - UserDetails userDetails = userDetailService.loadUserByUsername(username); - UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken( - userDetails, - null, - userDetails.getAuthorities() - ); - authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); - - // 设置认证用户信息 - SecurityContextHolder.getContext().setAuthentication(authToken); - BaseContext.setUsername(username); - BaseContext.setUserId(userId); + // 验证 Token + if (validToken(request)) { + filterChain.doFilter(request, response); + return; } filterChain.doFilter(request, response); + } catch (AuthenticSecurityException e) { + // 直接处理认证异常,不再调用filterChain.doFilter() + MyAuthenticationException myAuthenticationException = new MyAuthenticationException(e.getMessage(), e); + securityAuthenticationEntryPoint.commence(request, response, myAuthenticationException); + + } catch (RuntimeException e) { + MyAuthenticationException myAuthenticationException = new MyAuthenticationException("Authentication failed", e); + securityAuthenticationEntryPoint.commence(request, response, myAuthenticationException); } - // ⚠️IMPORTANT: - // ========================================================================== - // 在 catch 块中,securityAuthenticationEntryPoint.commence() 已经处理了错误响应 - // 所以应该 直接返回,避免继续执行后续逻辑。 - // ========================================================================== - catch (RuntimeException exception) { - securityAuthenticationEntryPoint.commence( - request, - response, - new MyAuthenticationException(exception.getMessage(), exception) + + } + + private boolean validToken(@NotNull HttpServletRequest request) { + // 验证Token + String authHeader = request.getHeader("Authorization"); + + // Token验证 + if (authHeader == null || !authHeader.startsWith("Bearer ")) { + return true; + // throw new AuthenticSecurityException(ResultCodeEnum.LOGIN_AUTH); + } + + String jwtToken = authHeader.substring(7); + + if (jwtTokenProvider.isExpired(jwtToken)) { + throw new AuthenticSecurityException(ResultCodeEnum.AUTHENTICATION_EXPIRED); + } + + // 设置认证信息 + String username = jwtTokenProvider.getUsernameFromToken(jwtToken); + Long userId = jwtTokenProvider.getUserIdFromToken(jwtToken); + + if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { + UserDetails userDetails = userDetailsService.loadUserByUsername(username); + UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken( + userDetails, + null, + userDetails.getAuthorities() ); + authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContextHolder.getContext().setAuthentication(authToken); + BaseContext.setUsername(username); + BaseContext.setUserId(userId); } + return false; + } + + /** + * 是否是不用验证的路径 + */ + private boolean isNoAuthPath(HttpServletRequest request) { + RequestMatcher[] matchers = pathsProperties.noAuthPaths.stream() + .map(AntPathRequestMatcher::new) + .toArray(RequestMatcher[]::new); + return new OrRequestMatcher(matchers).matches(request); + } + + /** + * 是否是要验证的路径 + */ + private boolean isSecurePath(HttpServletRequest request) { + RequestMatcher[] matchers = pathsProperties.securedPaths.stream() + .map(AntPathRequestMatcher::new) + .toArray(RequestMatcher[]::new); + return new OrRequestMatcher(matchers).matches(request); } } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/handler/JwtTokenLogoutHandler.java b/auth-module/module-security/src/main/java/com/auth/module/security/handler/JwtTokenLogoutHandler.java index 854fd37..43cdf7d 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/handler/JwtTokenLogoutHandler.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/handler/JwtTokenLogoutHandler.java @@ -37,4 +37,5 @@ public class JwtTokenLogoutHandler implements LogoutHandler { Result result = Result.success(ResultCodeEnum.SUCCESS_LOGOUT); ResponseUtil.out(response, result); } + } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/AuthorizationManagerConfiguration.java b/auth-module/module-security/src/main/java/com/auth/module/security/manger/AuthorizationManagerConfiguration.java deleted file mode 100644 index 6b32c02..0000000 --- a/auth-module/module-security/src/main/java/com/auth/module/security/manger/AuthorizationManagerConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.auth.module.security.manger; - -import org.springframework.aop.Advisor; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Role; -import org.springframework.security.authorization.method.AuthorizationManagerAfterMethodInterceptor; -import org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor; -import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; - -/** - * ❗如果需要开启使用自定义前置验证和后置验证 - * ❗需要上述的解开下面注释 - */ -@Configuration -@EnableMethodSecurity(prePostEnabled = false) -public class AuthorizationManagerConfiguration { - - @Bean - @Role(BeanDefinition.ROLE_INFRASTRUCTURE) - Advisor preAuthorize(PreAuthorizationManager manager) { - return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager); - } - - @Bean - @Role(BeanDefinition.ROLE_INFRASTRUCTURE) - Advisor postAuthorize(PostAuthorizationManager manager) { - return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager); - } - -} diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PostAuthorizationManager.java b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PostAuthorizationManager.java index e2bc4fe..88030da 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PostAuthorizationManager.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PostAuthorizationManager.java @@ -1,11 +1,17 @@ package com.auth.module.security.manger; + +import com.auth.common.model.common.result.Result; +import com.auth.module.security.config.properties.SecurityConfigProperties; +import lombok.RequiredArgsConstructor; import org.springframework.security.authorization.AuthorizationDecision; import org.springframework.security.authorization.AuthorizationManager; import org.springframework.security.authorization.method.MethodInvocationResult; import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Component; +import java.util.List; import java.util.function.Supplier; /** @@ -15,43 +21,47 @@ import java.util.function.Supplier; * 这是Spring Security较新的"后置授权"功能 */ @Component +@RequiredArgsConstructor public class PostAuthorizationManager implements AuthorizationManager { - /** - * 这里两个实现方法按照Security官方要求进行实现 - *

类说明:

- * 下面的实现是对方法执行前进行权限校验的判断 - *
-     *     AuthorizationManager <MethodInvocation>
-     * 
- * 下面的这个是对方法执行后对权限的判断 - *
-     *     AuthorizationManager <MethodInvocationResult>
-     * 
- * - *

注意事项:

- * 将上述两个方法按照自定义的方式进行实现后,还需要禁用默认的。 - *
-     * @Configuration
-     * @EnableMethodSecurity(prePostEnabled = false)
-     * class MethodSecurityConfig {
-     *     @Bean
-     *     @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
-     *    Advisor preAuthorize(MyAuthorizationManager manager) {
-     * 		return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager);
-     *    }
-     *
-     *    @Bean
-     *    @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
-     *    Advisor postAuthorize(MyAuthorizationManager manager) {
-     * 		return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager);
-     *    }
-     * }
-     * 
- */ + private final SecurityConfigProperties securityConfigProperties; + @Override - public AuthorizationDecision check(Supplier authentication, MethodInvocationResult invocation) { - Authentication auth = authentication.get(); - return new AuthorizationDecision(true); + public AuthorizationDecision check(Supplier authenticationSupplier, MethodInvocationResult methodInvocationResult) { + Authentication authentication = authenticationSupplier.get(); + + // 如果方法有 @PreAuthorize 注解,会先到这里 + if (authentication == null || !authentication.isAuthenticated()) { + return new AuthorizationDecision(false); + } + + // 检查权限 + boolean granted = hasPermission(authentication, methodInvocationResult); + return new AuthorizationDecision(granted); + } + + private boolean hasPermission(Authentication authentication, MethodInvocationResult methodInvocationResult) { + // 获取当前校验方法的返回值 + if (methodInvocationResult.getResult() instanceof Result result) { + // 拿到当前返回值中权限内容 + List auths = result.getAuths(); + + // 允许全局访问的 角色或权限 + List adminAuthorities = securityConfigProperties.adminAuthorities; + + // 判断返回值中返回方法全新啊是否和用户权限匹配 + return authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority) + .anyMatch(auth -> + // 允许放行的角色或权限 和 匹配到的角色或权限 + adminAuthorities.contains(auth) || auths.contains(auth) + ); + } + + // ❗这里可以设置自己的返回状态 + // ====================================== + // 默认返回 TRUE 是因为有可能当前方法不需要验证 + // 所以才设置默认返回为 TURE + // ====================================== + return true; } } \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManager.java b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManager.java deleted file mode 100644 index 31bb038..0000000 --- a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManager.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.auth.module.security.manger; - -import org.springframework.security.authorization.AuthorizationDecision; -import org.springframework.security.authorization.AuthorizationManager; -import org.springframework.security.core.Authentication; -import org.springframework.stereotype.Component; - -import java.util.Collection; -import java.util.function.Supplier; - -/** - * 处理方法调用前的授权检查 - * check()方法接收的是MethodInvocation对象,包含即将执行的方法调用信息 - * 用于决定是否允许执行某个方法 - * 这是传统的"前置授权"模式 - */ -@Component -public class PreAuthorizationManager implements AuthorizationManager> { - - /** - * 这里两个实现方法按照Security官方要求进行实现 - *

类说明:

- * 下面的实现是对方法执行前进行权限校验的判断 - *
-     *     AuthorizationManager <MethodInvocation>
-     * 
- * 下面的这个是对方法执行后对权限的判断 - *
-     *     AuthorizationManager <MethodInvocationResult>
-     * 
- * - *

注意事项:

- * 将上述两个方法按照自定义的方式进行实现后,还需要禁用默认的。 - *
-     * @Configuration
-     * @EnableMethodSecurity(prePostEnabled = false)
-     * class MethodSecurityConfig {
-     *     @Bean
-     *     @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
-     *    Advisor preAuthorize(MyAuthorizationManager manager) {
-     * 		return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager);
-     *    }
-     *
-     *    @Bean
-     *    @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
-     *    Advisor postAuthorize(MyAuthorizationManager manager) {
-     * 		return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager);
-     *    }
-     * }
-     * 
- */ - @Override - public AuthorizationDecision check(Supplier authentication, Collection invocation) { - return new AuthorizationDecision(true); - } - -} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByCustomer.java b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByCustomer.java new file mode 100644 index 0000000..8773456 --- /dev/null +++ b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByCustomer.java @@ -0,0 +1,106 @@ +package com.auth.module.security.manger;// package com.spring.step3.security.manger.demo1; + +// import com.auth.module.security.properties.SecurityConfigProperties; +// import lombok.RequiredArgsConstructor; +// import org.aopalliance.intercept.MethodInvocation; +// import org.springframework.core.annotation.AnnotationUtils; +// import org.springframework.security.access.prepost.PreAuthorize; +// import org.springframework.security.authorization.AuthorizationDecision; +// import org.springframework.security.authorization.AuthorizationManager; +// import org.springframework.security.core.Authentication; +// import org.springframework.security.core.GrantedAuthority; +// import org.springframework.stereotype.Component; +// +// import java.util.ArrayList; +// import java.util.List; +// import java.util.function.Supplier; +// import java.util.regex.Matcher; +// import java.util.regex.Pattern; +// +// /** +// * 处理方法调用前的授权检查 +// * check()方法接收的是MethodInvocation对象,包含即将执行的方法调用信息 +// * 用于决定是否允许执行某个方法 +// * 这是传统的"前置授权"模式 +// */ +// @Component +// @RequiredArgsConstructor +// public class PreAuthorizationManagerByCustomer implements AuthorizationManager { +// +// private final SecurityConfigProperties securityConfigProperties; +// +// @Override +// public AuthorizationDecision check(Supplier authenticationSupplier, MethodInvocation methodInvocation) { +// Authentication authentication = authenticationSupplier.get(); +// +// // 如果方法有 @PreAuthorize 注解,会先到这里 +// if (authentication == null || !authentication.isAuthenticated()) { +// return new AuthorizationDecision(false); +// } +// +// // 检查权限 +// boolean granted = hasPermission(authentication, methodInvocation); +// return new AuthorizationDecision(granted); +// } +// +// private boolean hasPermission(Authentication authentication, MethodInvocation methodInvocation) { +// PreAuthorize preAuthorize = AnnotationUtils.findAnnotation(methodInvocation.getMethod(), PreAuthorize.class); +// if (preAuthorize == null) { +// return true; // 没有注解默认放行 +// } +// +// String expression = preAuthorize.value(); +// // 解析表达式中的权限要求 +// List requiredAuthorities = extractAuthoritiesFromExpression(expression); +// +// // 获取配置的admin权限 +// List adminAuthorities = securityConfigProperties.getAdminAuthorities(); +// +// return authentication.getAuthorities().stream() +// .map(GrantedAuthority::getAuthority) +// .anyMatch(auth -> +// adminAuthorities.contains(auth) || +// requiredAuthorities.contains(auth) +// ); +// } +// +// private List extractAuthoritiesFromExpression(String expression) { +// List authorities = new ArrayList<>(); +// +// // 处理 hasAuthority('permission') 格式 +// Pattern hasAuthorityPattern = Pattern.compile("hasAuthority\\('([^']+)'\\)"); +// Matcher hasAuthorityMatcher = hasAuthorityPattern.matcher(expression); +// while (hasAuthorityMatcher.find()) { +// authorities.add(hasAuthorityMatcher.group(1)); +// } +// +// // 处理 hasRole('ROLE_XXX') 格式 (Spring Security 会自动添加 ROLE_ 前缀) +// Pattern hasRolePattern = Pattern.compile("hasRole\\('([^']+)'\\)"); +// Matcher hasRoleMatcher = hasRolePattern.matcher(expression); +// while (hasRoleMatcher.find()) { +// authorities.add(hasRoleMatcher.group(1)); +// } +// +// // 处理 hasAnyAuthority('perm1','perm2') 格式 +// Pattern hasAnyAuthorityPattern = Pattern.compile("hasAnyAuthority\\(([^)]+)\\)"); +// Matcher hasAnyAuthorityMatcher = hasAnyAuthorityPattern.matcher(expression); +// while (hasAnyAuthorityMatcher.find()) { +// String[] perms = hasAnyAuthorityMatcher.group(1).split(","); +// for (String perm : perms) { +// authorities.add(perm.trim().replaceAll("'", "")); +// } +// } +// +// // 处理 hasAnyRole('role1','role2') 格式 +// Pattern hasAnyRolePattern = Pattern.compile("hasAnyRole\\(([^)]+)\\)"); +// Matcher hasAnyRoleMatcher = hasAnyRolePattern.matcher(expression); +// while (hasAnyRoleMatcher.find()) { +// String[] roles = hasAnyRoleMatcher.group(1).split(","); +// for (String role : roles) { +// authorities.add(role.trim().replaceAll("'", "")); +// } +// } +// +// return authorities; +// } +// } \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByMethod.java b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByMethod.java new file mode 100644 index 0000000..072bbff --- /dev/null +++ b/auth-module/module-security/src/main/java/com/auth/module/security/manger/PreAuthorizationManagerByMethod.java @@ -0,0 +1,65 @@ +package com.auth.module.security.manger; + +import com.auth.module.security.config.properties.SecurityConfigProperties; +import lombok.RequiredArgsConstructor; +import org.aopalliance.intercept.MethodInvocation; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.expression.EvaluationContext; +import org.springframework.expression.EvaluationException; +import org.springframework.expression.Expression; +import org.springframework.expression.ParseException; +import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.authorization.AuthorizationDecision; +import org.springframework.security.authorization.AuthorizationManager; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Component; + +import java.util.function.Supplier; + +@Component +@RequiredArgsConstructor +public class PreAuthorizationManagerByMethod implements AuthorizationManager { + + private final SecurityConfigProperties securityConfigProperties; + private final MethodSecurityExpressionHandler expressionHandler; + + @Override + public AuthorizationDecision check(Supplier authenticationSupplier, MethodInvocation methodInvocation) { + + // 获取方法上的@PreAuthorize注解 + PreAuthorize preAuthorize = AnnotationUtils.findAnnotation(methodInvocation.getMethod(), PreAuthorize.class); + + if (preAuthorize == null) { + // 没有注解默认放行 + return new AuthorizationDecision(true); + } + + // 使用Spring的表达式解析器 + EvaluationContext ctx = expressionHandler.createEvaluationContext(authenticationSupplier.get(), methodInvocation); + + try { + // 解析表达式并获取结果 + Expression expression = expressionHandler.getExpressionParser().parseExpression(preAuthorize.value()); + + boolean granted = Boolean.TRUE.equals(expression.getValue(ctx, Boolean.class)); + + // 如果表达式不通过,检查是否是admin + if (!granted) { + granted = isAdmin(authenticationSupplier.get()); + } + + return new AuthorizationDecision(granted); + } catch (EvaluationException | ParseException e) { + return new AuthorizationDecision(false); + } + } + + private boolean isAdmin(Authentication authentication) { + return securityConfigProperties.getAdminAuthorities().stream() + .anyMatch(auth -> authentication.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .anyMatch(ga -> ga.equals(auth))); + } +} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/manger/ReadMe.md b/auth-module/module-security/src/main/java/com/auth/module/security/manger/ReadMe.md index 1547f4b..21d33f6 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/manger/ReadMe.md +++ b/auth-module/module-security/src/main/java/com/auth/module/security/manger/ReadMe.md @@ -1 +1,19 @@ -如果需要重写验证逻辑(自定义)使用这里面的类,并在配置类`AuthorizationManagerConfiguration`解开注释, \ No newline at end of file +# 自定义判断权限 + +## 如何开启 + +在配置文件夹中`config`---`AuthorizationManagerConfiguration`,放开注释的方法即可。 + +## 前置判断 + +### PreAuthorizationManagerByCustomer + +前置方法有自定义的,通过正则表达式进行匹配这种方式可以实现自定义判断需求,只是实现不够优雅。 + +### PreAuthorizationManagerByMethod + +这种是通过Security自带的方法进行匹配,如果当前可以访问所有资源的角色或者权限,直接放行。 + +## 后置判断 + +根据返回值进行判断的,返回值Result中auth进行判断的。 \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/provider/JwtTokenProvider.java b/auth-module/module-security/src/main/java/com/auth/module/security/provider/JwtTokenProvider.java index 87d4442..4e6fdea 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/provider/JwtTokenProvider.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/provider/JwtTokenProvider.java @@ -33,8 +33,7 @@ public class JwtTokenProvider { * @param username 用户名 * @return 令牌Token */ - public String createToken(Long userId, String username, - List roles, List permissions) { + public String createToken(Long userId, String username, List roles, List permissions) { SecretKey key = getSecretKey(); // return JwtTokenUtil.createToken(userId, username, subject, key, expired); return JwtTokenUtil.createToken(userId, username, roles, permissions, subject, key, expired); diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/DbUserDetailService.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/DbUserDetailService.java index 5d0e102..b6a8253 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/DbUserDetailService.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/DbUserDetailService.java @@ -1,5 +1,6 @@ package com.auth.module.security.service; +import com.auth.dao.base.view.UserRolePermission; import org.springframework.security.core.userdetails.UserDetailsService; import java.util.List; @@ -9,10 +10,10 @@ public interface DbUserDetailService extends UserDetailsService { /** * 根据用户id查找该用户的角色内容 * - * @param userId 用户id + * @param userRolePermissionList 用户角色权限列表 * @return 当前用户的角色信息 */ - List findUserRolesByUserId(Long userId); + List findUserRolesByUserId(List userRolePermissionList); /** * 根据用户id查找该用户的权限内容 @@ -20,6 +21,6 @@ public interface DbUserDetailService extends UserDetailsService { * @param userId 用户id * @return 当前用户的权限信息 */ - List findPermissionByUserId(Long userId); - + List findPermissionByUserId(List userRolePermissionList); + } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/LoginService.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/LoginService.java index 91c455f..cb25b14 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/LoginService.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/LoginService.java @@ -1,6 +1,7 @@ package com.auth.module.security.service; -import com.auth.dao.base.entity.base.UserEntity; + +import com.auth.dao.base.entity.UserEntity; import com.auth.model.base.dto.LoginDto; import com.auth.model.base.vo.LoginVo; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,9 +11,8 @@ public interface LoginService extends IService { /** * 用户登录 * - * @param dto 登录请求参数 {@link LoginDto} - * @return 登录成功返回 {@link LoginVo} + * @param loginDto LoginRequest登录参数 + * @return 登录成功返回内容 */ - LoginVo login(LoginDto dto); - + LoginVo login(LoginDto loginDto); } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/DbUserDetailServiceImpl.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/DbUserDetailServiceImpl.java index 3ff11db..4e7e69c 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/DbUserDetailServiceImpl.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/DbUserDetailServiceImpl.java @@ -1,20 +1,23 @@ package com.auth.module.security.service.impl; -import com.auth.dao.base.entity.base.PermissionEntity; -import com.auth.dao.base.entity.base.RoleEntity; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.UserEntity; import com.auth.dao.base.mapper.v1.UserMapper; +import com.auth.dao.base.view.UserRolePermission; import com.auth.module.security.service.DbUserDetailService; import lombok.RequiredArgsConstructor; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.jaas.JaasGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.security.Principal; import java.util.ArrayList; import java.util.List; -import java.util.Set; +import java.util.Map; import java.util.stream.Collectors; @Service @@ -24,62 +27,88 @@ public class DbUserDetailServiceImpl implements DbUserDetailService { private final UserMapper userMapper; - /** - * 在这个地方不需要手动的调用 Security 上下文进行存储 - * - * @param username the username identifying the user whose data is required. - * @return 用户信息详情 - * @throws UsernameNotFoundException 用户不存在 - */ @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 查询当前用户 UserEntity userEntity = userMapper.selectByUsername(username); // 判断当前用户是否存在 - if (userEntity == null) throw new UsernameNotFoundException("用户不存在"); + if (userEntity == null) { + throw new UsernameNotFoundException("用户不存在"); + } Long userId = userEntity.getId(); + List userRolePermissionList = userMapper.selectUserRolePermissionByUsername(userId); + Map> roleCodeMap = userRolePermissionList.stream().collect(Collectors.groupingBy(UserRolePermission::getRoleCode)); - List list = new ArrayList<>(); - // 设置用户角色 - List roles = findUserRolesByUserId(userId); - // 设置用户权限 - List permissions = findPermissionByUserId(userId); - list.addAll(roles); - list.addAll(permissions); + List jaasGrantedAuthorities = new ArrayList<>(); + roleCodeMap.forEach((s, permissionCode) -> { + List permissions = getPermissionByRoleCode(s, roleCodeMap).stream().map(SimpleGrantedAuthority::new).toList(); + UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(s, null, permissions); + JaasGrantedAuthority jaasGrantedAuthority = new JaasGrantedAuthority(s, (Principal) usernamePasswordAuthenticationToken.getPrincipal()); + jaasGrantedAuthorities.add(jaasGrantedAuthority); + }); - Set authorities = list.stream().map(SimpleGrantedAuthority::new) - .collect(Collectors.toSet()); + List roles = findUserRolesByUserId(userRolePermissionList); + + // List list = new ArrayList<>(); + // // 设置用户角色 + // List roles = findUserRolesByUserId(userRolePermissionList); + // // 设置用户权限 + // List permissions = findPermissionByUserId(userRolePermissionList); + // list.addAll(roles); + // list.addAll(permissions); + + // Set authorities = list.stream() + // .map(SimpleGrantedAuthority::new) + // .collect(Collectors.toSet()); // 设置用户权限 - userEntity.setAuthorities(authorities); - // 返回时将用户密码置为空 - userEntity.setPassword(null); - return userEntity; + // userEntity.setAuthorities(authorities); + // // 返回时将用户密码置为空 + // userEntity.setPassword(null); + // return userEntity; + + return User.builder() + .username(username) + .password(userEntity.getPassword()) + .roles(roles.toArray(String[]::new)) + .authorities(jaasGrantedAuthorities) + .disabled(userEntity.getStatus()) + .build(); + } + + /** + * 根据角色码获取当前角色权限 + * + * @param userRolePermissionList 用户角色权限关系列表 + * @return 权限Code + */ + private List getPermissionByRoleCode(String roleCode, Map> userRolePermissionList) { + return userRolePermissionList.get(roleCode) + .stream().map(UserRolePermission::getPermissionCode) + .toList(); } /** * 根据用户id查找该用户的角色内容 * - * @param userId 用户id + * @param userRolePermissionList 用户角色权限列表 * @return 当前用户的角色信息 */ @Override - public List findUserRolesByUserId(Long userId) { - List roleList = userMapper.selectRolesByUserId(userId); - return roleList.stream().map(RoleEntity::getRoleCode).toList(); + public List findUserRolesByUserId(List userRolePermissionList) { + return userRolePermissionList.stream().map(UserRolePermission::getRoleCode).toList(); } /** * 根据用户id查找该用户的权限内容 * - * @param userId 用户id + * @param userRolePermissionList 用户角色权限列表 * @return 当前用户的权限信息 */ @Override - public List findPermissionByUserId(Long userId) { - List permissionList = userMapper.selectPermissionByUserId(userId); - return permissionList.stream().map(PermissionEntity::getPermissionCode).toList(); + public List findPermissionByUserId(List userRolePermissionList) { + return userRolePermissionList.stream().map(UserRolePermission::getPermissionCode).toList(); } } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/InMemoryUserDetailsService.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/InMemoryUserDetailsService.java similarity index 60% rename from auth-module/module-security/src/main/java/com/auth/module/security/service/InMemoryUserDetailsService.java rename to auth-module/module-security/src/main/java/com/auth/module/security/service/impl/InMemoryUserDetailsService.java index 26f1732..29ee639 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/InMemoryUserDetailsService.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/InMemoryUserDetailsService.java @@ -1,4 +1,4 @@ -package com.auth.module.security.service; +package com.auth.module.security.service.impl; // public interface InMemoryUserDetailsService extends UserDetailsService { // } \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/LoginServiceImpl.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/LoginServiceImpl.java index c4e8b24..06084ce 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/LoginServiceImpl.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/impl/LoginServiceImpl.java @@ -1,40 +1,92 @@ package com.auth.module.security.service.impl; + +import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.common.model.enums.LoginEnums; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.PermissionEntity; +import com.auth.dao.base.entity.RoleEntity; +import com.auth.dao.base.entity.UserEntity; import com.auth.dao.base.mapper.v1.UserMapper; import com.auth.model.base.dto.LoginDto; import com.auth.model.base.vo.LoginVo; +import com.auth.module.security.provider.JwtTokenProvider; import com.auth.module.security.service.LoginService; import com.auth.module.security.service.strategy.DefaultLoginStrategy; import com.auth.module.security.service.strategy.LoginContext; import com.auth.module.security.service.strategy.LoginStrategy; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; -import java.util.Map; +import java.util.List; @Service -@Transactional @RequiredArgsConstructor public class LoginServiceImpl extends ServiceImpl implements LoginService { + private final JwtTokenProvider jwtTokenProvider; + private final DbUserDetailServiceImpl dbUserDetailServiceImpl; + private final UserMapper userMapper; + private final PasswordEncoder passwordEncoder; + /** * 用户登录 * - * @param dto 登录请求参数 {@link LoginDto} - * @return 登录成功返回 {@link LoginVo} + * @param loginDto LoginRequest登录参数 + * @return 登录成功返回内容 */ @Override - public LoginVo login(LoginDto dto) { - Map strategyMap = new HashMap<>(); - DefaultLoginStrategy defaultLoginStrategy = new DefaultLoginStrategy(baseMapper); - strategyMap.put(LoginEnums.default_STRATEGY.getValue(), defaultLoginStrategy); - new LoginContext(strategyMap); + public LoginVo login(LoginDto loginDto) { + // 初始化所有策略(可扩展) + HashMap loginStrategyHashMap = new HashMap<>(); + // 默认的登录方式 + loginStrategyHashMap.put(LoginEnums.default_STRATEGY.getValue(), new DefaultLoginStrategy(userMapper)); - return null; + // 使用登录上下文调用登录策略 + LoginContext loginContext = new LoginContext(loginStrategyHashMap); + UserEntity user = loginContext.executeStrategy(loginDto); + + // 验证登录逻辑 + if (user == null) throw new UsernameNotFoundException(ResultCodeEnum.USER_IS_EMPTY.getMessage()); + + // 数据库密码 + String dbPassword = user.getPassword(); + String password = loginDto.getPassword(); + if (!passwordEncoder.matches(password, dbPassword)) { + throw new UsernameNotFoundException(ResultCodeEnum.LOGIN_ERROR.getMessage()); + } + + // 登录结束后的操作 + loginContext.loginAfter(loginDto, user); + + // 设置用户创建用户id 和 更新用户id + Long userId = user.getId(); + user.setCreateUser(userId); + user.setUpdateUser(userId); + updateById(user); + + List roles = baseMapper.selectRolesByUserId(userId).stream().map(RoleEntity::getRoleCode).toList(); + List permission = baseMapper.selectPermissionByUserId(userId).stream().map(PermissionEntity::getPermissionCode).toList(); + String token = jwtTokenProvider.createToken(userId, user.getUsername(), roles, permission); + + // 过期时间 + Long expiresInSeconds = jwtTokenProvider.expired; + long expirationMillis = System.currentTimeMillis() + (expiresInSeconds * 1000); + Date date = new Date(expirationMillis); + + // 构建用户返回对象 + LoginVo loginVo = new LoginVo(); + BeanUtils.copyProperties(user, loginVo); + loginVo.setToken(token); + loginVo.setReadMeDay(expirationMillis); + loginVo.setExpires(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); + + return loginVo; } } diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/DefaultLoginStrategy.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/DefaultLoginStrategy.java index 3aebca3..aaeb50b 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/DefaultLoginStrategy.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/DefaultLoginStrategy.java @@ -1,16 +1,20 @@ package com.auth.module.security.service.strategy; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.UserEntity; import com.auth.dao.base.mapper.v1.UserMapper; import com.auth.model.base.dto.LoginDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.RequiredArgsConstructor; -@RequiredArgsConstructor +/** + * 使用用户名登录 + */ public class DefaultLoginStrategy implements LoginStrategy { - private final UserMapper userMapper; + public DefaultLoginStrategy(UserMapper userMapper) { + this.userMapper = userMapper; + } + /** * 登录鉴定方法 * 默认登录方式,使用用户名查询用户 @@ -39,4 +43,4 @@ public class DefaultLoginStrategy implements LoginStrategy { } -} +} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginContext.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginContext.java index aba937e..55cccd5 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginContext.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginContext.java @@ -1,8 +1,8 @@ package com.auth.module.security.service.strategy; -import com.auth.dao.base.entity.base.UserEntity; + +import com.auth.dao.base.entity.UserEntity; import com.auth.model.base.dto.LoginDto; -import lombok.RequiredArgsConstructor; import org.springframework.security.core.userdetails.UsernameNotFoundException; import java.util.Map; @@ -10,11 +10,15 @@ import java.util.Map; /** * 登录策略上下文 */ -@RequiredArgsConstructor public class LoginContext { private final Map strategies; + public LoginContext(Map strategies) { + this.strategies = strategies; + } + + /** * 执行登录策略 * 根据情况判断 type 是否为空 @@ -23,7 +27,7 @@ public class LoginContext { * @return 用户 */ public UserEntity executeStrategy(LoginDto loginDto) { - String type = loginDto.getType(); + String type = loginDto.getType().getValue(); LoginStrategy strategy = strategies.get(type); if (strategy == null) { @@ -39,10 +43,9 @@ public class LoginContext { * @param loginDto 登录参数 */ public void loginAfter(LoginDto loginDto, UserEntity adminUser) { - String type = loginDto.getType(); + String type = loginDto.getType().getValue(); LoginStrategy strategy = strategies.get(type); strategy.authenticateAfter(loginDto, adminUser); } - -} +} \ No newline at end of file diff --git a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginStrategy.java b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginStrategy.java index 6609aed..7bf70a9 100644 --- a/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginStrategy.java +++ b/auth-module/module-security/src/main/java/com/auth/module/security/service/strategy/LoginStrategy.java @@ -1,6 +1,7 @@ package com.auth.module.security.service.strategy; -import com.auth.dao.base.entity.base.UserEntity; + +import com.auth.dao.base.entity.UserEntity; import com.auth.model.base.dto.LoginDto; /** @@ -23,4 +24,4 @@ public interface LoginStrategy { * @param adminUser {@link UserEntity} */ void authenticateAfter(LoginDto loginDto, UserEntity adminUser); -} \ No newline at end of file +} diff --git a/auth-module/module-security/src/main/resources/application-security.yml b/auth-module/module-security/src/main/resources/application-security.yml index 1119e41..35f8773 100644 --- a/auth-module/module-security/src/main/resources/application-security.yml +++ b/auth-module/module-security/src/main/resources/application-security.yml @@ -4,4 +4,13 @@ jwtToken: # 主题 subject: SecurityBunny # 过期事件 7天 - expired: 604800 \ No newline at end of file + expired: 604800 + +# 认证和鉴权配置 +security-path: + admin-authorities: + - "ADMIN" + no-auth-paths: + - "/api/public/**" + secured-paths: + - "/api/v1/**" \ No newline at end of file diff --git a/auth-services/service-base/pom.xml b/auth-services/service-base/pom.xml index 2cd2d71..ae07abe 100644 --- a/auth-services/service-base/pom.xml +++ b/auth-services/service-base/pom.xml @@ -26,5 +26,10 @@ spring-boot-devtools runtime + + + org.dromara.x-file-storage + x-file-storage-spring + diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/AuthLogController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/AuthLogController.java new file mode 100644 index 0000000..3ec4e5d --- /dev/null +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/AuthLogController.java @@ -0,0 +1,78 @@ +package com.auth.service.base.controller; + +import com.auth.common.model.common.result.PageResult; +import com.auth.common.model.common.result.Result; +import com.auth.common.model.common.result.ResultCodeEnum; +import com.auth.dao.base.entity.AuthLogEntity; +import com.auth.model.base.dto.AuthLogDto; +import com.auth.model.base.vo.AuthLogVo; +import com.auth.service.base.service.AuthLogService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 系统授权日志表 前端控制器 + *

+ * + * @author AuthoritySystem + * @since 2025-07-20 12:42:00 + */ +@Tag(name = "系统授权日志表", description = "系统授权日志表相关接口") +@RestController +@RequestMapping("/api/v1/base/auth-log") +@RequiredArgsConstructor +public class AuthLogController { + + private final AuthLogService authLogService; + + @Operation(summary = "分页查询系统授权日志表", description = "分页查询系统授权日志表") + @GetMapping("{page}/{limit}") + public Result> getAuthLogPage( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit, + AuthLogDto dto) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = authLogService.getAuthLogPage(pageParams, dto); + return Result.success(pageResult); + } + + @Operation(summary = "根据id查询系统授权日志表详情", description = "根据id查询系统授权日志表详情") + @GetMapping("{id}") + public Result getAuthLogById(@PathVariable("id") Long id) { + AuthLogVo authLogVo = authLogService.getAuthLogById(id); + + return Result.success(authLogVo); + } + + @Operation(summary = "添加系统授权日志表", description = "添加系统授权日志表") + @PostMapping() + public Result addAuthLog(@Valid @RequestBody AuthLogDto dto) { + authLogService.addAuthLog(dto); + return Result.success(ResultCodeEnum.ADD_SUCCESS); + } + + @Operation(summary = "更新系统授权日志表", description = "更新系统授权日志表") + @PutMapping() + public Result updateAuthLog(@Valid @RequestBody AuthLogDto dto) { + authLogService.updateAuthLog(dto); + return Result.success(ResultCodeEnum.UPDATE_SUCCESS); + } + + @Operation(summary = "删除系统授权日志表", description = "删除系统授权日志表") + @DeleteMapping() + public Result deleteAuthLog(@RequestBody List ids) { + authLogService.deleteAuthLog(ids); + return Result.success(ResultCodeEnum.DELETE_SUCCESS); + } + +} \ No newline at end of file diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/DeptController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/DeptController.java index 823fdcd..ae4633a 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/DeptController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/DeptController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.DeptDto; import com.auth.model.base.vo.DeptVo; -import com.auth.dao.base.entity.base.DeptEntity; +import com.auth.dao.base.entity.DeptEntity; import com.auth.service.base.service.DeptService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/DictController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/DictController.java index a4feb01..70b3833 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/DictController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/DictController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.DictDto; import com.auth.model.base.vo.DictVo; -import com.auth.dao.base.entity.base.DictEntity; +import com.auth.dao.base.entity.DictEntity; import com.auth.service.base.service.DictService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailConfigController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailConfigController.java index 922a0c2..7145729 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailConfigController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailConfigController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.EmailConfigDto; import com.auth.model.base.vo.EmailConfigVo; -import com.auth.dao.base.entity.base.EmailConfigEntity; +import com.auth.dao.base.entity.EmailConfigEntity; import com.auth.service.base.service.EmailConfigService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailTemplateController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailTemplateController.java index ac9ad52..f80ab53 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailTemplateController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/EmailTemplateController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.EmailTemplateDto; import com.auth.model.base.vo.EmailTemplateVo; -import com.auth.dao.base.entity.base.EmailTemplateEntity; +import com.auth.dao.base.entity.EmailTemplateEntity; import com.auth.service.base.service.EmailTemplateService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/FileController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/FileController.java index e55a1b6..0db287b 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/FileController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/FileController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.FileDto; import com.auth.model.base.vo.FileVo; -import com.auth.dao.base.entity.base.FileEntity; +import com.auth.dao.base.entity.FileEntity; import com.auth.service.base.service.FileService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/LoginLogController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/LoginLogController.java index 5515363..bfbd68d 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/LoginLogController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/LoginLogController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.LoginLogDto; import com.auth.model.base.vo.LoginLogVo; -import com.auth.dao.base.entity.base.LoginLogEntity; +import com.auth.dao.base.entity.LoginLogEntity; import com.auth.service.base.service.LoginLogService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuController.java index 07023d7..e335558 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.MenuDto; import com.auth.model.base.vo.MenuVo; -import com.auth.dao.base.entity.base.MenuEntity; +import com.auth.dao.base.entity.MenuEntity; import com.auth.service.base.service.MenuService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuRoleController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuRoleController.java index 0e933fc..28d1140 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuRoleController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/MenuRoleController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.MenuRoleDto; import com.auth.model.base.vo.MenuRoleVo; -import com.auth.dao.base.entity.base.MenuRoleEntity; +import com.auth.dao.base.entity.MenuRoleEntity; import com.auth.service.base.service.MenuRoleService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/OperationLogController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/OperationLogController.java index 09c23e5..2961af5 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/OperationLogController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/OperationLogController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.OperationLogDto; import com.auth.model.base.vo.OperationLogVo; -import com.auth.dao.base.entity.base.OperationLogEntity; +import com.auth.dao.base.entity.OperationLogEntity; import com.auth.service.base.service.OperationLogService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/PermissionController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/PermissionController.java index 30b5a44..6bd47db 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/PermissionController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/PermissionController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.PermissionDto; import com.auth.model.base.vo.PermissionVo; -import com.auth.dao.base.entity.base.PermissionEntity; +import com.auth.dao.base.entity.PermissionEntity; import com.auth.service.base.service.PermissionService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleController.java index 118f87c..511fe5e 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.RoleDto; import com.auth.model.base.vo.RoleVo; -import com.auth.dao.base.entity.base.RoleEntity; +import com.auth.dao.base.entity.RoleEntity; import com.auth.service.base.service.RoleService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleDataScopeController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleDataScopeController.java index f7e04f7..ae268ff 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleDataScopeController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RoleDataScopeController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.RoleDataScopeDto; import com.auth.model.base.vo.RoleDataScopeVo; -import com.auth.dao.base.entity.base.RoleDataScopeEntity; +import com.auth.dao.base.entity.RoleDataScopeEntity; import com.auth.service.base.service.RoleDataScopeService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RolePermissionController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RolePermissionController.java index 3629535..f5c9fc9 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/RolePermissionController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/RolePermissionController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.RolePermissionDto; import com.auth.model.base.vo.RolePermissionVo; -import com.auth.dao.base.entity.base.RolePermissionEntity; +import com.auth.dao.base.entity.RolePermissionEntity; import com.auth.service.base.service.RolePermissionService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserController.java index ba52a67..6577110 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.UserDto; import com.auth.model.base.vo.UserVo; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.UserEntity; import com.auth.service.base.service.UserService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserDeptController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserDeptController.java index 671b84d..706e612 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserDeptController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserDeptController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.UserDeptDto; import com.auth.model.base.vo.UserDeptVo; -import com.auth.dao.base.entity.base.UserDeptEntity; +import com.auth.dao.base.entity.UserDeptEntity; import com.auth.service.base.service.UserDeptService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserRoleController.java b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserRoleController.java index 163bd6b..08c6ac1 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserRoleController.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/controller/UserRoleController.java @@ -5,7 +5,7 @@ import com.auth.common.model.common.result.Result; import com.auth.common.model.common.result.ResultCodeEnum; import com.auth.model.base.dto.UserRoleDto; import com.auth.model.base.vo.UserRoleVo; -import com.auth.dao.base.entity.base.UserRoleEntity; +import com.auth.dao.base.entity.UserRoleEntity; import com.auth.service.base.service.UserRoleService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/AuthLogService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/AuthLogService.java new file mode 100644 index 0000000..5bdee3f --- /dev/null +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/AuthLogService.java @@ -0,0 +1,57 @@ +package com.auth.service.base.service; + +import com.auth.common.model.common.result.PageResult; +import com.auth.dao.base.entity.AuthLogEntity; +import com.auth.model.base.dto.AuthLogDto; +import com.auth.model.base.vo.AuthLogVo; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 系统授权日志表 服务类 + *

+ * + * @author Bunny + * @since 2025-07-19 14:26:58 + */ +public interface AuthLogService extends IService { + + /** + * 分页查询系统授权日志表 + * + * @return 系统授权日志表分页结果 {@link AuthLogVo} + */ + PageResult getAuthLogPage(Page pageParams, AuthLogDto dto); + + /** + * 根据id查询系统授权日志表详情 + * + * @param id 主键 + * @return 系统授权日志表详情 AuthLogVo} + */ + AuthLogVo getAuthLogById(Long id); + + /** + * 添加系统授权日志表 + * + * @param dto {@link AuthLogDto} 添加表单 + */ + void addAuthLog(AuthLogDto dto); + + /** + * 更新系统授权日志表 + * + * @param dto {@link AuthLogDto} 更新表单 + */ + void updateAuthLog(AuthLogDto dto); + + /** + * 删除|批量删除系统授权日志表类型 + * + * @param ids 删除id列表 + */ + void deleteAuthLog(List ids); +} diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/DeptService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/DeptService.java index 3de23b9..14136f8 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/DeptService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/DeptService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.DeptDto; import com.auth.model.base.vo.DeptVo; -import com.auth.dao.base.entity.base.DeptEntity; +import com.auth.dao.base.entity.DeptEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/DictService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/DictService.java index 6b695c0..fb8b774 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/DictService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/DictService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.DictDto; import com.auth.model.base.vo.DictVo; -import com.auth.dao.base.entity.base.DictEntity; +import com.auth.dao.base.entity.DictEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailConfigService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailConfigService.java index cc284bb..00f0a18 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailConfigService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailConfigService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.EmailConfigDto; import com.auth.model.base.vo.EmailConfigVo; -import com.auth.dao.base.entity.base.EmailConfigEntity; +import com.auth.dao.base.entity.EmailConfigEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailTemplateService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailTemplateService.java index f610098..445151f 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailTemplateService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/EmailTemplateService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.EmailTemplateDto; import com.auth.model.base.vo.EmailTemplateVo; -import com.auth.dao.base.entity.base.EmailTemplateEntity; +import com.auth.dao.base.entity.EmailTemplateEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/FileService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/FileService.java index 28d3f6a..586bc94 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/FileService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/FileService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.FileDto; import com.auth.model.base.vo.FileVo; -import com.auth.dao.base.entity.base.FileEntity; +import com.auth.dao.base.entity.FileEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/LoginLogService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/LoginLogService.java index 8c64c8c..b344bc9 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/LoginLogService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/LoginLogService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.LoginLogDto; import com.auth.model.base.vo.LoginLogVo; -import com.auth.dao.base.entity.base.LoginLogEntity; +import com.auth.dao.base.entity.LoginLogEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuRoleService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuRoleService.java index 443cc2b..a42daca 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuRoleService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuRoleService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.MenuRoleDto; import com.auth.model.base.vo.MenuRoleVo; -import com.auth.dao.base.entity.base.MenuRoleEntity; +import com.auth.dao.base.entity.MenuRoleEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuService.java index 2ecc933..1dd9e9e 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/MenuService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.MenuDto; import com.auth.model.base.vo.MenuVo; -import com.auth.dao.base.entity.base.MenuEntity; +import com.auth.dao.base.entity.MenuEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/OperationLogService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/OperationLogService.java index fd620b1..7ab869a 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/OperationLogService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/OperationLogService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.OperationLogDto; import com.auth.model.base.vo.OperationLogVo; -import com.auth.dao.base.entity.base.OperationLogEntity; +import com.auth.dao.base.entity.OperationLogEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/PermissionService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/PermissionService.java index 0ed8cbf..9107f07 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/PermissionService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/PermissionService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.PermissionDto; import com.auth.model.base.vo.PermissionVo; -import com.auth.dao.base.entity.base.PermissionEntity; +import com.auth.dao.base.entity.PermissionEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleDataScopeService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleDataScopeService.java index 97f7363..b6e83e5 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleDataScopeService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleDataScopeService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RoleDataScopeDto; import com.auth.model.base.vo.RoleDataScopeVo; -import com.auth.dao.base.entity.base.RoleDataScopeEntity; +import com.auth.dao.base.entity.RoleDataScopeEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/RolePermissionService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/RolePermissionService.java index 27bd17c..7ba980a 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/RolePermissionService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/RolePermissionService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RolePermissionDto; import com.auth.model.base.vo.RolePermissionVo; -import com.auth.dao.base.entity.base.RolePermissionEntity; +import com.auth.dao.base.entity.RolePermissionEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleService.java index 956e69d..4c01f14 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/RoleService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RoleDto; import com.auth.model.base.vo.RoleVo; -import com.auth.dao.base.entity.base.RoleEntity; +import com.auth.dao.base.entity.RoleEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserDeptService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserDeptService.java index 300728f..05441c6 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserDeptService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserDeptService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserDeptDto; import com.auth.model.base.vo.UserDeptVo; -import com.auth.dao.base.entity.base.UserDeptEntity; +import com.auth.dao.base.entity.UserDeptEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserRoleService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserRoleService.java index 9d14bff..998c5ba 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserRoleService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserRoleService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserRoleDto; import com.auth.model.base.vo.UserRoleVo; -import com.auth.dao.base.entity.base.UserRoleEntity; +import com.auth.dao.base.entity.UserRoleEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserService.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserService.java index fd3d106..1036938 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/UserService.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/UserService.java @@ -3,7 +3,7 @@ package com.auth.service.base.service; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserDto; import com.auth.model.base.vo.UserVo; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.UserEntity; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/AuthLogServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/AuthLogServiceImpl.java new file mode 100644 index 0000000..05f93b5 --- /dev/null +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/AuthLogServiceImpl.java @@ -0,0 +1,99 @@ +package com.auth.service.base.service.impl; + +import com.auth.common.model.common.result.PageResult; +import com.auth.dao.base.entity.AuthLogEntity; +import com.auth.dao.base.mapper.v1.AuthLogMapper; +import com.auth.model.base.dto.AuthLogDto; +import com.auth.model.base.vo.AuthLogVo; +import com.auth.service.base.service.AuthLogService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + *

+ * 系统授权日志表 服务实现类 + *

+ * + * @author Bunny + * @since 2025-07-19 14:26:58 + */ +@Service +@Transactional +public class AuthLogServiceImpl extends ServiceImpl implements AuthLogService { + + /** + * 系统授权日志表 服务实现类 + * + * @param pageParams 系统授权日志表分页查询page对象 + * @param dto 系统授权日志表分页查询对象 + * @return 查询分页系统授权日志表返回对象 + */ + @Override + public PageResult getAuthLogPage(Page pageParams, AuthLogDto dto) { + IPage page = baseMapper.selectListByPage(pageParams, dto); + + return PageResult.builder() + .list(page.getRecords()) + .pageNo(page.getCurrent()) + .pageSize(page.getSize()) + .total(page.getTotal()) + .build(); + } + + /** + * 根据id查询系统授权日志表详情 + * + * @param id 主键 + * @return 系统授权日志表详情 AuthLogVo} + */ + public AuthLogVo getAuthLogById(Long id) { + AuthLogEntity authLogEntity = getById(id); + + AuthLogVo authLogVo = new AuthLogVo(); + BeanUtils.copyProperties(authLogEntity, authLogVo); + + return authLogVo; + } + + /** + * 添加系统授权日志表 + * + * @param dto 系统授权日志表添加 + */ + @Override + public void addAuthLog(AuthLogDto dto) { + AuthLogEntity authLog = new AuthLogEntity(); + BeanUtils.copyProperties(dto, authLog); + + save(authLog); + } + + /** + * 更新系统授权日志表 + * + * @param dto 系统授权日志表更新 + */ + @Override + public void updateAuthLog(AuthLogDto dto) { + AuthLogEntity authLog = new AuthLogEntity(); + BeanUtils.copyProperties(dto, authLog); + + updateById(authLog); + } + + /** + * 删除|批量删除系统授权日志表 + * + * @param ids 删除id列表 + */ + @Override + public void deleteAuthLog(List ids) { + removeByIds(ids); + } +} \ No newline at end of file diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DeptServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DeptServiceImpl.java index 0790f7e..ab9e0d7 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DeptServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DeptServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.DeptDto; import com.auth.model.base.vo.DeptVo; -import com.auth.dao.base.entity.base.DeptEntity; +import com.auth.dao.base.entity.DeptEntity; import com.auth.dao.base.mapper.v1.DeptMapper; import com.auth.service.base.service.DeptService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DictServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DictServiceImpl.java index 7152ce3..3cd29d3 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DictServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/DictServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.DictDto; import com.auth.model.base.vo.DictVo; -import com.auth.dao.base.entity.base.DictEntity; +import com.auth.dao.base.entity.DictEntity; import com.auth.dao.base.mapper.v1.DictMapper; import com.auth.service.base.service.DictService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailConfigServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailConfigServiceImpl.java index ff8463e..ba7e51c 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailConfigServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailConfigServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.EmailConfigDto; import com.auth.model.base.vo.EmailConfigVo; -import com.auth.dao.base.entity.base.EmailConfigEntity; +import com.auth.dao.base.entity.EmailConfigEntity; import com.auth.dao.base.mapper.v1.EmailConfigMapper; import com.auth.service.base.service.EmailConfigService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailTemplateServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailTemplateServiceImpl.java index bc54d1b..fa992d9 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailTemplateServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/EmailTemplateServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.EmailTemplateDto; import com.auth.model.base.vo.EmailTemplateVo; -import com.auth.dao.base.entity.base.EmailTemplateEntity; +import com.auth.dao.base.entity.EmailTemplateEntity; import com.auth.dao.base.mapper.v1.EmailTemplateMapper; import com.auth.service.base.service.EmailTemplateService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/FileServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/FileServiceImpl.java index 3c2da2d..5ac4304 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/FileServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/FileServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.FileDto; import com.auth.model.base.vo.FileVo; -import com.auth.dao.base.entity.base.FileEntity; +import com.auth.dao.base.entity.FileEntity; import com.auth.dao.base.mapper.v1.FileMapper; import com.auth.service.base.service.FileService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/LoginLogServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/LoginLogServiceImpl.java index e48ab9f..765f602 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/LoginLogServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/LoginLogServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.LoginLogDto; import com.auth.model.base.vo.LoginLogVo; -import com.auth.dao.base.entity.base.LoginLogEntity; +import com.auth.dao.base.entity.LoginLogEntity; import com.auth.dao.base.mapper.v1.LoginLogMapper; import com.auth.service.base.service.LoginLogService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuRoleServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuRoleServiceImpl.java index 38a88ba..648c032 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuRoleServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuRoleServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.MenuRoleDto; import com.auth.model.base.vo.MenuRoleVo; -import com.auth.dao.base.entity.base.MenuRoleEntity; +import com.auth.dao.base.entity.MenuRoleEntity; import com.auth.dao.base.mapper.v1.MenuRoleMapper; import com.auth.service.base.service.MenuRoleService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuServiceImpl.java index 20c28f5..e8753c3 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/MenuServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.MenuDto; import com.auth.model.base.vo.MenuVo; -import com.auth.dao.base.entity.base.MenuEntity; +import com.auth.dao.base.entity.MenuEntity; import com.auth.dao.base.mapper.v1.MenuMapper; import com.auth.service.base.service.MenuService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/OperationLogServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/OperationLogServiceImpl.java index ccce945..5cd14b2 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/OperationLogServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/OperationLogServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.OperationLogDto; import com.auth.model.base.vo.OperationLogVo; -import com.auth.dao.base.entity.base.OperationLogEntity; +import com.auth.dao.base.entity.OperationLogEntity; import com.auth.dao.base.mapper.v1.OperationLogMapper; import com.auth.service.base.service.OperationLogService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/PermissionServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/PermissionServiceImpl.java index 692a616..c8f6865 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/PermissionServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/PermissionServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.PermissionDto; import com.auth.model.base.vo.PermissionVo; -import com.auth.dao.base.entity.base.PermissionEntity; +import com.auth.dao.base.entity.PermissionEntity; import com.auth.dao.base.mapper.v1.PermissionMapper; import com.auth.service.base.service.PermissionService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleDataScopeServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleDataScopeServiceImpl.java index 68aca71..079d535 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleDataScopeServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleDataScopeServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RoleDataScopeDto; import com.auth.model.base.vo.RoleDataScopeVo; -import com.auth.dao.base.entity.base.RoleDataScopeEntity; +import com.auth.dao.base.entity.RoleDataScopeEntity; import com.auth.dao.base.mapper.v1.RoleDataScopeMapper; import com.auth.service.base.service.RoleDataScopeService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RolePermissionServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RolePermissionServiceImpl.java index 33b1213..2e98f61 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RolePermissionServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RolePermissionServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RolePermissionDto; import com.auth.model.base.vo.RolePermissionVo; -import com.auth.dao.base.entity.base.RolePermissionEntity; +import com.auth.dao.base.entity.RolePermissionEntity; import com.auth.dao.base.mapper.v1.RolePermissionMapper; import com.auth.service.base.service.RolePermissionService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleServiceImpl.java index 88d7f18..0b2c47f 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/RoleServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.RoleDto; import com.auth.model.base.vo.RoleVo; -import com.auth.dao.base.entity.base.RoleEntity; +import com.auth.dao.base.entity.RoleEntity; import com.auth.dao.base.mapper.v1.RoleMapper; import com.auth.service.base.service.RoleService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserDeptServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserDeptServiceImpl.java index d665155..4bf639f 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserDeptServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserDeptServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserDeptDto; import com.auth.model.base.vo.UserDeptVo; -import com.auth.dao.base.entity.base.UserDeptEntity; +import com.auth.dao.base.entity.UserDeptEntity; import com.auth.dao.base.mapper.v1.UserDeptMapper; import com.auth.service.base.service.UserDeptService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserRoleServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserRoleServiceImpl.java index 947a914..bcb41eb 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserRoleServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserRoleServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserRoleDto; import com.auth.model.base.vo.UserRoleVo; -import com.auth.dao.base.entity.base.UserRoleEntity; +import com.auth.dao.base.entity.UserRoleEntity; import com.auth.dao.base.mapper.v1.UserRoleMapper; import com.auth.service.base.service.UserRoleService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserServiceImpl.java b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserServiceImpl.java index ac58c0e..71aee56 100644 --- a/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserServiceImpl.java +++ b/auth-services/service-base/src/main/java/com/auth/service/base/service/impl/UserServiceImpl.java @@ -3,7 +3,7 @@ package com.auth.service.base.service.impl; import com.auth.common.model.common.result.PageResult; import com.auth.model.base.dto.UserDto; import com.auth.model.base.vo.UserVo; -import com.auth.dao.base.entity.base.UserEntity; +import com.auth.dao.base.entity.UserEntity; import com.auth.dao.base.mapper.v1.UserMapper; import com.auth.service.base.service.UserService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/auth-services/service-base/src/main/resources/application-dev.yml b/auth-services/service-base/src/main/resources/application-dev.yml index e06f7d2..3f02cc4 100644 --- a/auth-services/service-base/src/main/resources/application-dev.yml +++ b/auth-services/service-base/src/main/resources/application-dev.yml @@ -5,9 +5,3 @@ bunny: database: test_auth username: bunny_test password: "Test1234" - testJwt: - host: rm-bp12z6hlv46vi6g8mro.mysql.rds.aliyuncs.com - port: 3306 - database: test_jwt - username: bunny_test - password: "Test1234" \ No newline at end of file diff --git a/auth-services/service-base/src/main/resources/templates/index.html b/auth-services/service-base/src/main/resources/templates/index.html index f302ee4..c255828 100644 --- a/auth-services/service-base/src/main/resources/templates/index.html +++ b/auth-services/service-base/src/main/resources/templates/index.html @@ -1,463 +1,254 @@ - + - Spring Security 6 学习中心 - + Spring Security 6 | 自定义权限校验后台管理系统 + + -
+
+ -
-
-
-

掌握 Spring Security 6

-

学习最强大的Java安全框架,保护您的应用程序免受现代安全威胁。Spring Security - 6提供了全面的身份验证和授权功能,让您的应用安全无忧。

-
- 开始学习 - 查看API文档 +
+
+

Spring Security 6 后台管理系统

+

基于Spring Security 6的自定义权限校验解决方案,提供安全、高效的后台管理体验

+ +
+
+ + +
+
+

核心特性

+

Spring Security 6 提供的最新安全特性与自定义权限校验完美结合

+
+ +
+
+
+
+ +
+

自定义权限校验

+

基于Spring Security + 6的全新授权架构,实现灵活的自定义权限校验逻辑,满足复杂业务场景需求。

+
+
+ +
+
+
+ +
+

RBAC权限控制

+

基于角色的访问控制(RBAC),支持多级角色权限分配,精细到按钮级别的权限控制。

+
+
+ +
+
+
+ +
+

高性能设计

+

优化权限校验流程,减少不必要的数据库查询,权限校验效率提升40%以上。

+
+
+ +
+
+
+ +
+

响应式设计

+

全面适配各种设备屏幕,从桌面到移动端,管理体验始终如一。

+
+
+ +
+
+
+ +
+

实时监控

+

系统安全事件实时监控,登录日志、操作日志完整记录,便于审计追踪。

+
+
+ +
+
+
+ +
+

API集成

+

完善的RESTful API设计,支持Swagger文档,方便与其他系统集成。

- -
+ +
-
-

Spring Security 6 核心特性

-

Spring Security 6引入了许多强大的新功能,使应用程序安全比以往任何时候都更简单、更强大。

+
+

技术栈

+

基于最前沿的Java生态技术构建

-
-
-
- -
-

现代化的认证

-

支持OAuth 2.0、OpenID Connect、SAML 2.0等多种认证协议,满足现代应用的安全需求。

-
-
-
- -
-

强大的授权

-

细粒度的权限控制,支持方法级安全、领域对象安全等多种授权模式。

-
-
-
- -
-

防护机制

-

内置CSRF防护、点击劫持防护、内容安全策略等安全机制,保护应用免受常见攻击。

-
+ +
+ Spring Security 6 + Spring Boot 3 + Java 17 + Thymeleaf + JWT + MySQL + Redis + WebJars + Bootstrap 5 + Font Awesome
- -
-
-
-

学习资源与文档

-

探索我们的文档和工具,快速掌握Spring Security 6的强大功能。

-
-
-
-
-
-

API 文档

-

详细的API参考文档,包含所有类、方法和配置选项的详细说明,帮助您充分利用Spring Security - 6的所有功能。

- 查看API文档 + +
+
+

系统预览

+

直观易用的管理界面

+
+ +
+
+
+ 登录界面 +
+
安全登录
+

多因素认证支持,图形验证码,防止暴力破解。

-
-
-
-

Swagger UI

-

交互式API文档,可以直接在浏览器中测试API端点,查看请求和响应示例,加快开发流程。

- 访问Swagger UI +
+
+
+ 权限管理 +
+
权限管理
+

可视化权限配置,角色与资源灵活关联。

@@ -465,38 +256,54 @@
-