d1a757d72b
- Backend: /api/users (LIST/CREATE/PATCH, admin-only) mit Self-Protection (Admin kann sich nicht selbst deaktivieren/entziehen), lokale User anlegbar, LDAP-User verwaltbar (aktiv/admin), Passwort-Reset nur lokal - Frontend: Benutzer-View (Liste, anlegen, toggles, Passwort setzen), Nav-Eintrag + Route - Bugfix 'Speichern tut nichts': submit() brach stillschweigend ab wenn kein Kunde gewaehlt war oder die API einen Fehler lieferte - jetzt wird eine Fehlermeldung angezeigt (Servers, Customers, Satellites)
36 lines
876 B
Python
36 lines
876 B
Python
"""User schemas for dashboard user management."""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class UserRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
username: str
|
|
email: str | None
|
|
full_name: str | None
|
|
is_ldap: bool
|
|
is_admin: bool
|
|
is_active: bool
|
|
last_login_at: datetime | None
|
|
created_at: datetime
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str = Field(min_length=2, max_length=255)
|
|
password: str = Field(min_length=8, max_length=72)
|
|
email: str | None = None
|
|
full_name: str | None = None
|
|
is_admin: bool = False
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
email: str | None = None
|
|
full_name: str | None = None
|
|
is_admin: bool | None = None
|
|
is_active: bool | None = None
|
|
password: str | None = Field(default=None, min_length=8, max_length=72)
|