package cn.meowrain.aioj.backend.auth.oauth2.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * OAuth2 客户端实体
 *
 * @author meowrain
 * @since 2025-12-14
 */
@Data
@TableName("oauth2_client")
public class OAuth2Client {

	/**
	 * 主键
	 */
	@TableId(type = IdType.AUTO)
	private Long id;

	/**
	 * 客户端 ID
	 */
	private String clientId;

	/**
	 * 客户端密钥（BCrypt 加密，公共客户端为 NULL）
	 */
	private String clientSecret;

	/**
	 * 客户端名称
	 */
	private String clientName;

	/**
	 * 客户端类型：confidential（机密）/ public（公共）
	 */
	private String clientType;

	/**
	 * 重定向 URI 列表（JSON 数组格式）
	 */
	private String redirectUris;

	/**
	 * 登出后重定向 URI 列表（JSON 数组格式）
	 */
	private String postLogoutRedirectUris;

	/**
	 * 允许的作用域（逗号分隔）
	 */
	private String allowedScopes;

	/**
	 * 允许的授权类型（逗号分隔）
	 */
	private String allowedGrantTypes;

	/**
	 * Access Token 有效期（秒）
	 */
	private Integer accessTokenTtl;

	/**
	 * Refresh Token 有效期（秒）
	 */
	private Integer refreshTokenTtl;

	/**
	 * 是否要求 PKCE
	 */
	private Boolean requirePkce;

	/**
	 * 是否启用
	 */
	private Boolean isEnabled;

	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;

	/**
	 * 更新时间
	 */
	private LocalDateTime updateTime;

}
