Skip to content

security

django_spire.api.auth.security

ApiKeySecurity

Bases: APIKeyBase

Source code in django_spire/api/auth/security.py
def __init__(
    self,
    api_permission_required: ApiPermissionChoices | None = None,
    user_permission_required: str | None = None,
) -> None:
    self.api_permission_required = api_permission_required
    self.user_permission_required = user_permission_required
    super().__init__()

param_name = 'api_key' class-attribute instance-attribute

openapi_in = 'query' class-attribute instance-attribute

api_permission_required = api_permission_required instance-attribute

user_permission_required = user_permission_required instance-attribute

authenticate

Source code in django_spire/api/auth/security.py
def authenticate(self, request: HttpRequest, key: str | None) -> bool | ApiAccess:
    if key is None:
        return False

    api_access = ApiAccess.objects.get_by_key_or_none(key)

    if api_access is None:
        return False

    if api_access.has_super_access:
        return self._authorize_request(request, api_access)

    if (
        self.api_permission_required is not None
        and api_access.permission < self.api_permission_required
    ):
        return False

    if self.user_permission_required is not None and (
        api_access.user is None or not api_access.user.has_perm(self.user_permission_required)
    ):
        return False

    return self._authorize_request(request, api_access)