feat(auth): add user profile, phone login, and account deletion
This commit is contained in:
@@ -4,7 +4,9 @@
|
||||
import { auth } from '$lib/stores/auth.svelte';
|
||||
|
||||
let mode = $state<'login' | 'register'>('login');
|
||||
let identifier = $state('');
|
||||
let email = $state('');
|
||||
let phone = $state('');
|
||||
let password = $state('');
|
||||
let name = $state('');
|
||||
let error = $state('');
|
||||
@@ -13,12 +15,16 @@
|
||||
async function submit(ev: Event) {
|
||||
ev.preventDefault();
|
||||
error = '';
|
||||
if (mode === 'register' && !email.trim() && !phone.trim()) {
|
||||
error = 'Укажите email или телефон';
|
||||
return;
|
||||
}
|
||||
busy = true;
|
||||
try {
|
||||
const data =
|
||||
mode === 'login'
|
||||
? await authApi.login(email, password)
|
||||
: await authApi.register(email, password, name);
|
||||
? await authApi.login(identifier, password)
|
||||
: await authApi.register(email, phone, password, name);
|
||||
auth.setTokens(data.tokens);
|
||||
auth.setUser(data.user);
|
||||
goto('/');
|
||||
@@ -43,16 +49,34 @@
|
||||
class="border-border bg-bg-elevated text-text w-full rounded-lg border px-3 py-2"
|
||||
/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-text-muted mb-1 block text-sm">Email (необязательно)</span>
|
||||
<input
|
||||
bind:value={email}
|
||||
type="email"
|
||||
class="border-border bg-bg-elevated text-text w-full rounded-lg border px-3 py-2"
|
||||
/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-text-muted mb-1 block text-sm">Телефон (необязательно)</span>
|
||||
<input
|
||||
bind:value={phone}
|
||||
type="tel"
|
||||
placeholder="+15551234567"
|
||||
class="border-border bg-bg-elevated text-text w-full rounded-lg border px-3 py-2"
|
||||
/>
|
||||
</label>
|
||||
<p class="text-text-muted text-xs">Нужен хотя бы один из email или телефона.</p>
|
||||
{:else}
|
||||
<label class="block">
|
||||
<span class="text-text-muted mb-1 block text-sm">Email или телефон</span>
|
||||
<input
|
||||
bind:value={identifier}
|
||||
required
|
||||
class="border-border bg-bg-elevated text-text w-full rounded-lg border px-3 py-2"
|
||||
/>
|
||||
</label>
|
||||
{/if}
|
||||
<label class="block">
|
||||
<span class="text-text-muted mb-1 block text-sm">Email</span>
|
||||
<input
|
||||
bind:value={email}
|
||||
type="email"
|
||||
required
|
||||
class="border-border bg-bg-elevated text-text w-full rounded-lg border px-3 py-2"
|
||||
/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-text-muted mb-1 block text-sm">Пароль</span>
|
||||
<input
|
||||
|
||||
Reference in New Issue
Block a user