package com.chinaweal.aiccs.org.service;

import com.chinaweal.aiccs.org.entity.dto.UnifiedAuthDTO;

/**
 * 统一认证平台OAuth2服务接口
 *
 * @author lroyia
 * @since 2025/03/02
 */
public interface IUnifiedAuthService {

    /**
     * 生成统一认证平台登录URL
     *
     * @param state 状态参数，用于防止CSRF攻击
     * @return 登录URL
     */
    String buildLoginUrl(String state);

    /**
     * 通过授权码获取访问令牌
     *
     * @param code 授权码
     * @return 令牌响应
     */
    UnifiedAuthDTO.TokenResponse getAccessToken(String code);

    /**
     * 通过访问令牌获取用户信息
     *
     * @param accessToken 访问令牌
     * @return 用户信息
     */
    UnifiedAuthDTO.UserInfoResponse getUserInfo(String accessToken);

    /**
     * 单点登出
     *
     * @param accessToken 访问令牌
     * @return 登出结果
     */
    UnifiedAuthDTO.LogoutResponse logout(String accessToken);

    /**
     * 验证令牌有效性
     *
     * @param accessToken 访问令牌
     * @return 是否有效
     */
    boolean checkToken(String accessToken);
}