From af6040cbf60aefe1f81e6d84d7c3fcb5db13c439 Mon Sep 17 00:00:00 2001 From: claude-dev Date: Thu, 5 Mar 2026 18:55:30 +0100 Subject: [PATCH] Refactor: Name-Feld entfernen, Email als einziger Identifier - Name-Spalte aus Nutzertabelle entfernt - Anzeigename-Feld aus Nutzer-Anlegen-Dialog entfernt - Username wird automatisch aus Email-Prefix generiert - UserCreate Model: username jetzt optional Co-Authored-By: Claude Opus 4.6 --- src/models.py | 2 +- src/routers/users.py | 5 +++-- src/static/dashboard.html | 5 ----- src/static/js/app.js | 4 +--- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/models.py b/src/models.py index 58b731d..dc9aac1 100644 --- a/src/models.py +++ b/src/models.py @@ -56,7 +56,7 @@ class LicenseResponse(BaseModel): class UserCreate(BaseModel): email: str = Field(min_length=3, max_length=200) - username: str = Field(min_length=1, max_length=100) + username: Optional[str] = Field(default=None, max_length=100) role: str = Field(default="member", pattern="^(org_admin|member)$") diff --git a/src/routers/users.py b/src/routers/users.py index b97b372..52e9a7c 100644 --- a/src/routers/users.py +++ b/src/routers/users.py @@ -66,11 +66,12 @@ async def create_user( if await cursor.fetchone(): raise HTTPException(status_code=400, detail="E-Mail bereits vergeben") + username = data.username if data.username else email.split("@")[0] now = datetime.now(timezone.utc).isoformat() cursor = await db.execute( """INSERT INTO users (email, username, password_hash, organization_id, role, is_active, created_at) VALUES (?, ?, '', ?, ?, 1, ?)""", - (email, data.username, org_id, data.role, now), + (email, username, org_id, data.role, now), ) user_id = cursor.lastrowid @@ -91,7 +92,7 @@ async def create_user( from email_utils.sender import send_email from email_utils.templates import invite_email link = f"{MAGIC_LINK_BASE_URL}/auth/verify?token={token}" - subject, html = invite_email(data.username, org["name"], code, link) + subject, html = invite_email(username, org["name"], code, link) await send_email(email, subject, html) except Exception: pass # E-Mail-Fehler nicht fatal diff --git a/src/static/dashboard.html b/src/static/dashboard.html index c51eea7..4f585a1 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -101,7 +101,6 @@ E-Mail - Name Rolle Status Aktionen @@ -234,10 +233,6 @@ -
- - -
@@ -426,7 +425,6 @@ function setupForms() { try { await API.post(`/api/users?org_id=${currentOrgId}`, { email: document.getElementById("newUserEmail").value, - username: document.getElementById("newUserName").value, role: document.getElementById("newUserRole").value, }); closeModal("modalNewUser");