Fix: Corriger le type PDO dans StripeService et retirer getConnection()
This commit is contained in:
99
api/src/Core/Controller.php
Normal file
99
api/src/Core/Controller.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Core;
|
||||
|
||||
use Database;
|
||||
use Session;
|
||||
use Response;
|
||||
use Request;
|
||||
use PDO;
|
||||
|
||||
/**
|
||||
* Classe de base pour tous les controllers
|
||||
* Fournit des méthodes communes pour l'authentification et les réponses
|
||||
*/
|
||||
abstract class Controller {
|
||||
protected PDO $db;
|
||||
|
||||
public function __construct() {
|
||||
$this->db = Database::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifier que l'utilisateur est authentifié
|
||||
*/
|
||||
protected function requireAuth(): void {
|
||||
if (!Session::isAuthenticated()) {
|
||||
$this->sendError('Non authentifié', 401);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
protected function getJsonInput(): array {
|
||||
return Request::getJson();
|
||||
}
|
||||
|
||||
/**
|
||||
* Envoyer une réponse de succès
|
||||
*/
|
||||
protected function sendSuccess($data = null, int $code = 200): void {
|
||||
if ($data === null) {
|
||||
Response::json(['status' => 'success'], $code);
|
||||
} else {
|
||||
Response::json($data, $code);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Envoyer une réponse d'erreur
|
||||
*/
|
||||
protected function sendError(string $message, int $code = 500): void {
|
||||
Response::json([
|
||||
'status' => 'error',
|
||||
'message' => $message
|
||||
], $code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Valider qu'un tableau contient les clés requises
|
||||
*/
|
||||
protected function validateRequired(array $data, array $requiredFields): bool {
|
||||
foreach ($requiredFields as $field) {
|
||||
if (!isset($data[$field]) || $data[$field] === '') {
|
||||
$this->sendError("Le champ '$field' est requis", 400);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Nettoyer et valider un ID
|
||||
*/
|
||||
protected function validateId($id): ?int {
|
||||
if (!is_numeric($id) || $id <= 0) {
|
||||
$this->sendError('ID invalide', 400);
|
||||
return null;
|
||||
}
|
||||
return (int) $id;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user