This commit is contained in:
KANE LAZENI 2026-05-13 17:52:48 +00:00
parent 852ee5f285
commit 8a9374621f
2 changed files with 18 additions and 31 deletions

View File

@ -855,15 +855,14 @@
$.ajax({
url: '/Contestation/verify_facial_api.php',
method: 'POST',
// contentType: 'application/json',
contentType: 'application/json',
data: JSON.stringify({
action: 'verify_face',
token: verificationToken,
// image: capturedImage
image: base64Only,
csrf_token: v_csrf_token
}),
// dataType: 'json',
dataType: 'json',
success: function(data) {
if (data.success && data.match) {
showSuccess(data);

View File

@ -7,7 +7,7 @@ header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
ob_end_clean();
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée']);
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée / Unauthorized method']);
exit;
}
@ -30,7 +30,7 @@ class FacialVerificationAPI {
if (!$request) {
return [
'success' => false,
'message' => 'Lien expiré ou invalide'
'message' => 'Lien expiré ou invalide / Expired or invalid link'
];
}
@ -49,23 +49,15 @@ class FacialVerificationAPI {
error_log("Erreur validateToken: " . $e->getMessage());
return [
'success' => false,
'message' => 'Erreur serveur'
'message' => 'Erreur serveur / Server error'
];
}
}
/**
* Compare deux visages avec l'API de reconnaissance faciale
* Utilisez Azure Face API, AWS Rekognition, ou une solution locale
*/
private function compareFaces($referenceImagePath, $capturedImageBase64) {
//AWS Rekognition
return $this->compareWithAWSRekognition($referenceImagePath, $capturedImageBase64);
}
/**
* Comparaison avec AWS Rekognition (Alternative)
*/
private function compareWithAWSRekognition($referenceImagePath, $capturedImageBase64) {
try {
require_once '/var/www/Config/Faceebene.php';
@ -84,12 +76,11 @@ class FacialVerificationAPI {
if (empty($result['FaceMatches'])) {
$this->assure_api->resultat_traitement_face($_SESSION['numeroBeneficiaire'], '0', "Les faces ne correspondent pas! / The faces do not match!");
// $this->assure_api->resultat_traitement_face($_SESSION['numeroBeneficiaire'], '0', $message);
return [
'match' => false,
'confidence' => 0,
'error' => 'Les visages ne correspondent pas / / The faces do not match!'
'error' => 'Les visages ne correspondent pas / The faces do not match!'
];
}
@ -116,9 +107,6 @@ class FacialVerificationAPI {
}
}
/**
* Vérifie le visage capturé
*/
public function verifyFace($token, $capturedImageBase64) {
try {
// 1. Récupérer les infos de la demande
@ -128,7 +116,7 @@ class FacialVerificationAPI {
return [
'success' => false,
'match' => false,
'message' => 'Demande expirée ou invalide'
'message' => 'Demande expirée ou invalide / Request expired or invalid'
];
}
@ -140,7 +128,7 @@ class FacialVerificationAPI {
return [
'success' => false,
'match' => false,
'message' => 'Nombre maximum de tentatives atteint'
'message' => 'Nombre maximum de tentatives atteint / Maximum number of attempts reached'
];
}
@ -174,7 +162,7 @@ class FacialVerificationAPI {
'success' => true,
'match' => true,
'confidence' => $comparisonResult['confidence'],
'message' => 'Identité vérifiée avec succès',
'message' => 'Identité vérifiée avec succès / Identity successfully verified',
];
} else {
$attemptsRemaining = $this->maxAttempts - ($request['attempts'] + 1);
@ -187,7 +175,7 @@ class FacialVerificationAPI {
'success' => false,
'match' => false,
'confidence' => $comparisonResult['confidence'],
'message' => 'Votre visage ne correspond pas',
'message' => 'Votre visage ne correspond pas / Your face does not match',
'attempts_remaining' => $attemptsRemaining
];
} else {
@ -198,7 +186,7 @@ class FacialVerificationAPI {
'success' => false,
'match' => false,
'confidence' => $comparisonResult['confidence'],
'message' => 'Vérification échouée. Nombre maximum de tentatives atteint.',
'message' => 'Vérification échouée. Nombre maximum de tentatives atteint. / Verification failed. Maximum number of attempts reached.',
'attempts_remaining' => 0
];
}
@ -209,7 +197,7 @@ class FacialVerificationAPI {
return [
'success' => false,
'match' => false,
'message' => 'Erreur lors de la vérification Exception : ' . $e->getMessage()
'message' => 'Erreur / Error : ' . $e->getMessage()
];
}
}
@ -222,12 +210,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$csrf_token = $input['csrf_token'] ?? null;
if (!isset($csrf_token)) {
echo json_encode(['success' => false, 'message' => 'Mauvaise session! Absence']);
echo json_encode(['success' => false, 'message' => 'Mauvaise session! / Bad session!']);
exit;
}
if (!Csrf::validateToken($csrf_token)) {
echo json_encode(['success' => false, 'message' => 'Mauvaise session! No much']);
echo json_encode(['success' => false, 'message' => 'Mauvaise session! / Bad session!']);
exit;
}
@ -239,7 +227,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
case 'validate_token':
$token = $input['token'] ?? null;
if (!$token) {
echo json_encode(['success' => false, 'message' => 'Token requis']);
echo json_encode(['success' => false, 'message' => 'Token requis / Token required']);
exit;
}
echo json_encode($api->validateToken($token));
@ -250,16 +238,16 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$image = $input['image'] ?? null;
if (!$token || !$image) {
echo json_encode(['success' => false, 'message' => 'Token et image requis']);
echo json_encode(['success' => false, 'message' => 'Token et image requis / Token and image required']);
exit;
}
echo json_encode($api->verifyFace($token, $image));
break;
default:
echo json_encode(['success' => false, 'message' => 'Action invalide']);
echo json_encode(['success' => false, 'message' => 'Action invalide / Invalid action']);
}
} else {
ob_end_clean();
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée']);
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée / Unauthorized method']);
}