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

import lombok.Data;

/**
 * OAuth2 授权请求 DTO 对应 /oauth2/authorize 端点的请求参数
 *
 * @author meowrain
 * @since 2025-12-14
 */
@Data
public class OAuth2AuthorizeRequest {

	/**
	 * 响应类型（固定为 "code"）
	 */
	private String responseType;

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

	/**
	 * 重定向 URI
	 */
	private String redirectUri;

	/**
	 * 授权范围（空格分隔，如 "openid profile email"）
	 */
	private String scope;

	/**
	 * 状态参数（用于 CSRF 防护）
	 */
	private String state;

	/**
	 * PKCE Code Challenge
	 */
	private String codeChallenge;

	/**
	 * PKCE Code Challenge Method（默认 S256）
	 */
	private String codeChallengeMethod;

	/**
	 * Nonce 参数（用于 ID Token 防重放）
	 */
	private String nonce;

	/**
	 * 用户 ID（授权后由服务器设置）
	 */
	private Long userId;

}
