You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
6.0 KiB
182 lines
6.0 KiB
<?php
|
|
|
|
namespace App\Controller;
|
|
|
|
use App\Container;
|
|
use App\Router\Request\IRequest;
|
|
use App\Router\Response\RedirectResponse;
|
|
use App\Router\Response\Response;
|
|
use App\Router\Response\IResponse;
|
|
|
|
use App\Router\Session;
|
|
use Database\AthleteGateway;
|
|
use Database\AthleteMapper;
|
|
use Database\Connexion;
|
|
use Manager\UserManager;
|
|
use Shared\Attributes\Route;
|
|
use Shared\Validation;
|
|
use Twig\Environment;
|
|
use Data\Core\Preferences;
|
|
use Shared\Log;
|
|
use function PHPUnit\Framework\isEmpty;
|
|
|
|
class AuthController extends BaseController
|
|
{
|
|
private UserManager $userMgr;
|
|
public function __construct(UserManager $manager){
|
|
parent::__construct();
|
|
$this->userMgr = $manager;
|
|
}
|
|
|
|
#[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()
|
|
]);
|
|
}
|
|
else{
|
|
$error [] = "Erreur de connexion. Essayez encore";
|
|
|
|
return $this->render('./page/login.html.twig',[
|
|
'css' => $this->preference->getCookie(),
|
|
'login_error'=> $error,
|
|
]);
|
|
}
|
|
|
|
// should only cath a type of Exception not all
|
|
} catch (\Throwable $th) {
|
|
$error [] =$th->getMessage();
|
|
return $this->render('./page/login.html.twig',[
|
|
'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{
|
|
return $this->render('./page/register.html.twig',[
|
|
'css' => $this->preference->getCookie()
|
|
]);
|
|
}
|
|
|
|
#[Route('/register', name: 'register' , methods:['POST'])]
|
|
public function register(
|
|
string $nom,
|
|
string $prenom,
|
|
string $username,
|
|
string $mail,
|
|
string $motDePasse,
|
|
string $sexe,
|
|
float $taille,
|
|
float $poids,
|
|
string $dateNaissance,
|
|
string $roleName,
|
|
IRequest $request): IResponse
|
|
{
|
|
$error = [];
|
|
|
|
try {
|
|
$registrationData = [
|
|
'nom' => $nom,
|
|
'prenom' => $prenom,
|
|
'username' => $username,
|
|
'email' => $mail,
|
|
'sexe' => $sexe,
|
|
'taille' => $taille,
|
|
'poids' => $poids,
|
|
'dateNaissance' => $dateNaissance,
|
|
'roleName' => $roleName
|
|
];
|
|
|
|
if ($this->userMgr->register($mail, $motDePasse, $registrationData) ) {
|
|
return new RedirectResponse('/');
|
|
} else {
|
|
$error [] = 'L\'inscription a échoué. Veuillez réessayer.';
|
|
|
|
return $this->render('./page/register.html.twig',[
|
|
'css' => $this->preference->getCookie(),
|
|
'register_error'=> $error,
|
|
]);
|
|
}
|
|
} catch (\Throwable $e) {
|
|
$error [] =$e->getMessage();
|
|
|
|
return $this->render('./page/register.html.twig', ['css' => $this->preference->getCookie(),"register_error" => $error ]);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
//string $ancienMotDePasse,string $nouveauMotDePasse,string $confirmerMotDePasse,
|
|
|
|
#[Route(path: '/forgetPassword', name: 'forget-password2', methods: ['GET'])]
|
|
public function forgetPassword2(IRequest $request): IResponse
|
|
{
|
|
return $this->render('./page/password.html.twig',[
|
|
'css' => $this->preference->getCookie(),
|
|
]);
|
|
}
|
|
|
|
#[Route(path: '/forgetPassword', name: 'forget-password', methods: ['POST'])]
|
|
public function forgetPassword(string $mail, IRequest $request): IResponse
|
|
{
|
|
|
|
return $this->render('./page/password.html.twig',[
|
|
'css' => $this->preference->getCookie(),
|
|
]);
|
|
}
|
|
|
|
|
|
#[Route(path: '/logout', name: 'logout', methods: ['GET'])]
|
|
public function logout(IRequest $request): IResponse
|
|
{
|
|
$error = [];
|
|
|
|
try {
|
|
|
|
if($this->userMgr->deconnecter()){
|
|
return new RedirectResponse('/');
|
|
}
|
|
else{
|
|
$error [] = "Erreur de deconnexion. Essayez encore";
|
|
return new RedirectResponse('/');
|
|
}
|
|
|
|
} catch (\Throwable $th) {
|
|
$error [] =$th->getMessage();
|
|
return new RedirectResponse('/');
|
|
}
|
|
}
|
|
|
|
}
|
|
?>
|