package com.emotion.service;

import com.emotion.dto.request.AdminLoginRequest;
import com.emotion.dto.response.AdminAuthResponse;
import com.emotion.dto.response.AdminInfoResponse;

import javax.servlet.http.HttpServletRequest;

/**
 * 管理员认证服务接口
 *
 * @author emotion-museum
 * @date 2025-10-27
 */
public interface AdminAuthService {

    /**
     * 管理员登录
     *
     * @param request 登录请求
     * @return 认证响应
     */
    AdminAuthResponse login(AdminLoginRequest request);

    /**
     * 获取当前管理员信息
     *
     * @param adminId 管理员ID
     * @return 管理员信息响应
     */
    AdminInfoResponse getCurrentAdminInfo(String adminId);

    /**
     * 管理员登出
     *
     * @param request HTTP请求
     * @return 是否登出成功
     */
    boolean logout(HttpServletRequest request);

    /**
     * 刷新访问令牌
     *
     * @param refreshToken 刷新令牌
     * @return 新的认证响应
     */
    AdminAuthResponse refreshToken(String refreshToken);

    /**
     * 验证访问令牌
     *
     * @param request HTTP请求
     * @return 是否有效
     */
    boolean validateToken(HttpServletRequest request);

    /**
     * 从令牌中获取管理员ID
     *
     * @param token 访问令牌
     * @return 管理员ID
     */
    String getAdminIdFromToken(String token);
}
