package org.xyzh.common.auth.token;

import io.jsonwebtoken.Claims;

/**
 * @description    TokenParser.java文件描述 令牌解析器接口
 * @filename    TokenParser.java
 * @author    yslg
 * @copyright yslg
 * @since 2025-11-02
 */
public interface TokenParser {
    
    /**
     * @description    从令牌中获取用户ID
     * @param    token 令牌
     * @return    String 用户ID
     * @author    yslg
     * @since 2025-11-02
     */
    String getUserIdFromToken(String token);
    
    /**
     * @description    从令牌中获取所有声明信息
     * @param    token 令牌
     * @return    Claims 所有声明信息
     * @author    yslg
     * @since 2025-11-02
     */
    Claims getAllClaimsFromToken(String token);
    
    /**
     * @description    验证令牌
     * @param    token 令牌
     * @param    userId 用户ID
     * @return    Boolean 是否有效
     * @author    yslg
     * @since 2025-11-02
     */
    Boolean validateToken(String token, String userId);
    
    /**
     * @description    检查令牌是否过期
     * @param    token 令牌
     * @return    Boolean 是否过期
     * @author    yslg
     * @since 2025-11-02
     */
    Boolean isTokenExpired(String token);
}

