Deprecated : Constant E_STRICT is deprecated in /home/normanv/www/annuairepro/vendor/symfony/error-handler/ErrorHandler.php on line 58
Deprecated : Constant E_STRICT is deprecated in /home/normanv/www/annuairepro/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler
<?php
namespace App\Controller ;
use App\Classe\MailBrevo ;
use App\Entity\PasswordUpdate ;
use App\Entity\User ;
use App\Form\AccountType ;
use App\Form\EmailResetType ;
use App\Form\PasswordResetType ;
use App\Form\PasswordUpdateType ;
use App\Form\RegistrationType ;
use App\Repository\UserRepository ;
use Doctrine\ORM\EntityManagerInterface ;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController ;
use Symfony\Component\HttpFoundation\Request ;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface ;
use Symfony\Component\Routing\Annotation\Route ;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface ;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils ;
use Symfony\Component\HttpFoundation\Response ;
class SecurityController extends AbstractController
{
private $entityManager ;
public function __construct ( EntityManagerInterface $entityManager )
{
$this -> entityManager = $entityManager ;
}
/**
* @Route("/inscription", name="security_registration")
*/
public function registration ( Request $request , UserPasswordHasherInterface $encoder )
{
$user = new User ();
$form = $this -> createForm ( RegistrationType ::class, $user );
$form -> handleRequest ( $request );
if($form -> isSubmitted () && $form -> isValid ()){
$hash = $encoder -> hashPassword ( $user , $user -> getPassword ());
$user -> setPassword ( $hash );
$user -> setCreatedAt (new \DateTime ());
$this -> entityManager -> persist ( $user );
$this -> entityManager -> flush ();
$this -> addFlash ( 'souscription' , '' );
return $this -> redirectToRoute ( 'security_login' );
}
return $this -> render ( 'security/registration.html.twig' , [
'form' => $form -> createView (),
]);
}
/**
* @Route("/", name="security_login")
*/
public function login ( AuthenticationUtils $utils )
{
$error = $utils -> getLastAuthenticationError ();
$username = $utils -> getLastUsername ();
return $this -> render ( 'security/login.html.twig' , [
'hasError' => $error !== null ,
'username' => $username ,
]);
}
/**
* @Route("/deconnexion ", name="security_logout")
*/
public function logout ()
{
}
/**
* Permet de modifier le mail utilisateur
* @Route("/account/profile ", name="account_profile")
*/
public function profile ( Request $request )
{
$user = $this -> getUser ();
$form = $this -> createForm ( AccountType ::class, $user );
$form -> handleRequest ( $request );
if($form -> isSubmitted () && $form -> isValid ()){
$this -> entityManager -> persist ( $user );
$this -> entityManager -> flush ();
$this -> addFlash ( 'modif-mail' , "" );
return $this -> redirectToRoute ( 'dashboard_user' );
}
return $this -> render ( 'recensement/profile.html.twig' , [
'form' => $form -> createView ()
]);
}
/**
* Permet de modifier le mot de passe utilisateur
* @Route("/account/password-update", name="account_update_password")
*/
public function updatePassword ( Request $request , UserPasswordEncoderInterface $encoder )
{
$passwordUpdate = new PasswordUpdate ();
$user = $this -> getUser ();
$form = $this -> createForm ( PasswordUpdateType ::class, $passwordUpdate );
$form -> handleRequest ( $request );
if($form -> isSubmitted () && $form -> isValid ()){
//1. Vérifier que le oldPAssword du formulaire soit le même que le password de l’
if(! password_verify ( $passwordUpdate -> getOldPassword (), $user -> getPassword ())){
// Gérer l'erreur
}else{
// Sauvegarder le nouveau mot de passe
$newPassword = $passwordUpdate -> getNewPassword ();
$password = $encoder -> encodePassword ( $user , $newPassword );
$user -> setPassword ( $password );
$this -> entityManager -> persist ( $user );
$this -> entityManager -> flush ();
$this -> addFlash ( 'modif-password' , "" );
}
return $this -> redirectToRoute ( 'dashboard_user' );
}
return $this -> render ( 'recensement/password.html.twig' , [
'form' => $form -> createView ()
]);
}
/**
* Permet d’envoyer un mail avec un token à un utilisateur qui a oublié son mot de passe
* @Route("/account/password-forget", name="account_forget_password")
*/
public function forgetPassword ( UserRepository $repoUser , Request $request )
{
$form = $this -> createForm ( EmailResetType ::class);
$form -> handleRequest ( $request );
if ($form -> isSubmitted () && $form -> isValid ()) {
$user = $repoUser -> findOneByEmail ( $form -> getData ()[ 'email' ]);
if ($user !== null ) {
$token = md5 ( uniqid ());
$user -> setResetPassword ( $token )
->setResetPasswordDate (new \DateTime ());
$this -> entityManager -> persist ( $user );
$this -> entityManager -> flush ();
$mail = $user -> getEmail ();
$envoi_mail = new MailBrevo ();
$content = "
<h3>Réinitialisation du mot de passe !</h3>
<p>Bonjour,</p>
<p>Vous avez oublié votre mot de passe pour vous connecter à la base de recensement des professionnels de l'image en Normandie.</p>
<p>
Le lien suivant vous permettra de générer un nouveau mot de passe :
<a href='https://annuaire-pro.normandieimages.net/account/password-reset/$token '>générer un nouveau mot de passe</a>
</p>
<p><strong>Attention celui-ci n’est actif que durant 10mn !</strong></p>
<p>
Cordialement,<br>
<img src='https://www.inscriptionsfondsaide.normandieimages.fr/img/ni-logo-72.jpg' alt='Normandie Images' width='35'><br>
ATRIUM - 115 boulevard de l'Europe<br>
76100 ROUEN<br>
<a href='https://www.normandieimages.fr'>www.normandieimages.fr</a>
</p>
<p></p>";
$envoi_mail -> send ( "stephanehortet@normandieimages.fr" , "Normandie Images - Stéphane Hortet" , $mail , $mail , "Réinitialisation du mot de passe - recensement des professionnels de l'image en Normandie" , $content );
return $this -> render ( 'security/reset-password-confirmation.html.twig' );
}else{
$this -> addFlash ( 'erreur-mail' , "" );
}
}
return $this -> render ( 'security/reset-password.html.twig' , array(
'form' => $form -> createView (),
));
}
/**
* Permet de se connecter via un lien avec token reçu par mail
* @Route("/account/password-reset/{token}", name="account_reset_password")
*/
public function resetPasswordToken ( $token , UserRepository $repoUser , Request $request , UserPasswordEncoderInterface $encoder )
{
if ($token !== null ) {
$user = $repoUser -> findOneByResetPassword ( $token );
$token_date = $user -> getResetPasswordDate ();
$date_now = new \DateTime ();
$interval = $token_date -> diff ( $date_now );
if ($user !== null && $interval -> i <= 10 ) {
$form = $this -> createForm ( PasswordResetType ::class, $user );
$form -> handleRequest ( $request );
if ($form -> isSubmitted () && $form -> isValid ()) {
$hash = $encoder -> encodePassword ( $user , $user -> getPassword ());
$user -> setPassword ( $hash );
$this -> entityManager -> persist ( $user );
$this -> entityManager -> flush ();
$this -> addFlash ( 'reinitialisation' , '' );
return $this -> redirectToRoute ( 'security_login' );
}
return $this -> render ( 'security/reset-password-token.html.twig' , array(
'form' => $form -> createView (),
));
}else{
return $this -> render ( 'security/reset-password-token-expired.html.twig' );
}
}
}
/**
* @Route("/mentions_legales", name="mentions_legales")
*/
public function mentions ()
{
return $this -> render ( 'security/mentions_legales.html.twig' );
}
}