update some bugs

API_tests
Antoine PEREDERII 1 year ago
parent c9b2a2d6c9
commit 9d64b7de40

@ -37,12 +37,11 @@ use Twig\Loader\FilesystemLoader;
use Shared\IHashPassword; use Shared\IHashPassword;
use Shared\HashPassword; use Shared\HashPassword;
use Shared\Log; use Shared\Log;
$appFactory = new AppCreator(); $appFactory = new AppCreator();
$appFactory->registerService(IArgumentResolver::class, ArgumentControllerResolver::class); $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(DataManager::class, StubData::class);
$appFactory->registerService(IAuthService::class, AuthService::class); $appFactory->registerSingleton(IAuthService::class, AuthService::class);
$appFactory->registerService(IFriendRequestService::class, RelationshipService::class); $appFactory->registerService(IFriendRequestService::class, RelationshipService::class);
$appFactory->registerService(IHashPassword::class, HashPassword::class); $appFactory->registerService(IHashPassword::class, HashPassword::class);
$appFactory->registerService(INotificationService::class, NotificationService::class); $appFactory->registerService(INotificationService::class, NotificationService::class);
@ -70,6 +69,7 @@ if (!is_null($app)){
/*$app->use(new LoggingMiddleware());*/ /*$app->use(new LoggingMiddleware());*/
$app->use(new AuthMiddleware($appFactory->getDicontainer()->get(IAuthService::class) )); $app->use(new AuthMiddleware($appFactory->getDicontainer()->get(IAuthService::class) ));
$app->mapControllers(); $app->mapControllers();
$app->run(RequestFactory::createFromGlobals()); $app->run(RequestFactory::createFromGlobals());
} }

@ -34,30 +34,16 @@ class AuthController extends BaseController
#[Route('/login', name: 'login',methods: ['POST'])] #[Route('/login', name: 'login',methods: ['POST'])]
public function login(string $email,string $password, IRequest $request): IResponse { public function login(string $email,string $password, IRequest $request): IResponse {
$error = []; $error = [];
try { try {
$log=$email; // should check email with verrify email $log=$email; // should check email with verrify email
$mdp=Validation::clean_string($password); $mdp=Validation::clean_string($password);
if($this->userMgr->login($log,$mdp)){ if($this->userMgr->login($log,$mdp)){
// Log::dd($this->userMgr->getCurrentUser()); // Log::dd("gg");
// $athleteGateway = new AthleteGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); return new RedirectResponse('/home');
// $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()
]);
} }
else{ else{
$error [] = "Erreur de connexion. Essayez encore"; $error [] = "Erreur de connexion. Essayez encore";
return $this->render('./page/login.html.twig',[ return $this->render('./page/login.html.twig',[
'css' => $this->preference->getCookie(), 'css' => $this->preference->getCookie(),
@ -72,17 +58,17 @@ class AuthController extends BaseController
'css' => $this->preference->getCookie(), 'css' => $this->preference->getCookie(),
'login_error'=> $error, 'login_error'=> $error,
]); ]);
} }
} }
#[Route('/login', name: 'login2',methods: ['GET'])] #[Route('/login', name: 'login2',methods: ['GET'])]
public function login2(IRequest $request): IResponse { public function login2(IRequest $request): IResponse {
return $this->render('./page/login.html.twig',[ return $this->render('./page/login.html.twig',[
'css' => $this->preference->getCookie() 'css' => $this->preference->getCookie()
]); ]);
} }
#[Route('/register', name: 'register2' , methods:['GET'])] #[Route('/register', name: 'register2' , methods:['GET'])]
public function register2(IRequest $request): IResponse{ 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 ]); return $this->render('./page/register.html.twig', ['css' => $this->preference->getCookie(),"register_error" => $error ]);
} }
} }
@ -166,19 +152,19 @@ class AuthController extends BaseController
$error = []; $error = [];
try { try {
if($this->userMgr->deconnecter()){ if($this->userMgr->deconnecter()){
return new RedirectResponse('/'); return new RedirectResponse('/');
} }
else{ else{
$error [] = "Erreur de deconnexion. Essayez encore"; $error [] = "Erreur de deconnexion. Essayez encore";
return new RedirectResponse('/'); return new RedirectResponse('/');
} }
} catch (\Throwable $th) { } catch (\Throwable $th) {
$error [] =$th->getMessage(); $error [] =$th->getMessage();
return new RedirectResponse('/'); return new RedirectResponse('/');
} }
} }
} }
?> ?>

