a
This commit is contained in:
parent
852ee5f285
commit
8a9374621f
|
|
@ -855,15 +855,14 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/Contestation/verify_facial_api.php',
|
url: '/Contestation/verify_facial_api.php',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
// contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
data: JSON.stringify({
|
data: JSON.stringify({
|
||||||
action: 'verify_face',
|
action: 'verify_face',
|
||||||
token: verificationToken,
|
token: verificationToken,
|
||||||
// image: capturedImage
|
|
||||||
image: base64Only,
|
image: base64Only,
|
||||||
csrf_token: v_csrf_token
|
csrf_token: v_csrf_token
|
||||||
}),
|
}),
|
||||||
// dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
if (data.success && data.match) {
|
if (data.success && data.match) {
|
||||||
showSuccess(data);
|
showSuccess(data);
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ header('Content-Type: application/json');
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||||
ob_end_clean();
|
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;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ class FacialVerificationAPI {
|
||||||
if (!$request) {
|
if (!$request) {
|
||||||
return [
|
return [
|
||||||
'success' => false,
|
'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());
|
error_log("Erreur validateToken: " . $e->getMessage());
|
||||||
return [
|
return [
|
||||||
'success' => false,
|
'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) {
|
private function compareFaces($referenceImagePath, $capturedImageBase64) {
|
||||||
//AWS Rekognition
|
|
||||||
return $this->compareWithAWSRekognition($referenceImagePath, $capturedImageBase64);
|
return $this->compareWithAWSRekognition($referenceImagePath, $capturedImageBase64);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Comparaison avec AWS Rekognition (Alternative)
|
|
||||||
*/
|
|
||||||
private function compareWithAWSRekognition($referenceImagePath, $capturedImageBase64) {
|
private function compareWithAWSRekognition($referenceImagePath, $capturedImageBase64) {
|
||||||
try {
|
try {
|
||||||
require_once '/var/www/Config/Faceebene.php';
|
require_once '/var/www/Config/Faceebene.php';
|
||||||
|
|
@ -84,12 +76,11 @@ class FacialVerificationAPI {
|
||||||
if (empty($result['FaceMatches'])) {
|
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', "Les faces ne correspondent pas! / The faces do not match!");
|
||||||
// $this->assure_api->resultat_traitement_face($_SESSION['numeroBeneficiaire'], '0', $message);
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'match' => false,
|
'match' => false,
|
||||||
'confidence' => 0,
|
'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) {
|
public function verifyFace($token, $capturedImageBase64) {
|
||||||
try {
|
try {
|
||||||
// 1. Récupérer les infos de la demande
|
// 1. Récupérer les infos de la demande
|
||||||
|
|
@ -128,7 +116,7 @@ class FacialVerificationAPI {
|
||||||
return [
|
return [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'match' => 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 [
|
return [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'match' => 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,
|
'success' => true,
|
||||||
'match' => true,
|
'match' => true,
|
||||||
'confidence' => $comparisonResult['confidence'],
|
'confidence' => $comparisonResult['confidence'],
|
||||||
'message' => 'Identité vérifiée avec succès',
|
'message' => 'Identité vérifiée avec succès / Identity successfully verified',
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
$attemptsRemaining = $this->maxAttempts - ($request['attempts'] + 1);
|
$attemptsRemaining = $this->maxAttempts - ($request['attempts'] + 1);
|
||||||
|
|
@ -187,7 +175,7 @@ class FacialVerificationAPI {
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'match' => false,
|
'match' => false,
|
||||||
'confidence' => $comparisonResult['confidence'],
|
'confidence' => $comparisonResult['confidence'],
|
||||||
'message' => 'Votre visage ne correspond pas',
|
'message' => 'Votre visage ne correspond pas / Your face does not match',
|
||||||
'attempts_remaining' => $attemptsRemaining
|
'attempts_remaining' => $attemptsRemaining
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -198,7 +186,7 @@ class FacialVerificationAPI {
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'match' => false,
|
'match' => false,
|
||||||
'confidence' => $comparisonResult['confidence'],
|
'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
|
'attempts_remaining' => 0
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -209,7 +197,7 @@ class FacialVerificationAPI {
|
||||||
return [
|
return [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'match' => 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;
|
$csrf_token = $input['csrf_token'] ?? null;
|
||||||
|
|
||||||
if (!isset($csrf_token)) {
|
if (!isset($csrf_token)) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Mauvaise session! Absence']);
|
echo json_encode(['success' => false, 'message' => 'Mauvaise session! / Bad session!']);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Csrf::validateToken($csrf_token)) {
|
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;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -239,7 +227,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
case 'validate_token':
|
case 'validate_token':
|
||||||
$token = $input['token'] ?? null;
|
$token = $input['token'] ?? null;
|
||||||
if (!$token) {
|
if (!$token) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Token requis']);
|
echo json_encode(['success' => false, 'message' => 'Token requis / Token required']);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
echo json_encode($api->validateToken($token));
|
echo json_encode($api->validateToken($token));
|
||||||
|
|
@ -250,16 +238,16 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$image = $input['image'] ?? null;
|
$image = $input['image'] ?? null;
|
||||||
|
|
||||||
if (!$token || !$image) {
|
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;
|
exit;
|
||||||
}
|
}
|
||||||
echo json_encode($api->verifyFace($token, $image));
|
echo json_encode($api->verifyFace($token, $image));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
echo json_encode(['success' => false, 'message' => 'Action invalide']);
|
echo json_encode(['success' => false, 'message' => 'Action invalide / Invalid action']);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ob_end_clean();
|
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']);
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user