73 lines
3.3 KiB
Vue
73 lines
3.3 KiB
Vue
<script setup lang="ts">
|
|
definePageMeta({
|
|
layout: 'auth',
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<div class="relative isolate flex flex-col items-center justify-center w-full min-h-full p-4">
|
|
<div aria-hidden="true" class="absolute inset-0 -z-10 overflow-hidden pointer-events-none">
|
|
<!-- Background decorative blobs -->
|
|
<div
|
|
class="absolute -top-24 -right-24 w-96 h-96 bg-[var(--color-accent)] opacity-10 blur-[100px] rounded-full pointer-events-none">
|
|
</div>
|
|
<div
|
|
class="absolute -bottom-24 -left-24 w-96 h-96 bg-[var(--color-accent)] opacity-5 blur-[100px] rounded-full pointer-events-none">
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="z-10 max-w-104 w-full flex flex-col gap-5">
|
|
<div class="flex flex-col items-center gap-1 text-center">
|
|
<h1 class="text-3xl font-bold tracking-tight">Veridian</h1>
|
|
<p class="text-[var(--text-secondary)]">Forgot your password?</p>
|
|
</div>
|
|
|
|
<p class="text-sm leading-normal text-[var(--text-secondary)]">
|
|
This instance doesn't send email. An administrator can create a one-time recovery link for
|
|
you.
|
|
</p>
|
|
|
|
<ol class="flex flex-col gap-2.5 text-sm">
|
|
<li v-for="(step, index) in [
|
|
'Contact whoever runs this instance.',
|
|
'They send you a link that works once and expires in 24 hours.',
|
|
'Open it here and choose a new password.',
|
|
]" :key="step" class="flex items-start gap-3">
|
|
<span aria-hidden="true"
|
|
class="flex items-center justify-center w-6 h-6 flex-shrink-0 rounded-md border border-[var(--color-border-active)] text-xs text-[var(--text-secondary)]">
|
|
{{ index + 1 }}
|
|
</span>
|
|
<span class="mt-0.5">{{ step }}</span>
|
|
</li>
|
|
</ol>
|
|
|
|
<p class="text-[13px] leading-normal text-[var(--text-secondary)]">
|
|
Operators locked out of the only admin account can run
|
|
<code class="px-1.5 py-0.5 rounded bg-[var(--bg-container)] font-mono text-xs text-[var(--text-primary)] whitespace-nowrap">bun run recover <email></code>
|
|
on the server to print a link.
|
|
</p>
|
|
|
|
<div role="note"
|
|
class="flex gap-2.5 px-3.5 py-3 rounded-lg bg-red-600/12 border border-red-400/40 text-sm leading-normal">
|
|
<span class="i-tabler-alert-triangle text-4.5 mt-0.5 flex-shrink-0 text-red-400"
|
|
aria-hidden="true"></span>
|
|
<span>
|
|
<strong class="font-semibold">Recovery deletes your saved API keys.</strong>
|
|
<span class="text-[var(--text-secondary)]">
|
|
They are encrypted with your current password and can't be read without it. Your
|
|
chats, agents and files are kept.
|
|
</span>
|
|
</span>
|
|
</div>
|
|
|
|
<p class="text-sm text-center text-[var(--text-secondary)]">
|
|
Remembered it?
|
|
<NuxtLink to="/auth/login" class="text-[var(--color-accent)] font-medium @hover:underline">
|
|
Back to log in
|
|
</NuxtLink>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</template>
|