package cn.aqroid.business.auth.service;

import cn.aqroid.business.auth.domain.ApiLoginUser;

/**
 * API Token服务接口
 * 用于小程序端JWT Token的生成和验证
 *
 * @author aqroid
 * @date 2026-01-12
 */
public interface ApiTokenService {

    /**
     * 创建Token
     *
     * @param loginUser 登录用户信息
     * @return JWT Token
     */
    String createToken(ApiLoginUser loginUser);

    /**
     * 验证Token并获取用户信息
     *
     * @param token JWT Token
     * @return 登录用户信息，验证失败返回null
     */
    ApiLoginUser validateToken(String token);

    /**
     * 刷新Token
     *
     * @param loginUser 登录用户信息
     */
    void refreshToken(ApiLoginUser loginUser);

    /**
     * 使Token失效
     *
     * @param token JWT Token
     */
    void invalidateToken(String token);

    /**
     * 从请求头中获取Token
     *
     * @param header Authorization请求头
     * @return Token字符串
     */
    String getTokenFromHeader(String header);

    /**
     * 获取Token的唯一标识
     *
     * @param token JWT Token
     * @return Token UUID
     */
    String getTokenKey(String token);
}
