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:
@@ -6,7 +6,7 @@ let { data } = $props();
|
||||
const fullName = $derived.by(() => {
|
||||
const first = data.profileUser.firstName;
|
||||
const last = data.profileUser.lastName;
|
||||
return first || last ? [first, last].filter(Boolean).join(' ') : data.profileUser.username;
|
||||
return first || last ? [first, last].filter(Boolean).join(' ') : data.profileUser.email;
|
||||
});
|
||||
|
||||
const initials = $derived.by(() => {
|
||||
@@ -70,12 +70,9 @@ const initials = $derived.by(() => {
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Name and username -->
|
||||
<!-- Name -->
|
||||
<div class="mb-5 text-center">
|
||||
<h2 class="font-serif text-xl font-bold text-ink">{fullName}</h2>
|
||||
{#if data.profileUser.firstName || data.profileUser.lastName}
|
||||
<p class="mt-0.5 font-sans text-sm text-ink-3">@{data.profileUser.username}</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Field rows -->
|
||||
|
||||
Reference in New Issue
Block a user