dak.c2s/backend/app/schemas/user.py
CCS Admin 6bc0b3ac5a feat: add ProfileUpdate schema and extend UserResponse with profile fields
- Add first_name, last_name, display_name, avatar_url to UserResponse
- Add ProfileUpdate schema for self-service profile editing
- Add MFADisableRequest schema for password-confirmed MFA disable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:35:54 +00:00

53 lines
1.3 KiB
Python

"""Pydantic v2 schemas for User responses and mutations."""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, EmailStr
class UserResponse(BaseModel):
"""Public representation of a user (returned by API endpoints)."""
id: int
username: str
email: str
first_name: Optional[str] = None
last_name: Optional[str] = None
display_name: Optional[str] = None
avatar_url: Optional[str] = None
role: str
mfa_enabled: bool
is_active: bool
last_login: Optional[datetime] = None
created_at: datetime
model_config = {"from_attributes": True}
class UserCreate(BaseModel):
"""Admin-only: create a user directly (bypasses invitation/domain check)."""
username: str
email: EmailStr
password: str
role: str = "dak_mitarbeiter"
class ProfileUpdate(BaseModel):
"""Self-service profile update (authenticated user edits own data)."""
first_name: Optional[str] = None
last_name: Optional[str] = None
display_name: Optional[str] = None
username: Optional[str] = None
email: Optional[EmailStr] = None
class UserUpdate(BaseModel):
"""Admin-only: partial update of user fields."""
username: Optional[str] = None
email: Optional[EmailStr] = None
role: Optional[str] = None
is_active: Optional[bool] = None