feat: complete admin invite and user creation and recovery flows
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
<script setup lang="ts">
|
||||
definePageMeta({
|
||||
layout: 'auth',
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="relative flex flex-col items-center justify-center w-full h-full p-4 overflow-hidden">
|
||||
<!-- 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 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>
|
||||
Reference in New Issue
Block a user