<?php

declare(strict_types=1);

require_once dirname(__DIR__) . '/lib/ChronooAuth.php';
require_once dirname(__DIR__) . '/lib/ChronooUi.php';
require_once dirname(__DIR__) . '/lib/ChronooSso.php';
require_once dirname(__DIR__) . '/lib/MailNotifier.php';
require_once dirname(__DIR__) . '/lib/SmartcalConfig.php';

$error = null;
if (ChronooAuth::accountId() !== null) {
    header('Location: /account/');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!ChronooAuth::verifyCsrf($_POST['csrf'] ?? null)) {
        $error = 'Session expirée, réessayez.';
    } else {
        $res = ChronooAuth::register(
            (string) ($_POST['email'] ?? ''),
            (string) ($_POST['password'] ?? ''),
            (string) ($_POST['name'] ?? '')
        );
        if ($res['ok']) {
            $verifyUrl = ChronooAuth::publicBaseUrl() . '/account/verify.php?token=' . urlencode((string) $res['verify_token']);
            $mailer = new MailNotifier(SmartcalConfig::fromEmail(), SmartcalConfig::fromName());
            $mailer->sendAccountVerification(
                (string) $res['account']['email'],
                (string) $res['account']['name'],
                $verifyUrl
            );
            header('Location: /account/login.php?ok=' . rawurlencode(
                'Compte créé. Vérifiez votre boîte mail (' . $res['account']['email'] . ') et cliquez sur le lien de confirmation pour activer votre compte.'
            ));
            exit;
        }
        $error = $res['error'];
    }
}

ChronooAuth::startSession();
ChronooUi::layoutStart('Créer un compte');
?>
<div class="auth-card panel">
  <h1>Créer un compte</h1>
  <p class="lede">Gérez vos calendriers pro et perso depuis Chronoo.</p>
  <?php ChronooUi::flash($error); ?>
  <?php ChronooSso::renderContinueButton(); ?>
  <form method="post">
    <input type="hidden" name="csrf" value="<?= htmlspecialchars(ChronooAuth::csrfToken(), ENT_QUOTES, 'UTF-8') ?>">
    <label for="name">Prénom / nom</label>
    <input id="name" name="name" type="text" autocomplete="name" value="<?= htmlspecialchars((string) ($_POST['name'] ?? ''), ENT_QUOTES, 'UTF-8') ?>">
    <label for="email">Email</label>
    <input id="email" name="email" type="email" required autocomplete="email" value="<?= htmlspecialchars((string) ($_POST['email'] ?? ''), ENT_QUOTES, 'UTF-8') ?>">
    <label for="password">Mot de passe (10+)</label>
    <input id="password" name="password" type="password" required minlength="10" autocomplete="new-password">
    <button type="submit">Créer mon compte</button>
  </form>
  <p class="muted-link" style="margin-top:18px">Déjà inscrit ? <a href="/account/login.php">Connexion</a></p>
</div>
<?php
ChronooUi::layoutEnd();
