from abc import ABCMeta, abstractmethod
from typing import Union
from auth_middleware.types.jwt import JWTAuthorizationCredentials
[docs]
class PermissionsProvider(metaclass=ABCMeta):
"""Basic interface for a permissions provider
Args:
metaclass (_type_, optional): _description_. Defaults to ABCMeta.
"""
[docs]
@abstractmethod
async def fetch_permissions(self, token: Union[str, JWTAuthorizationCredentials]) -> list[str]:
"""Get permissions using the token provided
Args:
token (JWTAuthorizationCredentials): _description_
Raises:
NotImplementedError: _description_
Returns:
List[str]: _description_
"""
raise NotImplementedError("This method should be overridden by subclasses")