23 lines
665 B
Python
23 lines
665 B
Python
"""Domain entity: WorkspaceInvitation (single-use partner invite).
|
|
|
|
token_hash stores SHA-256(raw_token). The raw token is returned to the caller
|
|
once and never persisted. Redemption compares SHA-256(presented_token) against
|
|
this hash.
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
|
|
@dataclass
|
|
class WorkspaceInvitation:
|
|
id: UUID
|
|
workspace_id: UUID
|
|
token_hash: str # SHA-256 of the one-time token; raw token never stored
|
|
invited_by_user_id: UUID
|
|
status: str # 'pending' | 'accepted' | 'revoked' | 'expired'
|
|
expires_at: datetime
|
|
created_at: datetime
|
|
accepted_at: datetime | None = None
|