llm-ready-data / app /core /auth /models.py
validops-east-1's picture
feat: add tidb
5a01a63
Raw
History Blame Contribute Delete
1.64 kB
from __future__ import annotations
import uuid
from dataclasses import dataclass, field
from datetime import datetime, timezone
from typing import Optional
def _utcnow() -> datetime:
return datetime.now(timezone.utc)
def _uuid() -> str:
return str(uuid.uuid4())
@dataclass
class User:
id: str = field(default_factory=_uuid)
email: str = ""
username: Optional[str] = None
full_name: Optional[str] = None
password_hash: str = ""
is_active: bool = True
is_verified: bool = False
failed_login_attempts: int = 0
locked_until: Optional[datetime] = None
last_login: Optional[datetime] = None
password_changed_at: Optional[datetime] = None
created_at: datetime = field(default_factory=_utcnow)
updated_at: datetime = field(default_factory=_utcnow)
deleted_at: Optional[datetime] = None
roles: list[str] = field(default_factory=list)
@dataclass
class RefreshSession:
id: str = field(default_factory=_uuid)
user_id: str = ""
token_key: str = ""
token_hash: str = ""
device_info: Optional[str] = None
ip_address: Optional[str] = None
expires_at: Optional[datetime] = None
revoked_at: Optional[datetime] = None
created_at: datetime = field(default_factory=_utcnow)
updated_at: datetime = field(default_factory=_utcnow)
@dataclass
class Role:
id: str = field(default_factory=_uuid)
name: str = ""
description: Optional[str] = None
permissions: list[str] = field(default_factory=list)
@dataclass
class Permission:
id: str = field(default_factory=_uuid)
code: str = ""
description: Optional[str] = None