<?php include_once __ROOT_DIR . '/libs/php-jwt/src/BeforeValidException.php'; include_once __ROOT_DIR . '/libs/php-jwt/src/ExpiredException.php'; include_once __ROOT_DIR . '/libs/php-jwt/src/SignatureInvalidException.php'; include_once __ROOT_DIR . '/libs/php-jwt/src/JWT.php'; use \Firebase\JWT\JWT; class UserController extends Controller { public function __construct($name, $request) { parent::__construct($name, $request); } // ============== // Actions // ============== public function processRequest() { switch ($this->request->getHttpMethod()) { case 'POST': $post = json_decode(file_get_contents("php://input")); return $this->createUser($post); break; case 'GET': if (empty($this->request->getUriParameters())) return $this->getAllUsers(); else return $this->getUserById($this->request->getUriParameters()[0]); break; case 'PUT': $put = json_decode(file_get_contents("php://input")); $id = $this->request->getUriParameters()[0]; return $this->updateUser($put, $id); break; case 'DELETE': $id = $this->request->getUriParameters()[0]; return $this->deleteUser($id); break; } return Response::errorResponse("unsupported parameters or method in users"); } protected function createUser($post) { if (isset($post->firstname) && isset($post->lastname) && isset($post->login) && isset($post->email) && isset($post->password) && isset($post->role)) { User::create($post); $response = Response::okResponse("Utilisateur ajouté"); } else { // $response = Response::notFoundResponse("Aucun utilisateur ajouté"); $response = Response::notFoundResponse(var_dump($post)); } return $response; } protected function getAllUsers() { $users = User::getList(); if (!empty($users)) $response = Response::okResponse(json_encode($users)); else $response = Response::notFoundResponse("Aucune réponse"); return $response; } protected function getUserById($id) { $user = User::getWithId($id); if (!empty($user)) $response = Response::okResponse(json_encode($user)); else $response = Response::notFoundResponse("Aucune réponse"); return $response; } protected function updateUser($put, $id) { $user = User::getWithId($id); if (isset($put->email)) { if (!empty($user)) { $jwt_token = $this->request->getJwtToken(); $jwt = JWT::decode($jwt_token, JWT_BACKEND_KEY, array('HS256')); if ($jwt->data->id == $id) { User::update($put, $id); $response = Response::okResponse("Utilisateur modifié"); return $response; } else { return Response::unauthorizedResponse("Modification non autorisée"); } } else { return Response::notFoundResponse("Aucun utilisateur trouvé"); } } else { return Response::notFoundResponse("Mauvais paramètres"); } } protected function deleteUser($id) { $user = User::getWithId($id); if (!empty($user)) { User::delete($id); $response = Response::okResponse("Utilisateur supprimé"); } else { $response = Response::notFoundResponse("Aucun utilisateur supprimé"); } return $response; } } ?>