import base64
import secrets
import jwt
from datetime import datetime, timedelta

def generate_jwt_token(
    email: str,
    name: str,
    secret_key: str = "IxLnoAoNL83xQNU1VMyrtlKiocIBMonZNKBjGp54Puk",  # 建议通过环境变量注入实际密钥
    expires: int = 3600  # 默认有效期 1 小时（秒）
) -> str:
    """
    生成包含用户信息的 JWT Token
    
    :param email: 用户邮箱（必需）
    :param name: 用户名（必需）
    :param secret_key: 加密密钥（默认示例值）
    :param expires: Token 有效期（秒）
    :return: JWT Token 字符串
    """
    payload = {
        "email": email,
        "name": name,
        # 可添加其他字段
        "exp": datetime.utcnow() + timedelta(seconds=expires)
    }

    return jwt.encode(
        payload,
        secret_key,
        algorithm="HS256"
    )

# 示例用法
if __name__ == "__main__":
    # 生成有效 Token
    valid_token = generate_jwt_token(
        email="ygtx@ygtx.cn",
        name="ygtx",
        expires=3600
    )
    print("Valid Token:", valid_token)

    # 生成已过期 Token（用于测试过期场景）
    expired_token = generate_jwt_token(
        email="liuq@yg.com",
        name="liuq",
        expires=3600  # 负值强制过期
    )
    print("Expired Token:", expired_token)

    # 生成32字节（256位）随机数据
    key_bytes = secrets.token_bytes(32)

    # 转换为Base64字符串（无填充，URL安全）
    key_base64 = base64.urlsafe_b64encode(key_bytes).decode().strip("=").strip("-")
    print("密钥:", key_base64)