From 76fe9064ebabd633c404b0562316719b585d1a33 Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 1 Sep 2025 15:33:18 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Utiliser=20la=20m=C3=A9thode=20standard?= =?UTF-8?q?=20de=20r=C3=A9cup=C3=A9ration=20du=20r=C3=B4le=20depuis=20la?= =?UTF-8?q?=20DB=20comme=20les=20autres=20controllers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/src/Controllers/StripeController.php | 65 +++++++++++++++++++++--- api/src/Core/Controller.php | 13 ----- 2 files changed, 58 insertions(+), 20 deletions(-) diff --git a/api/src/Controllers/StripeController.php b/api/src/Controllers/StripeController.php index 58387d0a..632ceaee 100644 --- a/api/src/Controllers/StripeController.php +++ b/api/src/Controllers/StripeController.php @@ -28,7 +28,18 @@ class StripeController extends Controller { public function createAccount(): void { try { $this->requireAuth(); - $this->requireRole(2); // Admin amicale minimum + + // Vérifier le rôle de l'utilisateur (comme dans les autres controllers) + $userId = Session::getUserId(); + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; + + if ($userRole < 2) { + $this->sendError('Droits insuffisants - Admin amicale minimum requis', 403); + return; + } $data = $this->getJsonInput(); $entiteId = $data['fk_entite'] ?? Session::getEntityId(); @@ -39,7 +50,7 @@ class StripeController extends Controller { } // Vérifier les droits sur cette entité - if (Session::getEntityId() != $entiteId && Session::getRole() < 3) { + if (Session::getEntityId() != $entiteId && $userRole < 3) { $this->sendError('Non autorisé pour cette entité', 403); return; } @@ -64,7 +75,18 @@ class StripeController extends Controller { public function createOnboardingLink(string $accountId): void { try { $this->requireAuth(); - $this->requireRole(2); + + // Vérifier le rôle de l'utilisateur + $userId = Session::getUserId(); + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; + + if ($userRole < 2) { + $this->sendError('Droits insuffisants', 403); + return; + } $data = $this->getJsonInput(); $returnUrl = $data['return_url'] ?? ''; @@ -95,7 +117,18 @@ class StripeController extends Controller { public function createLocation(): void { try { $this->requireAuth(); - $this->requireRole(2); + + // Vérifier le rôle de l'utilisateur + $userId = Session::getUserId(); + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; + + if ($userRole < 2) { + $this->sendError('Droits insuffisants', 403); + return; + } $data = $this->getJsonInput(); $entiteId = $data['fk_entite'] ?? Session::getEntityId(); @@ -212,9 +245,14 @@ class StripeController extends Controller { // Vérifier les droits $userEntityId = Session::getEntityId(); - $userRole = Session::getRole(); $userId = Session::getUserId(); + // Récupérer le rôle depuis la base de données + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; + if ($payment['fk_entite'] != $userEntityId && $payment['fk_user'] != $userId && $userRole < 3) { @@ -255,7 +293,13 @@ class StripeController extends Controller { // Vérifier les droits : admin de l'amicale ou super admin $userEntityId = Session::getEntityId(); - $userRole = Session::getRole(); + $userId = Session::getUserId(); + + // Récupérer le rôle depuis la base de données + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; if ($entityId != $userEntityId && $userRole < 3) { $this->sendError('Non autorisé', 403); @@ -433,7 +477,14 @@ class StripeController extends Controller { $dateTo = $_GET['date_to'] ?? date('Y-m-d'); // Vérifier les droits - if ($entiteId != Session::getEntityId() && Session::getRole() < 3) { + // Récupérer le rôle pour vérifier les droits + $userId = Session::getUserId(); + $stmt = $this->db->prepare('SELECT fk_role FROM users WHERE id = ?'); + $stmt->execute([$userId]); + $result = $stmt->fetch(); + $userRole = $result ? (int)$result['fk_role'] : 0; + + if ($entiteId != Session::getEntityId() && $userRole < 3) { $this->sendError('Non autorisé', 403); return; } diff --git a/api/src/Core/Controller.php b/api/src/Core/Controller.php index 57a8633f..7be76cf4 100644 --- a/api/src/Core/Controller.php +++ b/api/src/Core/Controller.php @@ -31,19 +31,6 @@ abstract class Controller { } } - /** - * Vérifier que l'utilisateur a le rôle minimum requis - * @param int $minRole Rôle minimum requis (1=membre, 2=admin amicale, 3=super admin) - */ - protected function requireRole(int $minRole): void { - $this->requireAuth(); - - $userRole = Session::getRole(); - if ($userRole < $minRole) { - $this->sendError('Droits insuffisants', 403); - exit; - } - } /** * Récupérer les données JSON de la requête