<?php
namespace App\Controller;
use App\Entity\Compte;
use App\Entity\Profession;
use App\Repository\CompteRepository;
use App\Repository\ProfessionRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class LoginController extends AbstractController
{
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @Route("/login", name="login")
*/
public function index(): Response
{
return $this->render('login/index.html.twig', [
'controller_name' => 'LoginController',
]);
}
/**
* @Route("/choix", name="choix_compte")
*/
public function choix(): Response
{
return $this->render('login/choix_compte.html.twig', [
'controller_name' => 'LoginController',
]);
}
/**
* @Route("/capchat", name="capchat")
*/
public function capchat(): Response
{
return $this->render('testrecaptcha.html.twig', [
'controller_name' => 'LoginController',
]);
}
/**
* @Route("/inscription", name="inscription")
*/
public function inscription(Request $request, ProfessionRepository $professionRepository): Response
{
return $this->render('login/inscription.html.twig', [
'fonctions' => $professionRepository->findAll()
]);
}
/**
* @Route("/inscriptionbas", name="inscription_bas")
*/
public function inscriptionbas(ProfessionRepository $professionRepository): Response
{
return $this->render('login/inscriptionbas.html.twig', [
'fonctions' => $professionRepository->findAll()
]);
}
/**
* @Route("/confirmation", name="confirmation")
*/
public function confirmation(): Response
{
return $this->render('login/confirmation.html.twig', [
]);
}
/**
* @Route("/successsingup", name="sing_success")
*/
public function singSuccess(Request $request, CompteRepository $compteRepository): Response
{
$session = $request->getSession();
$email = $session->get('mail');
$code = $request->get('code');
$codev = $compteRepository->getcode($email);
foreach((array)$codev as $res){
$codecc = $res['code']; }
if ($code == $codecc){
return new JsonResponse([
'result' => "success"
]);
}else{
return new JsonResponse([
'result' => "error"
]);
}
}
/**
* @Route("/inscriptionpre", name="inscription_pre")
*/
public function inscriptionpre(ProfessionRepository $professionRepository): Response
{
return $this->render('login/inscriptionpre.html.twig', [
'fonctions' => $professionRepository->findAll()
]);
}
/**
* @Route("/authentification", name="authentification")
*/
public function authentification(Request $request, CompteRepository $compteRepository): Response
{
$identifiant = $request->get('identifiant');
$pass = md5($request->get('mdp'));
$mdp = $compteRepository->getpass($identifiant);
foreach((array)$mdp as $res){
$pwd = $res['pwd'];
}
if ($pass == $pwd){
$session = $request->getSession();
$session->set('connecter',true);
$userInfos = $compteRepository->getUserByEmail($identifiant);
$userInfo = $userInfos[0];
$session->set('userInfos',$userInfo);
$session->set('userId',$userInfo->getId());
$session->set('prenom',$userInfo->getCmtPrenom());
$session->set('nom',$userInfo->getCmtNom());
$session->set('mailUser',$userInfo->getCmtMail());
$session->set('typeCompte',$userInfo->getTypeCompte()->getId());
if($session->get('urlSignature')){
return new JsonResponse([
'result' => "connecter",
'pathy' => $session->get('urlSignature')
]);
}else{
return new JsonResponse([
'result' => "connecter"
]);
}
}else{
return new JsonResponse([
'result' => "error"
]);
}
}
/**
* @Route("/nouveau", name="new_inscription", methods={"GET","POST"})
*/
public function newinscription(EntityManagerInterface $entityManager, Request $request, CompteRepository $compteRepository): Response
{
$civilite = $request->get('civilite');
$nom = $request->get('nom');
$prenom = $request->get('prenom');
$mail = $request->get('mail');
$mdp = md5($request->get('mdp'));
$fonct = $request->get('fonction');
$fonction = $entityManager->getRepository(Profession::class)->find($fonct);
$matricule = $request->get('matricule');
$code = mt_Rand(100000, 999999);
$session = $request->getSession();
$session->set('mail',$request->get('mail'));
if ($civilite != null && $nom != null && $prenom != null && $mail != null && $mdp != null) {
$compte = $compteRepository->findOneBy([
'cmt_mail' => $mail,
]);
if ($compte === null) {
$compte = (new Compte())
->setCmtCivilite($civilite)
->setCmtNom($nom)
->setCmtPrenom($prenom)
->setCmtProfession($fonction)
->setCmtMatricule($matricule)
->setCmtCode($code)
->setCmtMail($mail)
->setCmtMdp($mdp);
$this->em->persist($compte);
$this->em->flush();
$objet = "Inscription Legalmed";
$message = 'Votre code de confirmation est:' . $code;
$headers = "De: webmaster@example.com" . "\r\n" .
$mailTo = $mail;
mail($mailTo,$objet,$message, $headers);
}
return new JsonResponse([
'result' => "success"
]);
}else{
return new JsonResponse([
'result' => "error"
]);
}
}
/**
* @Route("/logout", name="logouty")
*/
public function deconnecter(Request $request): Response
{
$session = $request->getSession();
$session->remove('connecter');
$session->remove('userInfos');
$session->remove('userId');
$session->remove('prenom');
$session->remove('nom');
$session->remove('mailUser');
$session->remove('urlSignature');
return $this->redirectToRoute('login');
}
/**
* @Route("/basic", name="paiement_bas")
*/
public function paiementbas(): Response
{
return $this->render('login/paiementbas.html.twig', [
]);
}
/**
* @Route("/premium", name="paiement_pre")
*/
public function paiementpre(): Response
{
return $this->render('login/paiementpre.html.twig', [
]);
}
}