28 lines
842 B
Python
28 lines
842 B
Python
"""Abstract base class for entitlements backends."""
|
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
|
class EntitlementsBackend(ABC):
|
|
"""Abstract base class that defines the interface for entitlements backends."""
|
|
|
|
@abstractmethod
|
|
def get_user_entitlements(
|
|
self, user_sub, user_email, user_info=None, force_refresh=False
|
|
):
|
|
"""Fetch user entitlements.
|
|
|
|
Args:
|
|
user_sub: The user's OIDC subject identifier.
|
|
user_email: The user's email address.
|
|
user_info: The full OIDC user_info dict (backends may
|
|
extract claims from it).
|
|
force_refresh: If True, bypass any cache and fetch fresh data.
|
|
|
|
Returns:
|
|
dict: {"can_access": bool}
|
|
|
|
Raises:
|
|
EntitlementsUnavailableError: If the backend cannot be reached.
|
|
"""
|