Align the project baseline with the latest admin interface styling and layout structure while documenting setup and usage updates in README.
35 lines
760 B
Python
35 lines
760 B
Python
from pydantic import BaseModel, EmailStr, Field, field_validator
|
|
|
|
from app.core.password_policy import validate_password_strength
|
|
|
|
|
|
class UserOut(BaseModel):
|
|
id: str
|
|
email: EmailStr
|
|
role: str
|
|
status: str
|
|
|
|
|
|
class UserProfileOut(BaseModel):
|
|
display_name: str
|
|
avatar_url: str | None = None
|
|
|
|
|
|
class UserMeOut(BaseModel):
|
|
user: UserOut
|
|
profile: UserProfileOut
|
|
|
|
|
|
class UserPatchIn(BaseModel):
|
|
display_name: str | None = Field(default=None, min_length=1, max_length=120)
|
|
|
|
|
|
class PasswordChangeIn(BaseModel):
|
|
current_password: str
|
|
new_password: str = Field(min_length=8)
|
|
|
|
@field_validator("new_password")
|
|
@classmethod
|
|
def password_policy(cls, value: str) -> str:
|
|
return validate_password_strength(value)
|