package com.iailab.module.system.dal.dataobject.oauth2; import com.iailab.framework.common.enums.CommonStatusEnum; import com.iailab.framework.mybatis.core.dataobject.BaseDO; import com.iailab.module.system.enums.oauth2.OAuth2GrantTypeEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.List; /** * OAuth2 客户端 DO * * @author iailab */ @TableName(value = "system_oauth2_client", autoResultMap = true) @KeySequence("system_oauth2_client_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) public class OAuth2ClientDO extends BaseDO { /** * 编号,数据库自增 * * 由于 SQL Server 在存储 String 主键有点问题,所以暂时使用 Long 类型 */ @TableId private Long id; /** * 客户端编号 */ private String clientId; /** * 客户端密钥 */ private String secret; /** * 应用名 */ private String name; /** * 应用图标 */ private String logo; /** * 应用描述 */ private String description; /** * 状态 * * 枚举 {@link CommonStatusEnum} */ private Integer status; /** * 访问令牌的有效期 */ private Integer accessTokenValiditySeconds; /** * 刷新令牌的有效期 */ private Integer refreshTokenValiditySeconds; /** * 可重定向的 URI 地址 */ @TableField(typeHandler = JacksonTypeHandler.class) private List redirectUris; /** * 授权类型(模式) * * 枚举 {@link OAuth2GrantTypeEnum} */ @TableField(typeHandler = JacksonTypeHandler.class) private List authorizedGrantTypes; /** * 授权范围 */ @TableField(typeHandler = JacksonTypeHandler.class) private List scopes; /** * 自动授权的 Scope * * code 授权时,如果 scope 在这个范围内,则自动通过 */ @TableField(typeHandler = JacksonTypeHandler.class) private List autoApproveScopes; /** * 权限 */ @TableField(typeHandler = JacksonTypeHandler.class) private List authorities; /** * 资源 */ @TableField(typeHandler = JacksonTypeHandler.class) private List resourceIds; /** * 附加信息,JSON 格式 */ private String additionalInformation; }