<?php
/**
 * modules/auth/register.php — alta SOLO con invitación (ruta /register/<token>).
 *
 * La incluye el front controller (index.php). Sin token de invitación válido no
 * se puede registrar: el registro está cerrado salvo invitación.
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

if ($_user !== null) App::redirect('/chat/');

$token = $_POST['token'] ?? ($_segments[1] ?? '');
$inv   = $auth->validateInvite($token);
$error = '';

if ($inv && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $ok = $auth->registerWithInvite($token, $_POST['name'] ?? '', $_POST['email'] ?? '', $_POST['password'] ?? '');
    if ($ok) App::redirect('/chat/');
    $error = $auth->_error;
}

$lang      = App::locale();
$prefEmail = $inv['email'] ?? '';
?><!doctype html>
<html lang="<?= App::e($lang) ?>" class="h-full">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/assets/favicon.svg">
<title><?= App::e(App::t('invite.title')) ?> · <?= App::e(App::t('app.name')) ?></title>
<script>
(function () {
  var t = localStorage.getItem('theme');
  if (t === 'dark' || (!t && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
    document.documentElement.classList.add('dark');
  }
})();
</script>
<link rel="stylesheet" href="/assets/css/style.css">
</head>
<body class="flex min-h-full items-center justify-center bg-paper p-4 text-ink-900 dark:bg-ink-950 dark:text-paper">
  <div class="w-full max-w-sm">
    <div class="mb-6 text-center">
      <div class="mx-auto mb-3 flex h-12 w-12 items-center justify-center rounded-lg bg-primary-600 text-xl font-bold text-white">k</div>
      <h1 class="text-2xl font-semibold"><?= App::e(App::t('app.name')) ?></h1>
      <p class="text-sm text-gray-dark dark:text-gray-light"><?= App::e(App::t('app.tagline')) ?></p>
    </div>

    <div class="rounded-lg border border-gray-200 bg-white p-6 shadow-sm dark:border-ink-700 dark:bg-ink-900">
      <?php if (!$inv): ?>
        <h2 class="mb-2 text-lg font-medium"><?= App::e(App::t('invite.invalid_title')) ?></h2>
        <p class="mb-4 text-sm text-gray-dark dark:text-gray-light"><?= App::e(App::t('invite.invalid')) ?></p>
        <a href="/login/" class="inline-block rounded-lg border border-gray-200 px-4 py-2 text-sm hover:bg-gray-50 dark:border-ink-700 dark:hover:bg-ink-800"><?= App::e(App::t('auth.login_title')) ?></a>
      <?php else: ?>
        <h2 class="mb-4 text-lg font-medium"><?= App::e(App::t('invite.title')) ?></h2>
        <?php if ($error): ?>
          <div class="mb-4 rounded-lg border border-danger/30 bg-danger/10 px-4 py-3 text-sm text-danger"><?= App::e($error) ?></div>
        <?php endif; ?>
        <form method="post" action="/register/" class="space-y-4">
          <input type="hidden" name="token" value="<?= App::e($token) ?>">
          <div>
            <label class="mb-1 block text-sm font-medium"><?= App::e(App::t('auth.name')) ?></label>
            <input type="text" name="name" required autofocus
                   class="w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm outline-none focus:border-primary-600 dark:border-ink-700 dark:bg-ink-800">
          </div>
          <div>
            <label class="mb-1 block text-sm font-medium"><?= App::e(App::t('auth.email')) ?></label>
            <input type="email" name="email" required value="<?= App::e($prefEmail) ?>" <?= $prefEmail ? 'readonly' : '' ?>
                   class="w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm outline-none focus:border-primary-600 dark:border-ink-700 dark:bg-ink-800 read-only:opacity-70">
          </div>
          <div>
            <label class="mb-1 block text-sm font-medium"><?= App::e(App::t('auth.password')) ?></label>
            <input type="password" name="password" required minlength="8"
                   class="w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm outline-none focus:border-primary-600 dark:border-ink-700 dark:bg-ink-800">
          </div>
          <button type="submit"
                  class="w-full rounded-lg bg-primary-600 px-4 py-2 text-sm font-medium text-white hover:bg-primary-700">
            <?= App::e(App::t('auth.create_account')) ?>
          </button>
        </form>
      <?php endif; ?>
    </div>
  </div>
</body>
</html>
