<?php
// ─────────────────────────────────────────────────────────────────
//  KAP DSI – Validation token + définition mot de passe
// ─────────────────────────────────────────────────────────────────

require_once __DIR__ . '/kap-config.php';

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['ok'=>false,'error'=>'Méthode non autorisée']); exit; }

$body     = json_decode(file_get_contents('php://input'), true);
$token    = preg_replace('/[^a-f0-9]/', '', $body['token'] ?? '');
$password = $body['password'] ?? '';

// Validations
if (strlen($token) !== 64) {
    http_response_code(400); echo json_encode(['ok'=>false,'error'=>'Token invalide']); exit;
}
if (strlen($password) < 8) {
    http_response_code(400); echo json_encode(['ok'=>false,'error'=>'Le mot de passe doit faire au moins 8 caractères']); exit;
}

// Vérification du token
$file   = __DIR__ . '/kap-tokens.json';
$tokens = file_exists($file) ? json_decode(file_get_contents($file), true) : [];

if (!isset($tokens[$token])) {
    http_response_code(404); echo json_encode(['ok'=>false,'error'=>'Lien invalide ou déjà utilisé']); exit;
}

$t = $tokens[$token];

if ($t['used']) {
    http_response_code(410); echo json_encode(['ok'=>false,'error'=>'Ce lien a déjà été utilisé']); exit;
}
if ($t['expires'] < time()) {
    http_response_code(410); echo json_encode(['ok'=>false,'error'=>'Ce lien a expiré (72h). Contactez KAP DSI pour un nouvel envoi.']); exit;
}

// Hachage du mot de passe
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);

// Marquer le token comme utilisé
$tokens[$token]['used'] = true;
file_put_contents($file, json_encode($tokens, JSON_PRETTY_PRINT));

// Retourner les infos pour que le JS mette à jour localStorage
echo json_encode([
    'ok'      => true,
    'email'   => $t['email'],
    'prenom'  => $t['prenom'],
    'nom'     => $t['nom'],
    'pwdHash' => $hash,   // hash bcrypt côté serveur pour référence
    // Le vrai mot de passe en clair (chiffré en transit HTTPS) pour 
    // initialiser la session JS — à supprimer si vous passez à une BDD
    'pwd'     => $password,
    'message' => 'Compte activé avec succès',
]);
