50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from beanie import Document
|
|
from datetime import datetime
|
|
from typing import Optional, List
|
|
|
|
|
|
class PermissionDoc(Document):
|
|
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
|
|
|
|
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(Document):
|
|
role_key: str
|
|
role_name: str
|
|
role_description: Optional[str] = None
|
|
permission_ids: list[str]
|
|
role_level: int
|
|
created_at: datetime = datetime.now() # Creation timestamp, auto-generated
|
|
updated_at: datetime = datetime.now() # Last update timestamp, auto-updated
|
|
|
|
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(Document):
|
|
"""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"
|
|
] |