@ -13,24 +13,13 @@ class AuthMiddleware extends Middleware {
$this->auth = $auth; $this->auth = $auth;
} }
public function handle(IRequest $request, callable $next) { public function handle(IRequest $request, callable $next) {
$excludedUrls = ['/login', '/register','/forgetPassword', '/', '/api', '/api/activities']; $excludedUrls = ['/login', '/register','/forgetPassword', '/', '/mock'];
// 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)) { if ($this->auth->getCurrentUser() === null && !in_array($request->getRequestUri(), $excludedUrls)) {
$resp = new RedirectResponse("/login"); $resp = new RedirectResponse("/login");
$resp->send(); $resp->send();
exit; exit;
} }
return parent::handle($request, $next); return parent::handle($request, $next);
} }
} }

@ -2,11 +2,6 @@
namespace Network; namespace Network;
use App\Router\Session; use App\Router\Session;
use Database\AthleteGateway;
use Database\AthleteMapper;
use Database\CoachMapper;
use Database\Connexion;
use Database\UserGateway;
use Model\User; use Model\User;
use Model\Athlete; use Model\Athlete;
use Model\CoachAthlete; use Model\CoachAthlete;
@ -29,40 +24,14 @@ class AuthService implements IAuthService
public function login(string $email, string $password): bool public function login(string $email, string $password): bool
{ {
// $user = $this->userRepository->getItemByEmail($email); $user = $this->userRepository->getItemByEmail($email);
$userGateway = new UserGateway(new Connexion(DSN, DB_USER, DB_PASSWORD)); if ($user === null || !$this->passwordHacher->isPasswordValid( $user->getMotDePasse(),$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)) {
return false; return false;
} }
$this->currentUser = $user; $this->currentUser = $user;
// Log::dd(Session::getInstance()->__get(USER)); $id = $this->currentUser->getId();
Session::getInstance()->__set(USER, $this->currentUser->getId()); Session::getInstance()->__set(USER, $id);
// Log::dd(Session::getInstance()->__set(USER, $this->currentUser->getId())); Session::getInstance()->__get(USER);
return true; return true;
} }
@ -91,6 +60,7 @@ class AuthService implements IAuthService
} }
$user = new User( $user = new User(
random_int(0, 100),
$nom, $nom,
$prenom, $prenom,
$username, $username,
@ -100,6 +70,7 @@ class AuthService implements IAuthService
$taille, $taille,
$poids, $poids,
$dateNaissance, $dateNaissance,
//should use reflexion
$role $role
); );
$this->userRepository->addItem($user); $this->userRepository->addItem($user);
@ -116,7 +87,7 @@ class AuthService implements IAuthService
Session::getInstance()->destroy(); Session::getInstance()->destroy();
return true; return true;
} }
public function getCurrentUser(): ?User public function getCurrentUser(): ?User
{ {
if (!empty(Session::getInstance()->__get(USER)) && $this->currentUser === null) { if (!empty(Session::getInstance()->__get(USER)) && $this->currentUser === null) {

@ -13,13 +13,14 @@ class Training
private ?String $feedback; private ?String $feedback;
public function __construct( public function __construct(
int $id,
\DateTime $date, \DateTime $date,
float $latitude, float $latitude,
float $longitude, float $longitude,
?String $description = null, ?String $description = null,
?String $feedback = null ?String $feedback = null
) { ) {
$this->idTraining = self::generateId(); $this->idTraining = $id;
$this->date = $date; $this->date = $date;
$this->latitude = $latitude; $this->latitude = $latitude;
$this->longitude = $longitude; $this->longitude = $longitude;

@ -16,7 +16,7 @@ namespace Model;
* @brief Classe représentant un utilisateur. * @brief Classe représentant un utilisateur.
*/ */
class User { class User {
private static $lastId = 0; // private static $lastId = 0;
private int $id; private int $id;
private String $username; private String $username;
private string $nom; private string $nom;
@ -44,11 +44,11 @@ class User {
* @param \DateTime $dateNaissance * @param \DateTime $dateNaissance
* @param \Model\Role $role * @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, string $motDePasse, string $sexe, float $taille, float $poids, \DateTime $dateNaissance,
Role $role) Role $role)
{ {
$this->id = self::generateId(); $this->id = $id;
$this->nom = $nom; $this->nom = $nom;
$this->prenom = $prenom; $this->prenom = $prenom;
$this->username = $username; $this->username = $username;

@ -42,7 +42,7 @@ class UserManager
public function getCurrentUser(): ?User public function getCurrentUser(): ?User
{ {
return $this->currentUser; return $this->currentUser ?? $this->authService->getCurrentUser();
} }
/** /**

@ -27,11 +27,11 @@ class UserRepository implements IUserRepository {
* Constructeur de la classe UserRepository. * Constructeur de la classe UserRepository.
*/ */
public function __construct() { 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(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("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(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("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(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("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(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("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(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(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(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()); // $this->users[] = new User(3, "Martin", "Paul","Martin", "paul.martin@example.com", "super789", 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete());

Loading…
Cancel
Save