53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
from datetime import datetime
|
|
from typing import Optional, List
|
|
from ..base_doc import BaseDoc
|
|
|
|
|
|
class PermissionDoc(BaseDoc):
|
|
permission_name: str
|
|
permission_key: str
|
|
description: Optional[str] = None # Description of the permission, optional
|
|
created_at: datetime = datetime.now() # Creation timestamp, auto-generated
|
|
updated_at: datetime = datetime.now() # Last update timestamp, auto-updated
|
|
is_default: bool = False
|
|
|
|
class Settings:
|
|
# Default collections created by Freeleaps for tenant databases use '_' prefix
|
|
# to prevent naming conflicts with tenant-created collections
|
|
name = "_permission"
|
|
indexes = [
|
|
"permission_key"
|
|
]
|
|
|
|
|
|
class RoleDoc(BaseDoc):
|
|
role_key: str
|
|
role_name: str
|
|
role_description: Optional[str] = None
|
|
permission_ids: list[str]
|
|
role_level: int
|
|
revision_id: Optional[str] = None # Revision ID for version control
|
|
created_at: datetime = datetime.now() # Creation timestamp, auto-generated
|
|
updated_at: datetime = datetime.now() # Last update timestamp, auto-updated
|
|
is_default: bool = False
|
|
|
|
class Settings:
|
|
# Default collections created by Freeleaps for tenant databases use '_' prefix
|
|
# to prevent naming conflicts with tenant-created collections
|
|
name = "_role"
|
|
indexes = [
|
|
"role_level"
|
|
]
|
|
|
|
class UserRoleDoc(BaseDoc):
|
|
"""User role doc"""
|
|
user_id: str
|
|
role_ids: Optional[List[str]]
|
|
|
|
class Settings:
|
|
# Default collections created by Freeleaps for tenant databases use '_' prefix
|
|
# to prevent naming conflicts with tenant-created collections
|
|
name = "_user_role"
|
|
indexes = [
|
|
"user_id"
|
|
] |