fix(auth): migrate frontend to Better Auth
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { NAlert, NButton, NCard, NForm, NFormItem, NInput, NResult } from 'naive-ui'
|
||||
import { ApiError } from '@/lib/api'
|
||||
import { AuthClientError } from '@/lib/authClient'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
|
||||
const authStore = useAuthStore()
|
||||
@@ -15,9 +15,7 @@ const confirmPassword = ref('')
|
||||
const error = ref('')
|
||||
const loading = ref(false)
|
||||
const registered = ref(false)
|
||||
const emailDelivered = ref(true)
|
||||
const registerConflict = ref(false)
|
||||
const canResend = computed(() => registerConflict.value)
|
||||
|
||||
async function handleRegister() {
|
||||
error.value = ''
|
||||
@@ -48,12 +46,11 @@ async function handleRegister() {
|
||||
|
||||
loading.value = true
|
||||
try {
|
||||
const response = await authStore.register(trimmedName, trimmedEmail, password.value)
|
||||
await authStore.register(trimmedName, trimmedEmail, password.value)
|
||||
email.value = trimmedEmail
|
||||
emailDelivered.value = response.email_sent
|
||||
registered.value = true
|
||||
} catch (e: unknown) {
|
||||
if (e instanceof ApiError && e.status === 409) {
|
||||
if (e instanceof AuthClientError && (e.status === 409 || e.code === 'USER_ALREADY_EXISTS')) {
|
||||
registerConflict.value = true
|
||||
error.value = '邮箱或用户名已被占用;若邮箱尚未验证,可以尝试重发验证邮件。'
|
||||
} else {
|
||||
@@ -93,11 +90,9 @@ async function handleRegister() {
|
||||
<NCard class="oc-panel-card-xl min-w-0 h-full">
|
||||
<NResult
|
||||
v-if="registered"
|
||||
:status="emailDelivered ? 'success' : 'warning'"
|
||||
status="success"
|
||||
title="确认你的邮箱"
|
||||
:description="emailDelivered
|
||||
? '确认邮件已经发送,请查收并点击链接完成注册。'
|
||||
: '账号已创建,但验证邮件暂未送达。请使用重发验证功能,不要重复注册。'"
|
||||
description="如该邮箱可以注册,请查收验证邮件并点击链接。验证后请重新登录。"
|
||||
>
|
||||
<template #footer>
|
||||
<div class="space-y-4">
|
||||
@@ -137,7 +132,7 @@ async function handleRegister() {
|
||||
|
||||
<NAlert v-if="error" type="error" class="mb-4">
|
||||
{{ error }}
|
||||
<div v-if="canResend" class="mt-2">
|
||||
<div v-if="registerConflict" class="mt-2">
|
||||
<RouterLink :to="{ path: '/resend-confirmation', query: { email } }" class="font-semibold text-rose-700 underline underline-offset-2">重发验证邮件</RouterLink>
|
||||
</div>
|
||||
</NAlert>
|
||||
|
||||
Reference in New Issue
Block a user