Files

58 lines
1.5 KiB
Python
Raw Permalink Normal View History

from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
from enum import Enum
class CapabilityTier(str, Enum):
ADMIN = "admin"
EDITOR = "editor"
VIEWER = "viewer"
class UserSession(BaseModel):
id: str
username: str
name: str
email: Optional[str] = None
auth_provider: str = "local" # "local" or "keycloak"
raw_roles: List[str] = Field(default_factory=list)
raw_groups: List[str] = Field(default_factory=list)
capability: str = "viewer" # "admin", "editor", "viewer"
can_edit: bool = False
can_deploy: bool = False
is_admin: bool = False
is_readonly: bool = True
class LoginRequest(BaseModel):
username: str
password: str
class SSOCallbackRequest(BaseModel):
code: str
redirect_uri: str
code_verifier: Optional[str] = None
class SSOTokenVerifyRequest(BaseModel):
access_token: str
class TokenResponse(BaseModel):
access_token: str
token_type: str = "Bearer"
expires_in: int = 86400
user: UserSession
class RBACSettingsSchema(BaseModel):
editor_roles: List[str] = Field(default_factory=list)
editor_groups: List[str] = Field(default_factory=list)
viewer_roles: List[str] = Field(default_factory=list)
viewer_groups: List[str] = Field(default_factory=list)
admin_roles: List[str] = Field(default_factory=list)
admin_groups: List[str] = Field(default_factory=list)
updated_at: Optional[str] = None
updated_by: Optional[str] = None