freeleaps-service-hub/apps/authentication/backend/models/user/models.py

80 lines
2.0 KiB
Python

from typing import Optional, List
from ..base_doc import BaseDoc
from .constants import UserAccountProperty
from backend.models.permission.constants import (
AdministrativeRole,
Capability,
)
from datetime import datetime
from common.constants.region import UserRegion
from .constants import AuthType
class UserAccountDoc(BaseDoc):
profile_id: Optional[str]
account_id: Optional[str]
service_plan_id: Optional[str]
properties: UserAccountProperty
capabilities: Capability
user_role: int = AdministrativeRole.NONE
preferred_region: UserRegion = UserRegion.ZH_CN
class Settings:
name = "user_account"
class UserPasswordDoc(BaseDoc):
user_id: str
password: str
class Settings:
name = "user_password"
class UserEmailDoc(BaseDoc):
user_id: str
email: str
class Settings:
name = "user_email"
class UserMobileDoc(BaseDoc):
user_id: str
mobile: str
class Settings:
name = "user_mobile"
class AuthCodeDoc(BaseDoc):
auth_code: str
method: str
method_type: AuthType
expiry: datetime
used: bool = False
class Settings:
name = "user_auth_code"
class UsageLogDoc(BaseDoc):
timestamp: datetime = datetime.utcnow() # timestamp
tenant_id: str # tenant id
operation: str # operation type
request_id: str # request id # TODO: use true one
status: str # operation status
latency_ms: int # latency time(milliseconds)
bytes_in: int # input bytes
bytes_out: int # output bytes
key_id: Optional[str] = None # API Key ID
extra: dict = {} # extra information
class Settings:
name = "usage_log_doc"
indexes = [
"tenant_id",
"request_id",
"key_id"
]