package org.xyzh.common.core.security;

import io.jsonwebtoken.Claims;

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

