feat(auth): migrate frontend from username to email-only authentication

- Login page: email input replaces username field (type=email, name=email)
- Login server action: reads email, uses i18n error for missing credentials
- AccountSection: email input (type=email) replaces username text field
- New user server action: sends email as required field, drops username
- UsersListPanel: displays and searches by email instead of username
- Admin edit user page: heading and delete confirm use email
- Profile page: fullName fallback uses email, drops @username display
- app.d.ts: email required on User, username removed
- Generated API types: AppUser.email required, username removed; CreateUserRequest.email required, username removed
- i18n: login_label_email, login_error_missing_credentials, admin_col_login updated (de/en/es)
- errors.ts: MISSING_CREDENTIALS → login_error_missing_credentials

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-18 21:34:46 +02:00
committed by marcel
parent 5e01db1c74
commit d816e94a90
19 changed files with 64 additions and 55 deletions

View File

@@ -56,8 +56,9 @@
"label_optional": "Optional",
"label_required_fields": "Pflichtfelder",
"login_heading": "Anmelden",
"login_label_username": "Benutzername",
"login_label_email": "E-Mail-Adresse",
"login_label_password": "Passwort",
"login_error_missing_credentials": "Bitte E-Mail-Adresse und Passwort eingeben.",
"login_btn_submit": "Anmelden",
"docs_search_placeholder": "Titel, Personen, Tags durchsuchen…",
"docs_sort_label": "Sortierung",
@@ -167,7 +168,7 @@
"admin_tab_groups": "Gruppen",
"admin_tab_tags": "Schlagworte",
"admin_section_users": "Benutzerverwaltung",
"admin_col_login": "Login",
"admin_col_login": "E-Mail",
"admin_col_groups": "Gruppen",
"admin_col_password": "Passwort",
"admin_multiselect_hint": "Strg+Klick für Auswahl",

View File

@@ -56,8 +56,9 @@
"label_optional": "Optional",
"label_required_fields": "Required fields",
"login_heading": "Sign in",
"login_label_username": "Username",
"login_label_email": "Email",
"login_label_password": "Password",
"login_error_missing_credentials": "Please enter your email address and password.",
"login_btn_submit": "Sign in",
"docs_search_placeholder": "Search title, people, tags…",
"docs_sort_label": "Sort",
@@ -167,7 +168,7 @@
"admin_tab_groups": "Groups",
"admin_tab_tags": "Tags",
"admin_section_users": "User management",
"admin_col_login": "Login",
"admin_col_login": "Email",
"admin_col_groups": "Groups",
"admin_col_password": "Password",
"admin_multiselect_hint": "Ctrl+Click to select",

View File

@@ -56,8 +56,9 @@
"label_optional": "Opcional",
"label_required_fields": "Campos obligatorios",
"login_heading": "Iniciar sesión",
"login_label_username": "Usuario",
"login_label_email": "Correo electrónico",
"login_label_password": "Contraseña",
"login_error_missing_credentials": "Por favor, introduzca su correo electrónico y contraseña.",
"login_btn_submit": "Iniciar sesión",
"docs_search_placeholder": "Buscar título, personas, etiquetas…",
"docs_sort_label": "Ordenar",
@@ -167,7 +168,7 @@
"admin_tab_groups": "Grupos",
"admin_tab_tags": "Etiquetas",
"admin_section_users": "Gestión de usuarios",
"admin_col_login": "Login",
"admin_col_login": "Correo electrónico",
"admin_col_groups": "Grupos",
"admin_col_password": "Contraseña",
"admin_multiselect_hint": "Ctrl+Clic para seleccionar",