Files
mkt.ose.tw/backend/app/domain/auth.py
2026-03-23 20:23:58 +08:00

36 lines
1.0 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
@dataclass(slots=True)
class PermissionContext:
"""Normalized business permission context derived from Directus identity."""
is_admin: bool = False
can_manage_sites: bool = False
can_manage_experiments: bool = False
can_manage_variants: bool = False
can_manage_releases: bool = False
can_manage_goals: bool = False
can_manage_sdk_configs: bool = False
can_use_editor: bool = False
can_read_runtime: bool = False
raw_permissions: list[str] = field(default_factory=list)
@dataclass(slots=True)
class AuthenticatedPrincipal:
id: str
email: str | None = None
first_name: str | None = None
status: str | None = None
fb_token: str | None = None
role_id: str | None = None
role_name: str | None = None
user_group_id: str | None = None
user_group_name: str | None = None
domain_permissions: list[str] = field(default_factory=list)
permissions: PermissionContext = field(default_factory=PermissionContext)