Files
nixpanel-website/views/forgot-password.php
T
NixReaperandClaude Sonnet 4.6 faf0818dde feat: rewrite website in PHP, drop Node.js stack
Replace React/Vite frontend + Fastify API with a single PHP application.

- Front controller router in public/index.php (clean URLs via .htaccess)
- Session-based auth (no JWT) — register, login, verify email,
  forgot/reset password, logout
- Stripe checkout sessions, billing portal, webhook handler
  (checkout.session.completed, subscription.updated/deleted)
- License IP change via internal licensing server API
- PHP classes: DB (PDO), Auth, Mailer (PHPMailer), StripeClient
- Views: home, pricing, install, login, register, dashboard,
  verify-email, forgot-password, reset-password, 404
- Tailwind CSS via CDN — no build step required
- Composer dependencies: stripe/stripe-php, phpmailer/phpmailer,
  vlucas/phpdotenv, ramsey/uuid
- CSRF protection on all POST forms
- PRG pattern with session flash messages

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-04-05 11:29:58 -05:00

27 lines
1.1 KiB
PHP

<?php $pageTitle = 'Forgot Password — NixPanel'; ?>
<div class="min-h-[80vh] flex items-center justify-center px-4 py-16">
<div class="w-full max-w-md">
<div class="text-center mb-8">
<h1 class="text-3xl font-bold text-white">Reset your password</h1>
<p class="text-gray-400 mt-2">We'll send a reset link to your email</p>
</div>
<div class="card">
<form method="POST" action="/forgot-password" class="space-y-4">
<?= csrf_field() ?>
<div>
<label class="block text-sm text-gray-400 mb-1.5">Email address</label>
<input type="email" name="email" required autofocus
class="input" placeholder="[email protected]">
</div>
<button type="submit" class="btn-primary w-full justify-center py-3">Send reset link</button>
</form>
</div>
<p class="text-center text-sm text-gray-500 mt-6">
<a href="/login" class="text-brand-400 hover:underline">Back to sign in</a>
</p>
</div>
</div>