diff --git a/Sources/src/app/controller/ApiController.php b/Sources/src/app/controller/ApiController.php new file mode 100644 index 00000000..c0a2c41c --- /dev/null +++ b/Sources/src/app/controller/ApiController.php @@ -0,0 +1,131 @@ +userMgr = $manager; + } + #[Route(path: '/api/activities', name: 'api-activities', methods: ['GET'])] + public function apiActivities(IRequest $request) + { + $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); + $listSearch = $activityGateway->getActivity(); + $map = new ActivityMapper(); + $activityGateway = $map->activitySqlToEntity($listSearch); + $listActivity = []; + foreach ($activityGateway as $entity) { + $activity = $map->activityEntityToModel($entity); + $listActivity[] = ['idactivity' => number_format($activity->getIdActivity()), 'type' => $activity->getType(), + 'date' => $activity->getDate()->format("Y-m-d"), 'heureDebut' => $activity->getHeureDebut()->format("Y-m-d"), 'heureFin' => $activity->getHeureFin()->format("Y-m-d"), + 'effortRessenti' => $activity->getEffortRessenti(), 'variabilite' => $activity->getVariability(), 'variance' => $activity->getVariance(), + 'ecartType' => $activity->getStandardDeviation(), 'moyenne' => $activity->getAverage(), + 'max' => $activity->getMaximum(), 'min' => $activity->getMinimum(), 'temperature' => $activity->getAvrTemperature()]; + } + + $jsonSerializer = new JsonSerializer(); + $jsonData = $jsonSerializer::serialize($listActivity); + + $response = new Response(); + $response->setContent($jsonData); + $response->setHeader('Content-Type', 'application/json'); + + return $response; + } + + // cela ne trouve pas la methode avec la route '/api/activities/1' + #[Route(path: '/api/activities/{id}', name: 'api-activities-by-id', methods: ['GET'])] + public function apiActivityById(IRequest $request, int $id) + { + $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); + $listSearch = $activityGateway->getActivityById($id); + Log::dd($listSearch); + $map = new ActivityMapper(); + $activityGateway = $map->activitySqlToEntity($listSearch); + $listActivity = []; + foreach ($activityGateway as $entity) { + $activity = $map->activityEntityToModel($entity); + $listActivity[] = ['idactivity' => number_format($activity->getIdActivity()), 'type' => $activity->getType(), + 'date' => $activity->getDate()->format("Y-m-d"), 'heureDebut' => $activity->getHeureDebut()->format("Y-m-d"), 'heureFin' => $activity->getHeureFin()->format("Y-m-d"), + 'effortRessenti' => $activity->getEffortRessenti(), 'variabilite' => $activity->getVariability(), 'variance' => $activity->getVariance(), + 'ecartType' => $activity->getStandardDeviation(), 'moyenne' => $activity->getAverage(), + 'max' => $activity->getMaximum(), 'min' => $activity->getMinimum(), 'temperature' => $activity->getAvrTemperature()]; + } + + $jsonSerializer = new JsonSerializer(); + $jsonData = $jsonSerializer::serialize($listActivity); + + $response = new Response(); + $response->setContent($jsonData); + $response->setHeader('Content-Type', 'application/json'); + // pour delete renvoyer 204 pour dire ok et supprimer + // update 200 + + + return $response; + } +// +// #[Route(path: '/api/activities', name: 'api-activities-post', methods: ['POST'])] +// public function apiAddActivity(IRequest $request) +// { +// $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); +// $listSearch = $activityGateway->getActivity(); +// $map = new ActivityMapper(); +// $activityGateway = $map->activitySqlToEntity($listSearch); +// $listActivity = []; +// foreach ($activityGateway as $entity) { +// $activity = $map->activityEntityToModel($entity); +// $listActivity[] = ['idactivity' => number_format($activity->getIdActivity()), 'type' => $activity->getType(), +// 'date' => $activity->getDate()->format("Y-m-d"), 'heureDebut' => $activity->getHeureDebut()->format("Y-m-d"), 'heureFin' => $activity->getHeureFin()->format("Y-m-d"), +// 'effortRessenti' => $activity->getEffortRessenti(), 'variabilite' => $activity->getVariability(), 'variance' => $activity->getVariance(), +// 'ecartType' => $activity->getStandardDeviation(), 'moyenne' => $activity->getAverage(), +// 'max' => $activity->getMaximum(), 'min' => $activity->getMinimum(), 'temperature' => $activity->getAvrTemperature()]; +// } +// +// $jsonSerializer = new JsonSerializer(); +// $jsonData = $jsonSerializer::serialize($listActivity); +// +// $response = new Response(); +// $response->setContent($jsonData); +// $response->setHeader('Content-Type', 'application/json'); +// +// return $response; +// } +// #[Route(path: '/api/activities/{id}', name: 'api-activities-post', methods: ['DELETE'])] +// public function apiDeleteActivity(IRequest $request, int $id) +// { +// $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); +// $listSearch = $activityGateway->removeActivityById($id); +// +// $response = new Response(); +// $response->setContent($jsonData); +// $response->setHeader('Content-Type', 'application/json'); +// +// return $response; +// } +// #[Route(path: '/api/activities/{id}', name: 'api-activities-post', methods: ['PUT'])] +// public function apiUpdateActivity(IRequest $request, int $id) +// { +// $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); +// $listSearch = $activityGateway->updateActivity($id); +// +// $response = new Response(); +// $response->setContent($jsonData); +// $response->setHeader('Content-Type', 'application/json'); +// +// return $response; +// } +} \ No newline at end of file diff --git a/Sources/src/app/controller/AuthController.php b/Sources/src/app/controller/AuthController.php index 3f22f634..64d37e1e 100644 --- a/Sources/src/app/controller/AuthController.php +++ b/Sources/src/app/controller/AuthController.php @@ -180,50 +180,5 @@ class AuthController extends BaseController return new RedirectResponse('/'); } } - #[Route(path: '/api', name: 'api', methods: ['GET'])] - public function api(IRequest $request) - { - // Récupérer les données de la base de données (exemple avec un modèle User) -// $user = $this->getUserDataFromDatabase(); - $activityGateway = new ActivityGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); - $listSearch = $activityGateway->getActivity(); - $map = new ActivityMapper(); - $activityGateway = $map->activitySqlToEntity($listSearch); - $listActivity = []; - foreach ($activityGateway as $entity) { - $activity = $map->activityEntityToModel($entity); - $listActivity[] = ['idactivity' => number_format($activity->getIdActivity()), 'type' => $activity->getType(), - 'date' => $activity->getDate()->format("Y-m-d"), 'heureDebut' => $activity->getHeureDebut()->format("Y-m-d"), 'heureFin' => $activity->getHeureFin()->format("Y-m-d"), - 'effortRessenti' => $activity->getEffortRessenti(), 'variabilite' => $activity->getVariability(), 'variance' => $activity->getVariance(), - 'ecartType' => $activity->getStandardDeviation(), 'moyenne' => $activity->getAverage(), - 'max' => $activity->getMaximum(), 'min' => $activity->getMinimum(), 'temperature' => $activity->getAvrTemperature()]; - } - - // Utiliser le sérialiseur JSON pour convertir le modèle en JSON -// Log::dd($listActivity); -// $jsonData = json_encode($listActivity); - $jsonSerializer = new JsonSerializer(); - $jsonData = $jsonSerializer::serialize($listActivity); - - // Configurer l'objet Response pour inclure le JSON - $response = new Response(); - $response->setContent($jsonData); - $response->setHeader('Content-Type', 'application/json'); - - // Retourner l'objet Response - return $response; - } -// #[Route(path: '/api', name: 'api', methods: ['GET'])] -// public function api(IRequest $request) -// { -// $data = 'Hello from Slim API!'; -// $response ??= new Response(); -// $response->setContent($data); -// -// return $response; -// } - - - } ?> \ No newline at end of file diff --git a/Sources/src/app/router/middleware/AuthMiddleware.php b/Sources/src/app/router/middleware/AuthMiddleware.php index b064cd92..ec1e7dee 100644 --- a/Sources/src/app/router/middleware/AuthMiddleware.php +++ b/Sources/src/app/router/middleware/AuthMiddleware.php @@ -13,8 +13,19 @@ class AuthMiddleware extends Middleware { $this->auth = $auth; } public function handle(IRequest $request, callable $next) { - $excludedUrls = ['/login', '/register','/forgetPassword', '/', '/api']; + $excludedUrls = ['/login', '/register','/forgetPassword', '/', '/api', '/api/activities']; // Log::dd($this->auth->getCurrentUser()); + $excludedPrefixes = ['/api/activities']; + + // Vérifier si l'URL actuelle commence par l'un des préfixes exclus, pour /api/activities/1 par exemple + foreach ($excludedPrefixes as $prefix) { +// Log::dd($request->getRequestUri()); + if (strpos($request->getRequestUri(), $prefix) === 0) { + // Si c'est le cas, passer à la requête suivante sans appliquer le middleware + return parent::handle($request, $next); + } + } + if ($this->auth->getCurrentUser() === null && !in_array($request->getRequestUri(), $excludedUrls)) { $resp = new RedirectResponse("/login"); $resp->send();