All checks were successful
PostgreSQL Compatibility Matrix / PG14 smoke (push) Successful in 9s
PostgreSQL Compatibility Matrix / PG15 smoke (push) Successful in 8s
PostgreSQL Compatibility Matrix / PG16 smoke (push) Successful in 8s
PostgreSQL Compatibility Matrix / PG17 smoke (push) Successful in 7s
PostgreSQL Compatibility Matrix / PG18 smoke (push) Successful in 7s
Introduced a backend API endpoint for changing user passwords with validation. Added a new "User Settings" page in the frontend to allow users to update their passwords, including a matching UI update for navigation and styles.
36 lines
772 B
Python
36 lines
772 B
Python
from datetime import datetime
|
|
from pydantic import BaseModel, EmailStr, field_validator
|
|
|
|
|
|
class UserOut(BaseModel):
|
|
id: int
|
|
email: EmailStr
|
|
role: str
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
email: EmailStr
|
|
password: str
|
|
role: str = "viewer"
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
email: EmailStr | None = None
|
|
password: str | None = None
|
|
role: str | None = None
|
|
|
|
|
|
class UserPasswordChange(BaseModel):
|
|
current_password: str
|
|
new_password: str
|
|
|
|
@field_validator("new_password")
|
|
@classmethod
|
|
def validate_new_password(cls, value: str) -> str:
|
|
if len(value) < 8:
|
|
raise ValueError("new_password must be at least 8 characters")
|
|
return value
|