<?php
// ============================================
// SEN RDV SANTÉ+ — Réinitialiser mot de passe
// POST /api/auth/reinitialiser_mdp.php
// Body: { "telephone": "771234567", "token_temp": "xxx", "nouveau_mdp": "xxx" }
// ============================================
require_once '../config/helpers.php';
require_once '../config/database.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    repondre(['erreur' => 'Méthode non autorisée'], 405);
}

$body = getBody();
validerChamps($body, ['telephone', 'token_temp', 'nouveau_mdp']);

$telephone  = trim($body['telephone']);
$tokenTemp  = trim($body['token_temp']);
$nouveauMdp = trim($body['nouveau_mdp']);
$db         = getDB();

if (strlen($nouveauMdp) < 6) {
    repondre(['erreur' => 'Le mot de passe doit contenir au moins 6 caractères'], 422);
}

// je vérifie le token temporaire
$stmt = $db->prepare("
    SELECT id FROM otp_codes
    WHERE telephone = ?
      AND code      = ?
      AND utilise   = 0
      AND expire_at > NOW()
    ORDER BY created_at DESC
    LIMIT 1
");
$stmt->execute([$telephone, $tokenTemp]);
$token = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$token) {
    repondre(['erreur' => 'Session expirée — recommencez la procédure'], 401);
}

// j'invalide le token
$db->prepare("UPDATE otp_codes SET utilise = 1 WHERE id = ?")
   ->execute([$token['id']]);

// je mets à jour le mot de passe
$hash = password_hash($nouveauMdp, PASSWORD_DEFAULT);
$db->prepare("UPDATE utilisateurs SET mot_de_passe = ? WHERE telephone = ?")
   ->execute([$hash, $telephone]);

repondre([
    'succes'  => true,
    'message' => 'Mot de passe réinitialisé avec succès',
]);