domain.enums.permission¶
src.domain.enums.permission
¶
Permission components for RBAC authorization.
This module defines Resource and Action enums used for permission checks. Permissions are expressed as resource:action pairs (e.g., "accounts:read").
Reference
- docs/architecture/authorization-architecture.md
Usage
from src.domain.enums import Resource, Action
Permission check¶
allowed = await authz.check_permission( user_id=user.id, resource=Resource.ACCOUNTS, action=Action.WRITE, )
FastAPI dependency¶
@router.get("/accounts") async def list_accounts( _: None = Depends(require_permission(Resource.ACCOUNTS, Action.READ)), ): ...
Classes¶
Resource
¶
Bases: str, Enum
Resources that can be protected by authorization.
Each resource represents a domain concept that users can access. Used with Action enum to form permission checks.
String Enum
Inherits from str for easy serialization and Casbin compatibility. Values are lowercase to match Casbin policy format.
Resource Categories
User Domain: - ACCOUNTS: Financial accounts - TRANSACTIONS: Transaction history - PROVIDERS: Brokerage connections - SESSIONS: Login sessions
Admin Domain: - USERS: User management - ADMIN: Administrative functions - SECURITY: Security settings
Source code in src/domain/enums/permission.py
Attributes¶
ACCOUNTS
class-attribute
instance-attribute
¶
Financial accounts (bank, brokerage, etc.).
TRANSACTIONS
class-attribute
instance-attribute
¶
Transaction history and details.
PROVIDERS
class-attribute
instance-attribute
¶
Brokerage provider connections.
SECURITY
class-attribute
instance-attribute
¶
Security settings like token rotation (admin only).
Functions¶
values
classmethod
¶
Get all resource values as strings.
Returns:
| Type | Description |
|---|---|
list[str]
|
list[str]: List of resource values. |
Action
¶
Bases: str, Enum
Actions that can be performed on resources.
Combined with Resource to form permission checks. Currently supports read/write; can be extended for granular control.
String Enum
Inherits from str for easy serialization and Casbin compatibility. Values are lowercase to match Casbin policy format.
Action Semantics
READ: View, list, get operations (safe, no side effects) WRITE: Create, update, delete operations (modifies state)
Future Extensions
- DELETE: Separate delete permission
- MANAGE: Full control including delete
- EXPORT: Data export permission