"""认证授权模块。"""

from typing import Optional


def is_authorized(user_id: str, allowed_users: list[str]) -> bool:
    """
    检查用户是否被授权。

    Args:
        user_id: 用户 ID
        allowed_users: 允许的用户 ID 列表

    Returns:
        如果空白名单或用户在白名单中返回 True
    """
    if not allowed_users:
        return True
    return user_id in allowed_users


def check_user_permission(user_id: str, allowed_users: list[str]) -> tuple[bool, Optional[str]]:
    """
    检查用户权限并返回结果和消息。

    Args:
        user_id: 用户 ID
        allowed_users: 允许的用户 ID 列表

    Returns:
        (是否允许, 错误消息或 None)
    """
    if not is_authorized(user_id, allowed_users):
        return False, f"用户 {user_id} 无权限使用此服务"
    return True, None
