brestok's picture
Add user registration endpoint and role support
faa9d54
from datetime import datetime
from passlib.context import CryptContext
from pydantic import field_validator, Field, EmailStr
from trauma.api.account.dto import AccountType
from trauma.core.database import MongoBaseModel
class AccountModel(MongoBaseModel):
email: EmailStr
password: str | None = Field(exclude=True, default=None)
role: str | None = None
accountType: AccountType = AccountType.User
datetimeInserted: datetime = Field(default_factory=datetime.now)
datetimeUpdated: datetime = Field(default_factory=datetime.now)
@field_validator("datetimeUpdated", mode="before", check_fields=False)
@classmethod
def validate_datetimeUpdated(cls, v):
return v or datetime.now()
@field_validator('password', mode='before', check_fields=False)
@classmethod
def set_password_hash(cls, v):
if not v.startswith("$2b$"):
return CryptContext(schemes=["bcrypt"], deprecated="auto").hash(v)
return v
class Config:
arbitrary_types_allowed = True
json_encoders = {
datetime: lambda dt: dt.isoformat()
}