speechify-clone/static/verify-fail.html
ifedan-ed ee3ffcfe90 Add email verification, user Nextcloud settings, Groq TTS, favicon, and settings page
- Email verification: send link on register via SMTP2GO (noreply@pedshub.com), verify endpoint, beautiful HTML email
- Unverified users see yellow banner in app with resend button; also shown on settings page
- User settings page (/settings): personal Nextcloud credentials (override admin-wide config)
- Admin and per-user Nextcloud config merged (user settings take priority)
- Groq PlayAI TTS: 20 English voices + 2 Arabic voices via groq-playai-tts / groq-playai-tts-arabic
- Added groq-playai-tts and groq-playai-tts-arabic to litellm config
- Favicon SVG (purple play button) across all pages
- Settings link in user dropdown menu
- verify-ok.html and verify-fail.html result pages
- DB migration: added email_verified column, verification_tokens and user_settings tables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 04:12:25 +02:00

35 lines
1.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Invalid Link — Speechify</title>
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg"/>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', system-ui, sans-serif; background: #0d0d0d; color: #e8e8e8;
min-height: 100vh; display: flex; align-items: center; justify-content: center; }
.card { background: #161616; border: 1px solid #232323; border-radius: 16px;
padding: 48px 40px; max-width: 400px; width: 100%; text-align: center; }
.icon { width: 56px; height: 56px; background: rgba(239,68,68,.15); border-radius: 50%;
display: flex; align-items: center; justify-content: center; margin: 0 auto 24px; }
h1 { font-size: 20px; font-weight: 700; margin-bottom: 10px; }
p { font-size: 14px; color: #888; line-height: 1.6; margin-bottom: 28px; }
a { display: inline-block; background: #7c3aed; color: #fff; text-decoration: none;
border-radius: 10px; padding: 11px 28px; font-size: 14px; font-weight: 600; }
a:hover { background: #9d6fff; }
</style>
</head>
<body>
<div class="card">
<div class="icon">
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/>
</svg>
</div>
<h1>Invalid link</h1>
<p>This verification link is invalid or has already been used. Sign in and request a new one from your settings.</p>
<a href="/login">Sign In</a>
</div>
</body>
</html>