domain.protocols.security_config_repository¶
src.domain.protocols.security_config_repository
¶
Security config repository protocol for persistence abstraction.
This module defines the port (interface) for security config persistence. Infrastructure layer implements the adapter.
Reference
- docs/architecture/token-breach-rotation-architecture.md
Classes¶
SecurityConfigRepository
¶
Bases: Protocol
Security config repository protocol (port) for persistence.
Defines the interface for security config storage operations. Infrastructure layer provides the adapter implementation.
This follows hexagonal architecture: domain defines ports, infrastructure implements adapters.
Note
SecurityConfig is a singleton table (only one row with id=1). The get() method returns None if not initialized.
Example
class PostgresSecurityConfigRepository: ... async def get(self) -> SecurityConfig | None: ... # Fetch from PostgreSQL ... ... ...
PostgresSecurityConfigRepository implements SecurityConfigRepository¶
via structural typing (no inheritance needed)¶
Source code in src/domain/protocols/security_config_repository.py
Functions¶
get
async
¶
Get the security configuration.
Returns the singleton security config row.
Returns:
| Type | Description |
|---|---|
SecurityConfig | None
|
SecurityConfig if exists, None if not initialized. |
get_or_create_default
async
¶
Get security config or create with defaults.
Ensures the singleton config row exists. Creates with default values if missing.
Returns:
| Name | Type | Description |
|---|---|---|
SecurityConfig |
SecurityConfig
|
The singleton configuration. |
Default values
- global_min_token_version: 1
- grace_period_seconds: 300 (5 minutes)
Source code in src/domain/protocols/security_config_repository.py
update_global_version
async
¶
Update global minimum token version.
Used to trigger global token rotation (invalidate all tokens with version below new_version).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_version
|
int
|
New global minimum token version. |
required |
reason
|
str
|
Reason for rotation (for audit trail). |
required |
rotation_time
|
datetime
|
When rotation was triggered. |
required |
Returns:
| Type | Description |
|---|---|
SecurityConfig
|
Updated SecurityConfig. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If new_version <= current version. |
Source code in src/domain/protocols/security_config_repository.py
update_grace_period
async
¶
Update grace period for token rotation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
grace_period_seconds
|
int
|
New grace period in seconds. |
required |
Returns:
| Type | Description |
|---|---|
SecurityConfig
|
Updated SecurityConfig. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If grace_period_seconds < 0. |