diff --git a/Sources/public/index.php b/Sources/public/index.php index 3cd3a5da..64e21a2d 100755 --- a/Sources/public/index.php +++ b/Sources/public/index.php @@ -37,12 +37,11 @@ use Twig\Loader\FilesystemLoader; use Shared\IHashPassword; use Shared\HashPassword; use Shared\Log; - $appFactory = new AppCreator(); $appFactory->registerService(IArgumentResolver::class, ArgumentControllerResolver::class); -$appFactory->registerService(UserManager::class, UserManager::class); +$appFactory->registerSingleton(UserManager::class, UserManager::class); $appFactory->registerService(DataManager::class, StubData::class); -$appFactory->registerService(IAuthService::class, AuthService::class); +$appFactory->registerSingleton(IAuthService::class, AuthService::class); $appFactory->registerService(IFriendRequestService::class, RelationshipService::class); $appFactory->registerService(IHashPassword::class, HashPassword::class); $appFactory->registerService(INotificationService::class, NotificationService::class); @@ -70,6 +69,7 @@ if (!is_null($app)){ /*$app->use(new LoggingMiddleware());*/ $app->use(new AuthMiddleware($appFactory->getDicontainer()->get(IAuthService::class) )); $app->mapControllers(); + $app->run(RequestFactory::createFromGlobals()); } diff --git a/Sources/src/app/controller/AuthController.php b/Sources/src/app/controller/AuthController.php index 64d37e1e..b6ecfa0a 100644 --- a/Sources/src/app/controller/AuthController.php +++ b/Sources/src/app/controller/AuthController.php @@ -34,30 +34,16 @@ class AuthController extends BaseController #[Route('/login', name: 'login',methods: ['POST'])] public function login(string $email,string $password, IRequest $request): IResponse { $error = []; - try { $log=$email; // should check email with verrify email $mdp=Validation::clean_string($password); + if($this->userMgr->login($log,$mdp)){ -// Log::dd($this->userMgr->getCurrentUser()); -// $athleteGateway = new AthleteGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); -// $user = $athleteGateway->getUserByEmail($email); -// $map = new AthleteMapper(); -// $userEntity = $map->athleteSqlToEntity($user); -// -// $users = ['username' => $userEntity[0]->getUsername(), 'nom' => $userEntity[0]->getNom(), -// 'prenom' => $userEntity[0]->getPrenom(),'email' => $userEntity[0]->getEmail(), 'sexe' => $userEntity[0]->getSexe(), -// 'taille' => $userEntity[0]->getTaille(), 'poids' => $userEntity[0]->getPoids(), 'motdepasse' => $userEntity[0]->getMotDePasse(), -// 'datenaissance' => $userEntity[0]->getDateNaissance(), 'iscoach' => $userEntity[0]->getIsCoach(), 'img' => 'test']; - return $this->render('./page/home.html.twig', [ - 'css' => $this->preference->getCookie(), - 'pp' => 'test', -// 'user' => $this->userMgr->getCurrentUser()->getUsername(), -// 'role' => $this->userMgr->getCurrentUser()->getRole() - ]); +// Log::dd("gg"); + return new RedirectResponse('/home'); } else{ - $error [] = "Erreur de connexion. Essayez encore"; + $error [] = "Erreur de connexion. Essayez encore"; return $this->render('./page/login.html.twig',[ 'css' => $this->preference->getCookie(), @@ -72,17 +58,17 @@ class AuthController extends BaseController 'css' => $this->preference->getCookie(), 'login_error'=> $error, ]); - - } - + + } + } #[Route('/login', name: 'login2',methods: ['GET'])] public function login2(IRequest $request): IResponse { - + return $this->render('./page/login.html.twig',[ 'css' => $this->preference->getCookie() ]); - + } #[Route('/register', name: 'register2' , methods:['GET'])] public function register2(IRequest $request): IResponse{ @@ -136,7 +122,7 @@ class AuthController extends BaseController return $this->render('./page/register.html.twig', ['css' => $this->preference->getCookie(),"register_error" => $error ]); } - + } @@ -166,19 +152,19 @@ class AuthController extends BaseController $error = []; try { - + if($this->userMgr->deconnecter()){ return new RedirectResponse('/'); } else{ - $error [] = "Erreur de deconnexion. Essayez encore"; + $error [] = "Erreur de deconnexion. Essayez encore"; return new RedirectResponse('/'); } } catch (\Throwable $th) { $error [] =$th->getMessage(); return new RedirectResponse('/'); - } + } } } ?> \ 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 ec1e7dee..c717989e 100644 --- a/Sources/src/app/router/middleware/AuthMiddleware.php +++ b/Sources/src/app/router/middleware/AuthMiddleware.php @@ -13,24 +13,13 @@ class AuthMiddleware extends Middleware { $this->auth = $auth; } public function handle(IRequest $request, callable $next) { - $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); - } - } - + $excludedUrls = ['/login', '/register','/forgetPassword', '/', '/mock']; if ($this->auth->getCurrentUser() === null && !in_array($request->getRequestUri(), $excludedUrls)) { $resp = new RedirectResponse("/login"); $resp->send(); exit; - } + } + return parent::handle($request, $next); } } \ No newline at end of file diff --git a/Sources/src/data/core/network/AuthService.php b/Sources/src/data/core/network/AuthService.php index 88c407d3..5dcae3ea 100644 --- a/Sources/src/data/core/network/AuthService.php +++ b/Sources/src/data/core/network/AuthService.php @@ -2,11 +2,6 @@ namespace Network; use App\Router\Session; -use Database\AthleteGateway; -use Database\AthleteMapper; -use Database\CoachMapper; -use Database\Connexion; -use Database\UserGateway; use Model\User; use Model\Athlete; use Model\CoachAthlete; @@ -29,40 +24,14 @@ class AuthService implements IAuthService public function login(string $email, string $password): bool { -// $user = $this->userRepository->getItemByEmail($email); - $userGateway = new UserGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); - $userRepository = $userGateway->getUserByEmail($email); -// Log::dd($userRepository[0]['isCoach']); - if($userRepository[0]['isCoach']) { - $map = new CoachMapper(); - $coachEntity = $map->coachSqlToEntity($userRepository); -// $user = []; - foreach($coachEntity as $coachs) { - $user = $map->CoachEntityToModel($coachs); - } - } else { - $map = new AthleteMapper(); - $athleteEntity = $map->athleteSqlToEntity($userRepository); - foreach($athleteEntity as $coachs) { - $user = $map->AthleteEntityToModel($coachs); - } - } - -// Log::dd($user); -// $map->athleteEntityToModel($userRepository) - -// $user = ['username' => $userEntity[0]->getUsername(), 'nom' => $userEntity[0]->getNom(), -// 'prenom' => $userEntity[0]->getPrenom(),'email' => $userEntity[0]->getEmail(), 'sexe' => $userEntity[0]->getSexe(), -// 'taille' => $userEntity[0]->getTaille(), 'poids' => $userEntity[0]->getPoids(), 'motdepasse' => $userEntity[0]->getMotDePasse(), -// 'datenaissance' => $userEntity[0]->getDateNaissance(), 'iscoach' => $userEntity[0]->getIsCoach(), 'img' => 'test']; -// Log::dd($this->passwordHacher->isPasswordValid($user->getMotDePasse(),$password)); - if ($user === null || !$this->passwordHacher->isPasswordValid($user->getMotDePasse(),$password)) { + $user = $this->userRepository->getItemByEmail($email); + if ($user === null || !$this->passwordHacher->isPasswordValid( $user->getMotDePasse(),$password)) { return false; } $this->currentUser = $user; -// Log::dd(Session::getInstance()->__get(USER)); - Session::getInstance()->__set(USER, $this->currentUser->getId()); -// Log::dd(Session::getInstance()->__set(USER, $this->currentUser->getId())); + $id = $this->currentUser->getId(); + Session::getInstance()->__set(USER, $id); + Session::getInstance()->__get(USER); return true; } @@ -91,6 +60,7 @@ class AuthService implements IAuthService } $user = new User( + random_int(0, 100), $nom, $prenom, $username, @@ -100,6 +70,7 @@ class AuthService implements IAuthService $taille, $poids, $dateNaissance, + //should use reflexion $role ); $this->userRepository->addItem($user); @@ -116,7 +87,7 @@ class AuthService implements IAuthService Session::getInstance()->destroy(); return true; } - + public function getCurrentUser(): ?User { if (!empty(Session::getInstance()->__get(USER)) && $this->currentUser === null) { diff --git a/Sources/src/data/model/Training.php b/Sources/src/data/model/Training.php index e422bc90..0fb4ba72 100644 --- a/Sources/src/data/model/Training.php +++ b/Sources/src/data/model/Training.php @@ -13,13 +13,14 @@ class Training private ?String $feedback; public function __construct( + int $id, \DateTime $date, float $latitude, float $longitude, ?String $description = null, ?String $feedback = null ) { - $this->idTraining = self::generateId(); + $this->idTraining = $id; $this->date = $date; $this->latitude = $latitude; $this->longitude = $longitude; diff --git a/Sources/src/data/model/User.php b/Sources/src/data/model/User.php index 0726aa4b..b6adfedd 100644 --- a/Sources/src/data/model/User.php +++ b/Sources/src/data/model/User.php @@ -16,7 +16,7 @@ namespace Model; * @brief Classe représentant un utilisateur. */ class User { - private static $lastId = 0; +// private static $lastId = 0; private int $id; private String $username; private string $nom; @@ -44,11 +44,11 @@ class User { * @param \DateTime $dateNaissance * @param \Model\Role $role */ - public function __construct(string $nom, string $prenom, string $username, string $email, + public function __construct(int $id, string $nom, string $prenom, string $username, string $email, string $motDePasse, string $sexe, float $taille, float $poids, \DateTime $dateNaissance, Role $role) { - $this->id = self::generateId(); + $this->id = $id; $this->nom = $nom; $this->prenom = $prenom; $this->username = $username; diff --git a/Sources/src/data/model/manager/UserManager.php b/Sources/src/data/model/manager/UserManager.php index 79e04dd2..69e0681a 100644 --- a/Sources/src/data/model/manager/UserManager.php +++ b/Sources/src/data/model/manager/UserManager.php @@ -42,7 +42,7 @@ class UserManager public function getCurrentUser(): ?User { - return $this->currentUser; + return $this->currentUser ?? $this->authService->getCurrentUser(); } /** diff --git a/Sources/src/data/stub/repository/UserRepository.php b/Sources/src/data/stub/repository/UserRepository.php index 2501b87d..cd506dbc 100644 --- a/Sources/src/data/stub/repository/UserRepository.php +++ b/Sources/src/data/stub/repository/UserRepository.php @@ -27,11 +27,11 @@ class UserRepository implements IUserRepository { * Constructeur de la classe UserRepository. */ public function __construct() { - $this->users[] = new User("Doe", "John", "Doe","john.doe@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete()); - $this->users[] = new User("Smith", "Jane","Smith", "jane.smith@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'F', 1.65, 60, new \DateTime("1990-03-10"), new Athlete()); - $this->users[] = new User("Martin", "Paul","Martin", "paul.martin@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete()); - $this->users[] = new User("Brown", "Anna","Brown", "anna.brown@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'F', 1.70, 58, new \DateTime("1992-11-25"), new Athlete()); - $this->users[] = new User("Lee", "Bruce","Lee", "bruce.lee@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.72, 70, new \DateTime("1970-02-05"), new Athlete()); + $this->users[] = new User(1, "Doe", "John", "Doe","john.doe@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete()); + $this->users[] = new User(2, "Smith", "Jane","Smith", "jane.smith@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'F', 1.65, 60, new \DateTime("1990-03-10"), new Athlete()); + $this->users[] = new User(3, "Martin", "Paul","Martin", "paul.martin@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete()); + $this->users[] = new User(4, "Brown", "Anna","Brown", "anna.brown@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'F', 1.70, 58, new \DateTime("1992-11-25"), new Athlete()); + $this->users[] = new User(5, "Lee", "Bruce","Lee", "bruce.lee@example.com", '$2y$10$U59ioMTGZBM2FGQv.3lcbuL0IkO4Fx1jQU7f5hF7o/hvCX2t46mby', 'M', 1.72, 70, new \DateTime("1970-02-05"), new Athlete()); // $this->users[] = new User(1, "Doe", "John", "Doe","john.doe@example.com", "password123", 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete()); // $this->users[] = new User(2, "Smith", "Jane","Smith", "jane.smith@example.com", "secure456", 'F', 1.65, 60, new \DateTime("1990-03-10"), new Athlete()); // $this->users[] = new User(3, "Martin", "Paul","Martin", "paul.martin@example.com", "super789", 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete());