cms.validate-2fa.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * Validation du code TOTP pour activer la double authentification
  4. */
  5. if (core::ifPost("from") and core::getPost("from") == "validate-2fa") {
  6. $userId = (int) core::getPost("id");
  7. $totpCode = core::getPost("totp_code");
  8. // Vérifier que l'utilisateur valide son propre 2FA
  9. if ($userId !== session::getId()) {
  10. alert::recError("Vous ne pouvez valider que votre propre double authentification.");
  11. header("Location: /user.html");
  12. exit();
  13. }
  14. // Vérifier que le 2FA est bien en attente de validation
  15. if (!user::is2FAPending($userId)) {
  16. alert::recError("La double authentification n'est pas en attente de validation.");
  17. header("Location: /user.html");
  18. exit();
  19. }
  20. // Valider le code TOTP
  21. $result = user::validate2FAActivation($userId, $totpCode);
  22. if ($result["status"] === "success") {
  23. // Mettre à jour la session
  24. $_SESSION["user"]["googleAuthenticator"] = 1;
  25. historique::recRef("/user.html");
  26. historique::add(array(
  27. "idType" => historique::getIdRef("ACTION"),
  28. "idUser" => session::getId(),
  29. "idPage" => historique::getIdRef("/user.html"),
  30. "log" => "Activation de la double authentification (Google Authenticator)"
  31. ));
  32. alert::recSuccess($result["message"]);
  33. } else {
  34. alert::recError($result["message"]);
  35. }
  36. header("Location: /user.html");
  37. exit();
  38. } else {
  39. header('HTTP/1.0 401 Unauthorized');
  40. exit();
  41. }