<?php
namespace App\Controller\Users\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\HttpFoundation\Request;
use App\Service\Servicetext\GeneralServicetext;
use App\Entity\Users\User\Newsletter;
use App\Entity\Users\User\NewsletterType;
use App\Entity\Users\User\Imgslide;
use App\Entity\Produit\Service\Service;
use App\Entity\Users\User\User;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use App\Entity\Produit\Produit\Categorie;
use App\Service\Email\Singleemail;
class SecurityController extends AbstractController
{
private $params;
private $_servicemail;
public function __construct(ParameterBagInterface $params, Singleemail $servicemail)
{
$this->params = $params;
$this->_servicemail = $servicemail;
}
public function login(Request $request)
{
$session = $request->getSession();
// Si le visiteur est déjà identifié, on le redirige vers l'accueil
if($this->isGranted('IS_AUTHENTICATED_REMEMBERED')){
return $this->redirect($this->generateUrl('users_user_acces_plateforme'));
}
// On vérifie s'il y a des erreurs d'une précédente soumission du formulaire
$error = '';
return $this->render('Theme/Users/User/Security/login.html.twig',
array('last_username' => '','error'=> $error));
}
public function accueilsite(GeneralServicetext $service, $add)
{
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')){ //dès qu'un utilisateur se connecte il est redirigé vers le path / qui exécute directement ce controlleur.
$dureelastvisite = round((time() - $user->getDatebeg())/60);
if($dureelastvisite >= 3) //s'il ya plus de 3 minutes que utilisateur n'a pas actualisé sa sesion
{
$user->setDatebeg(time());
$em->flush();
}
}
$liste_slide = $em->getRepository(Imgslide::class)
->myFindAll();
$slideaccueil = $service->selectEntity($liste_slide);
$article_presentation = $em->getRepository(Service::class)
->myFindAllPagineType('presentation',1,5);
$liste_categorie = $em->getRepository(Categorie::class)
->myFindAll();
foreach($liste_categorie as $cat)
{
$cat->setEm($em);
}
return $this->render('Theme/Users/User/Security/accueilsite.html.twig',
array('liste_slide'=>$liste_slide,'add'=>$add,'slideaccueil'=>$slideaccueil,
'article_presentation'=>$article_presentation,'liste_categorie'=>$liste_categorie));
}
public function resetpassword(GeneralServicetext $service, $etape)
{
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
if($etape == 1)
{
if(isset($_POST['username']))
{
$repository = $em->getRepository(User::class);
$user = $repository->findOneBy(array('username'=>$_POST['username']));
if($user != null)
{
$code = $user->getDatebeg();
if($service->email($user->getUsername()))
{
$siteweb = $this->params->get('siteweb');
$sitename = $this->params->get('sitename');
$emailadmin = $this->params->get('emailadmin');
$response = $this->_servicemail->sendNotifEmail(
$user->name(30), //Nom du destinataire
$user->getUsername(), //Email Destinataire
$user->name(30).', Vous avez demandé la réinitialisation du mot de passe de votre compte '.$sitename, //Objet de l'email
$user->name(30).', Vous avez demandé la réinitialisation du mot de passe de votre compte '.$sitename, //Grand Titre de l'email
'Le code est: <strong style="font-size: 25px;">'.$code.'</strong></br></br> Si vous n\'avez pas demandé cette action, Aucune action n\'est requise de votre part.', //Contenu de l'email
$siteweb.'/login' //Lien à suivre
);
$type = 1;
}else{
$type = 2;
}
return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
array('type' =>$type,'etape'=> $etape,'user'=>$user));
}else{
echo 0;
exit;
}
}else{
echo 0;
exit;
}
}else if($etape == 2)
{
if(isset($_POST['code']) and isset($_POST['id']))
{
$repository = $em->getRepository(User::class);
$user = $repository->find($_POST['id']);
if($user != null and $user->getDatebeg() == trim($_POST['code']))
{
$session->set('reset_password', 1);
return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
array('etape'=> $etape,'user'=>$user));
}else{
echo 0;
exit;
}
}else{
echo 0;
exit;
}
}else if($etape == 3)
{
if(isset($_POST['password']) and isset($_POST['id']))
{
$repository = $em->getRepository(User::class);
$user = $repository->find($_POST['id']);
$reset_password = $session->get('reset_password');
if($user != null and $reset_password == 1)
{
//sécurisation du mot de passe utilisateur
$passuser = $_POST['password'];
/*
$salt = substr(crypt($passuser,''), 0, 16);
$user->setSalt($salt);
$newpassword = $service->encrypt($passuser,$salt);
*/
$user->setPassword($passuser);
$em->flush();
return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
array('etape'=> $etape,'user'=>$user));
}else{
echo 0;
exit;
}
}else{
echo 0;
exit;
}
}
echo 0;
exit;
}
}