Files
speckle-server/packages/frontend-2/components/auth/PasswordResetFinalizationPanel.vue
T
2025-01-24 22:11:36 +01:00

53 lines
1.3 KiB
Vue

<template>
<form class="mx-auto w-full px-2" @submit="onSubmit">
<h1 class="text-heading-xl text-center w-full inline-block mb-4">
Reset your password
</h1>
<div class="flex flex-col space-y-4">
<p class="text-center text-body-xs text-foreground mb-2">
Choose a new password for your Speckle account
</p>
<FormTextInput
v-model="password"
type="password"
name="password"
label="Password"
placeholder="New password"
color="foundation"
size="lg"
:rules="[isRequired]"
show-label
/>
<AuthPasswordChecks :password="password" />
</div>
<FormButton class="mt-8" submit full-width size="lg" :disabled="loading">
Reset password
</FormButton>
</form>
</template>
<script setup lang="ts">
import { useForm } from 'vee-validate'
import { usePasswordReset } from '~~/lib/auth/composables/passwordReset'
import { isRequired } from '~~/lib/common/helpers/validation'
type FormValues = {
password: string
}
const props = defineProps<{
token: string
}>()
const { handleSubmit } = useForm<FormValues>()
const { finalize } = usePasswordReset()
const loading = ref(false)
const password = ref('')
const onSubmit = handleSubmit(
async ({ password }) => await finalize(password, props.token)
)
</script>