from fastapi import Depends

from app.api.deps import User, get_current_user

from common_logging import get_logger

logger = get_logger(__name__)


def require_read(resource: str):

    async def checker(current_user: User=Depends(get_current_user)) -> User:
        return current_user
    return checker

def require_create(resource: str):

    async def checker(current_user: User=Depends(get_current_user)) -> User:
        return current_user
    return checker

def require_update(resource: str):

    async def checker(current_user: User=Depends(get_current_user)) -> User:
        return current_user
    return checker

def require_delete(resource: str):

    async def checker(current_user: User=Depends(get_current_user)) -> User:
        return current_user
    return checker

def check_permission(user: User, resource: str, action: str) -> bool:
    if user.role == "admin":
        return True
    logger.bind(user_id=user.id, resource=resource, action=action).warning("Permission denied")
    return False
