Skip to content

Auth

provide.foundation.errors.auth

TODO: Add module docstring.

Classes

AuthenticationError

AuthenticationError(
    message: str,
    *,
    auth_method: str | None = None,
    realm: str | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when authentication fails.

Parameters:

Name Type Description Default
message str

Error message describing the authentication failure.

required
auth_method str | None

Optional authentication method used.

None
realm str | None

Optional authentication realm.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise AuthenticationError("Invalid credentials")
>>> raise AuthenticationError("Token expired", auth_method="jwt")
Source code in provide/foundation/errors/auth.py
def __init__(
    self,
    message: str,
    *,
    auth_method: str | None = None,
    realm: str | None = None,
    **kwargs: Any,
) -> None:
    if auth_method:
        kwargs.setdefault("context", {})["auth.method"] = auth_method
    if realm:
        kwargs.setdefault("context", {})["auth.realm"] = realm
    super().__init__(message, **kwargs)

AuthorizationError

AuthorizationError(
    message: str,
    *,
    required_permission: str | None = None,
    resource: str | None = None,
    actor: str | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when authorization fails.

Parameters:

Name Type Description Default
message str

Error message describing the authorization failure.

required
required_permission str | None

Optional required permission.

None
resource str | None

Optional resource being accessed.

None
actor str | None

Optional actor (user/service) attempting access.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise AuthorizationError("Access denied")
>>> raise AuthorizationError("Insufficient permissions", required_permission="admin")
Source code in provide/foundation/errors/auth.py
def __init__(
    self,
    message: str,
    *,
    required_permission: str | None = None,
    resource: str | None = None,
    actor: str | None = None,
    **kwargs: Any,
) -> None:
    if required_permission:
        kwargs.setdefault("context", {})["authz.permission"] = required_permission
    if resource:
        kwargs.setdefault("context", {})["authz.resource"] = resource
    if actor:
        kwargs.setdefault("context", {})["authz.actor"] = actor
    super().__init__(message, **kwargs)