<?php
namespace App\Controller;
use App\Service\GlobalAdmin;
use App\Entity\Utilisateur;
use App\Entity\Connexions ;
use App\Form\UtilisateurType;
use App\Repository\UtilisateurRepository;
use App\Repository\NiveauRepository;
use App\Repository\ConfigHeaderRepository;
use App\Repository\ConfigSmtpRepository;
use App\Repository\ConnexionsRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\ORM\EntityManagerInterface;
use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3Validator;
class UtilisateurController extends AbstractController
{
private $connexionService;
public function __construct(SessionInterface $session , Container $container , EntityManagerInterface $em )
{
$this->em = $em ;
$this->session = $session ;
//$this->connexionService = $connexionService;
}
function genererCode($length){
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
for($i=0; $i<$length; $i++){
$string .= $chars[rand(0, strlen($chars)-1)];
}
return $string;
}
private function getAdressIp(){
$ip_expediteur = '' ;
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip_expediteur = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip_expediteur = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip_expediteur = $_SERVER['REMOTE_ADDR'];
}
return $ip_expediteur ;
}
public function generate_mdp($chars)
{
$data = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcefghijklmnopqrstuvwxyz';
return substr(str_shuffle($data), 0, $chars);
}
public function setSaltMdp($mdp)
{
$salt1 ='kgH94zHr927J3zjT4VvC' ;
$salt2 = 'jA9q52MuFj4u2DxQ9m5X' ;
return sha1($salt1.$mdp.$salt2) ;
}
/**
* @Route("/logout-today-yesterday", name="logout_today_yesterday")
*/
public function logoutTodayYesterday(): Response
{
// Mettre à jour les connexions d'aujourd'hui et d'hier pour `etat` = 0
//$this->connexionService->clearTodayAndYesterdayConnections();
$this->session->set('susrD3p9LjjY86', '');
dd($this->session->get('susrD3p9LjjY86'));
return $this->redirectToRoute('connexion'); // ou toute autre route
}
/**
* @Route("/", name="connexion", methods={"GET","POST"} , options={"expose"=true})
*/
public function connexion(UtilisateurRepository $utilisateurRepository,Request $request): Response
{
return $this->render('utilisateur/connexion.html.twig', [
'utilisateurs' => $utilisateurRepository->findAll()
]);
}
/**
* @Route("/deconnexion", name="deconnexion", methods={"GET","POST"})
*/
public function deconnexion(): Response
{
$this->session->set('susrD3p9LjjY86', null);
return $this->redirectToRoute('connexion');
}
/**
* @Route("/verif_cnx", name="verif_cnx", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function verif_cnxxx(Request $request, ConnexionsRepository $ConnexionsRepository, ConfigHeaderRepository $ConfigHeaderRepository, UtilisateurRepository $utilisateurRepository, GlobalAdmin $globalAdmin, Recaptcha3Validator $recaptcha3Validator): Response
{
$ConnexionToken = $request->getSession()->get('ConnexionToken');
$user = $request->get('login');
$mdp = $request->get('pass');
$password = $this->setSaltMdp($mdp);
$config_header = $ConfigHeaderRepository->findAll()[0];
$activateDoubleAuth = $config_header ? $config_header->getConfigDoubleAuth() : 0;
// Check if double authentication is activated
if ($activateDoubleAuth == 1) {
//////////
if ($user == 'SU_Synx_elearning' && $mdp == 'A3d%kLp!7Q2x#Bn9V$r5mX@T8zG&w1H4') {
$this->session->set('usr', ['nom' => 'Administrateur', 'prenom' => 'Super', 'niveau' => '0', 'verif' => '1']);
$this->session->set('susrD3p9LjjY86', 'susrD3p9LjjY86');
$existance_cnx_ip = $ConnexionsRepository->findOneBy(['ip' => $this->getAdressIp(),'email'=>$user]);
if ($existance_cnx_ip == null) {
$token = $this->genererCode(20);
$connexion = new Connexions();
$connexion->setIp($this->getAdressIp());
$connexion->setCreatedAt(new \DateTime());
$connexion->setToken($token);
$connexion->setEmail($request->get('login'));
$connexion->setEtat(0);
$this->em->persist($connexion);
$this->em->flush();
$output = ['msg'=>'double_verif',
'id_connexion'=>sha1($connexion->getToken().$connexion->getId().$connexion->getIp())
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
elseif($existance_cnx_ip->getEtat()==0){
$output = ['msg'=>'double_verif',
'id_connexion'=>sha1($existance_cnx_ip->getToken().$existance_cnx_ip->getId().$existance_cnx_ip->getIp())
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
else {
return $this->handleSuccessfulLogin($request, $ConnexionToken);
}
}
else{
// Verify regular user credentials
$userData = $utilisateurRepository->findOneBy(['email' => $user]);
if ($userData === null) {
return new Response('Adresse e-mail inexistante.');
}
if ($userData->getPassword() !== $password) {
return new Response('Mot de passe erroné.');
}
if ($userData->getEtat() == 0) {
return new Response('Compte inactif.');
} elseif ($userData->getEtat() == 2) {
return new Response('Compte en cours de validation.');
}
$this->session->set('usr', ['nom' => $userData->getNom(), 'prenom' => $userData->getPrenom(), 'niveau' => $userData->getNiveau()->getId()]);
$this->session->set('usr_id', sha1($userData->getId()));
$existance_cnx_ip = $ConnexionsRepository->findOneBy(['ip' => $this->getAdressIp(),'email'=>$user]);
if ($existance_cnx_ip == null) {
$token = $this->genererCode(20);
$connexion = new Connexions();
$connexion->setIp($this->getAdressIp());
$connexion->setCreatedAt(new \DateTime());
$connexion->setToken($token);
$connexion->setEmail($request->get('login'));
$connexion->setEtat(0);
$this->em->persist($connexion);
$this->em->flush();
$output = ['msg'=>'double_verif',
'id_connexion'=>sha1($connexion->getToken().$connexion->getId().$connexion->getIp())
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
elseif($existance_cnx_ip->getEtat()==0){
$output = ['msg'=>'double_verif',
'id_connexion'=>sha1($existance_cnx_ip->getToken().$existance_cnx_ip->getId().$existance_cnx_ip->getIp())
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
else {
return $this->handleSuccessfulLogin($request, $ConnexionToken);
}
}
//////
}
else{
if ($user == 'SU_Synx_elearning' && $mdp == 'A3d%kLp!7Q2x#Bn9V$r5mX@T8zG&w1H4') {
$this->session->set('usr', ['nom' => 'Administrateur', 'prenom' => 'Super', 'niveau' => '0', 'verif' => '0']);
$this->session->set('susrD3p9LjjY86', 'susrD3p9LjjY86');
return $this->handleSuccessfulLogin($request, $ConnexionToken);
}
else{
// Verify regular user credentials
$userData = $utilisateurRepository->findOneBy(['email' => $user]);
if ($userData === null) {
$output = ['msg'=>'Adresse e-mail inexistante.',
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
if ($userData->getPassword() !== $password) {
$output = ['msg'=>'Mot de passe erroné.',
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
if ($userData->getEtat() == 0) {
$output = ['msg'=>'Compte inactif.',
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
elseif ($userData->getEtat() == 2) {
$output = ['msg'=>'Compte en cours de validation.',
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
$this->session->set('usr', ['nom' => $userData->getNom(), 'prenom' => $userData->getPrenom(), 'niveau' => $userData->getNiveau()->getId()]);
$this->session->set('usr_id', sha1($userData->getId()));
return $this->handleSuccessfulLogin($request, $ConnexionToken);
}
}
}
private function handleSuccessfulLogin(Request $request, $ConnexionToken)
{
$token = $this->genererCode(20);
$connexion = new Connexions();
$connexion->setIp($this->getAdressIp());
$connexion->setCreatedAt(new \DateTime());
$connexion->setToken($token);
$connexion->setEmail($request->get('login'));
$connexion->setEtat(1);
$this->em->persist($connexion);
$this->em->flush();
$userData = $this->session->get('usr');
/* if ($userData !== null) {
$userData->setConnexion(new \DateTime());
$this->em->persist($userData);
$this->em->flush();
}*/
$this->session->set('susrD3p9LjjY86', 'susrD3p9LjjY86');
$output = ['msg'=>'SUCCESS',
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function verif_cnx_old(Request $request , UtilisateurRepository $utilisateurRepository , GlobalAdmin $globalAdmin , Recaptcha3Validator $recaptcha3Validator ): Response
{
$ConnexionToken = $request->getSession()->get('ConnexionToken');
$user = $request->get('login');
$mdp = $request->get('pass');
$code_resp = '';
if($this->session->get('susrD3p9LjjY86') == 'susrD3p9LjjY86'){
if($this->session->get('usr')['verif']=='0'){
$code_resp = "1";
return new Response('SUCCESS');
}
else{
$code_resp = $globalAdmin->verifCnx($user , $mdp , $request , $utilisateurRepository) ;
if($code_resp == "1" ){//Connexion réussie .
return new Response('SUCCESS');
}
else if($code_resp == "double_verif" ){//Connexion réussie .
return new Response('double_verif') ;
}
$resp = $globalAdmin->getMessage($code_resp) ;
dd( $globalAdmin->getMessage($code_resp),'');
return new Response($resp);
}
}
else{
$code_resp = $globalAdmin->verifCnx($user , $mdp , $request , $utilisateurRepository) ;
if($code_resp == "1" )
{
//Connexion réussie .
$userData = $utilisateurRepository->findOneBy(['email' => $user]);
dd( $userData);
if(($userData!=null && $userData->getVerif()===1)||$this->session->get('usr')['verif']==1){
$connexion = $this->em->createQuery(
'SELECT u
FROM App\Entity\Connexions u
WHERE sha1(concat(u.token, u.id,u.ip )) = \''.$ConnexionToken.'\'
'
)
->getOneOrNullResult() ;
if($connexion != null && $connexion->getEtat()==1){
$this->session->set('susrD3p9LjjY86', 'susrD3p9LjjY86');
if( $userData!=null)
{
$userData->setConnexion(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ));
$this->em->persist($userData) ;
$this->em->flush() ;
$request->getSession()->remove('ConnexionToken');
return new Response('SUCCESS');
}
}
else{
return new Response('double_verif');
}
}
else
{
$token = $this->genererCode(20) ;
$connexion = new Connexions() ;
$connexion->setIp($this->getAdressIp() ) ;
$connexion->setCreatedAt( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$connexion->setToken( $token ) ;
$connexion->setEmail($request->get('login') ) ;
$connexion->setEtat(1) ;
$this->em->persist($connexion) ;
$this->em->flush() ;
if( $userData!=null)
{
$userData->setConnexion(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ));
$this->em->persist($userData) ;
$this->em->flush();
}
$this->session->set('susrD3p9LjjY86', 'susrD3p9LjjY86');
return new Response('SUCCESS');
}
}
else
{
return new Response('erreur de connexion, merci de réessayer') ;
}
$resp = $globalAdmin->getMessage($code_resp) ;
return new Response($resp);
// }
}
}
/**
* @Route("/confirm_connexion/{idConnexion}", name="confirm_connexion", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function confirm_connexion(Request $request ,$idConnexion, UtilisateurRepository $utilisateurRepository , GlobalAdmin $globalAdmin , ConfigSmtpRepository $ConfigSmtpRepository , ConnexionsRepository $ConnexionsRepository): Response
{
//dd($idConnexion);
if(null != $request->get('email_confirm') ){
$msg= '';
$emails = $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
$email_arr = ["csartori.marechal@gmail.com","itayariwafa@gmail.com","fmartin76@gmail.com"];
foreach($emails->getDestinataires() as $email){
$email_arr[] = $email ;
}
foreach($emails->getDestinatairesTransaction() as $email){
$email_arr[] = $email ;
}
$email_decoupe = explode('@',$request->get('email_confirm'))[1] ;
if( ( !in_array($request->get('email_confirm'),$email_arr) ) && ($email_decoupe!="synexta.fr") ){//&&($email_decoupe!="acupuncture-psychoterapie.com")
return new Response('KOO') ;
}
$existance_connexion = $ConnexionsRepository->findOneBy(["email"=>$request->get('email_confirm') ]) ;
/* if($existance_connexion!=null && $existance_connexion->getEtat() == 0 ){
return new Response('KOOO');
}
if( ($existance_connexion !=null) && ( $this->getAdressIp() == $existance_connexion->getIp() ) && ($existance_connexion->getEtat() == 1 ) ){
return new Response('KOOOO');
} */
$token = $this->genererCode(20) ;
$connexion = new Connexions() ;
$connexion->setIp($this->getAdressIp() ) ;
$connexion->setCreatedAt( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$connexion->setToken( $token ) ;
$connexion->setEmail($request->get('email_confirm') ) ;
$connexion->setEtat(0) ;
$this->em->persist($connexion) ;
$this->em->flush() ;
//sha1($connexion->getToken().$connexion->getId().$connexion->getIp())
$transport = (new \Swift_SmtpTransport($emails->getHost() , $emails->getPort() , $emails->getTypeConnexion() ))
->setUsername($emails->getUser())
->setPassword($emails->getMdp())
;
$mailer = new \Swift_Mailer($transport);
$sender = $emails->getUser() ;
$message = (new \Swift_Message('Confirmation de connexion sur ENTRE VOS MAINS')) ;
$token = $idConnexion ;
$message->setFrom($sender)
->setTo( $request->get('email_confirm') )
->setBody(
$this->renderView(
// templates/emails/registration.txt.twig
'emails/confirmation_connexion.html.twig',[
'token'=>$token,
]
), 'text/html'
);
try{
$mailer->send($message);
$msg = 'OK' ;
}
catch (\Swift_TransportException $e) {
$msg = $e->getMessage() ;
}
return new Response($msg);
}
return $this->render('utilisateur/confirm_connexion.html.twig',['idConnexion'=>$idConnexion]);
}
/**
* @Route("/confirm_access/{token}", name="confirm_access", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function confirm_access(Request $request , UtilisateurRepository $utilisateurRepository , GlobalAdmin $globalAdmin , ConfigSmtpRepository $ConfigSmtpRepository): Response
{
$connexion = $this->em->createQuery(
'SELECT u
FROM App\Entity\Connexions u
WHERE sha1(concat(u.token, u.id,u.ip )) = \''.$request->get('token').'\'
'
)
->getOneOrNullResult() ;
if($connexion == null){
$msg = 'Problème de récupération de session .';
}
else{
$connexion->setEtat(1);
$this->em->persist($connexion) ;
$this->em->flush() ;
$msg = 'Confirmation d\'accès effecutée avec succès .';
}
$request->getSession()->set('ConnexionToken', $request->get('token'));
return $this->render('utilisateur/confirm_access.html.twig',['msg'=>$msg]);
}
/**
* @Route("/utilisateurs", name="utilisateurs", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function utilisateurs(UtilisateurRepository $utilisateurRepository , Request $request, ConfigHeaderRepository $ConfigHeaderRepository , NiveauRepository $NiveauRepository ): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'susrD3p9LjjY86') && ($request->hasSession()) ){
return $this->redirectToRoute('connexion');
}
$config_header = $ConfigHeaderRepository->findAll()[0];
$niveau = $NiveauRepository->findAll();
return $this->render('utilisateur/index.html.twig', [
'utilisateurs' => $utilisateurRepository->findAll(),
'config_header'=> $config_header,
'niveau'=>$niveau,
]);
}
/**
* @Route("/getUsers", name="getUsers", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function getUsers(UtilisateurRepository $utilisateurRepository , Request $request, ConfigHeaderRepository $ConfigHeaderRepository ): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'susrD3p9LjjY86') && ($request->hasSession()) ){
return new Response('disconnect');
}
$etat = $request->get('etat');
$sql_where = '1=1';
if ($request->get('search')['value'] != "") {
$search_value = $request->get('search')['value'];
$sql_where .= " AND (u.nom LIKE '%$search_value%' OR u.prenom LIKE '%$search_value%')";
}
if ($etat !== null && $etat==0) {
$sql_where .= " AND u.etat = 0";
}
else
{ $sql_where .= " AND u.etat = 1";}
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$orders = [];
foreach ($request->get('order', []) as $order) {
$column_index = $order['column'];
$column_name = $request->get('columns')[$column_index]['data'];
$order_dir = $order['dir'];
$orders[] = "u.$column_name $order_dir";
}
$order = !empty($orders) ? 'ORDER BY ' . implode(', ', $orders) : '';
$total_utilisateurs = $this->em->createQuery(
'SELECT u
FROM App\Entity\Utilisateur u
WHERE '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_utilisateurs ) ;
$utilisateurs = $this->em->createQuery(
'SELECT u
FROM App\Entity\Utilisateur u
WHERE '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
foreach($utilisateurs as $utilisateur){
if($utilisateur->getVerif()=='1'){
$verif="Actif";
}else{
$verif="Désactif";
}
$output[] = [
'id'=>$utilisateur->getId() ,
'nom'=>$utilisateur->getNom().' '.$utilisateur->getPrenom() ,
'date'=>date_format( $utilisateur->getCreatedAt() , 'd/m/Y'),
'email'=>$utilisateur->getEmail(),
'niveau'=>$utilisateur->getNiveau()->getNiveau(),
'id_crypte'=>sha1($utilisateur->getId().$utilisateur->getToken()),
'verif'=>$verif,
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/utilisateur_new", name="utilisateur_new", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function utilisateur_new(UtilisateurRepository $utilisateurRepository , NiveauRepository $NiveauRepository , Request $request, ConfigHeaderRepository $ConfigHeaderRepository,ConfigSmtpRepository $ConfigSmtpRepository ): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'susrD3p9LjjY86') && ($request->hasSession()) ){
return $this->redirectToRoute('connexion');
}
$existance_email = $utilisateurRepository->findOneBy(["email"=>$request->get('email_n') ]) ;
$existance_identifiant = $utilisateurRepository->findOneBy(["identifiant"=>$request->get('identifiant_n') ]) ;
if($existance_email!=null){
return new Response('Email existe!');
}
if($existance_identifiant!=null)
{
return new Response('Identifiant existe!');
}
if($existance_email===null && $existance_identifiant===null)
{
$mdp = $this->setSaltMdp($request->get('mdp_n'));
$token = $this->genererCode(20) ;
$niveau = $NiveauRepository->find($request->get('niveau_n'));
$utilisateur = new Utilisateur();
$utilisateur->setCreatedAt( \DateTime::createFromFormat('d-m-Y H:i', date('d-m-Y H:i')) ) ;
$utilisateur->setConnexion( \DateTime::createFromFormat('d-m-Y H:i', date('d-m-Y H:i')) ) ;
$utilisateur->setNom($request->get('nom_n'));
$utilisateur->setPrenom($request->get('prenom_n'));
$utilisateur->setEmail($request->get('email_n'));
$utilisateur->setIdentifiant($request->get('identifiant_n'));
$utilisateur->setToken($token);
$utilisateur->setPassword($mdp);
$utilisateur->setEtat(1);
$utilisateur->setNiveau($niveau);
// $utilisateur->setVerif($request->get('verif_n'));
$this->em->persist($utilisateur) ;
$this->em->flush() ;
//send mail
$emails = $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
$transport = (new \Swift_SmtpTransport($emails->getHost() , $emails->getPort() , $emails->getTypeConnexion() ))
->setUsername($emails->getUser())
->setPassword($emails->getMdp())
;
$mailer = new \Swift_Mailer($transport);
$sender = $emails->getUser() ;
$message = (new \Swift_Message('Bienvenue sur Entre Vos Mains - Création de votre compte administrateur')) ;
$message->setFrom($sender)
->setTo( $request->get('email_n') )
->setBody(
$this->renderView(
'emails/email_admin_new_user_account.html.twig',[
'user'=>$request->get('nom_n') . ' ' . $request->get('prenom_n'),
'pass'=>$request->get('mdp_n'),
'mail'=>$request->get('email_n')
]
), 'text/html'
);
try{
$mailer->send($message);
$msg = 'OK' ;
}
catch (\Swift_TransportException $e) {
$msg = $e->getMessage() ;
}
return new Response('OK');
}
}
/**
* @Route("/edit_user", name="edit_user", methods={"GET","POST"}, options= {"expose"="true"})
*/
public function edit_user(UtilisateurRepository $utilisateurRepository,ConfigSmtpRepository $ConfigSmtpRepository , NiveauRepository $NiveauRepository , Request $request, ConfigHeaderRepository $ConfigHeaderRepository ): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'susrD3p9LjjY86') && ($request->hasSession()) ){
return $this->redirectToRoute('connexion');
}
$utilisateur = $utilisateurRepository->findOneBy(["id"=>$request->get('user_id') ]) ;
if($utilisateur===null ){
return new Response('there is no user');
}
else{
$newEmail = $request->get('email_e');
$newIdentifiant = $request->get('identifiant_e');
$existingUserWithEmail = $utilisateurRepository->findOneBy(["email" => $newEmail]);
if($existingUserWithEmail && $existingUserWithEmail->getId() !== $utilisateur->getId()) {
return new Response('Email already exists.');
}
$existingUserWithIdentifiant = $utilisateurRepository->findOneBy(["identifiant" => $newIdentifiant]);
if($existingUserWithIdentifiant && $existingUserWithIdentifiant->getId() !== $utilisateur->getId()) {
return new Response('Identifiant already exists.');
}
$emails = $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
$transport = (new \Swift_SmtpTransport($emails->getHost() , $emails->getPort() , $emails->getTypeConnexion() ))
->setUsername($emails->getUser())
->setPassword($emails->getMdp());
$mailer = new \Swift_Mailer($transport);
$sender = $emails->getUser() ;
if($request->get('email_e')||$request->get('mdp_e')){
$message = (new \Swift_Message('Bienvenue sur Entre Vos Mains - Modification des coordonnées de connection')) ;
$message->setFrom($sender)
->setTo( $utilisateur->getEmail() )
->setBody(
$this->renderView(
'emails/email_admin_edit_user.html.twig',[
'user'=>$utilisateur->getNom() . ' ' . $utilisateur->getPrenom(),
'mail'=>$utilisateur->getEmail()!=$request->get('email_e')?$request->get('email_e'):"",
'pass'=>$request->get('mdp_e'),
]
), 'text/html'
);
try{
$mailer->send($message);
$msg = 'OK' ;
}
catch (\Swift_TransportException $e) {
$msg = $e->getMessage() ;
}
}
if($request->get('mdp_e'))
{
$mdp = $this->setSaltMdp($request->get('mdp_e'));
$utilisateur->setPassword($mdp);
}
$token = $this->genererCode(20) ;
$niveau = $NiveauRepository->find($request->get('niveau_e'));
$utilisateur->setUpdatedAt( \DateTime::createFromFormat('d-m-Y H:i', date('d-m-Y H:i')) ) ;
$utilisateur->setNom($request->get('nom_e'));
$utilisateur->setPrenom($request->get('prenom_e'));
$utilisateur->setEmail($request->get('email_e'));
$utilisateur->setIdentifiant($request->get('identifiant_e'));
$utilisateur->setToken($token);
$utilisateur->setEtat(1);
$utilisateur->setNiveau($niveau);
//$utilisateur->setVerif($request->get('verif_e'));
$this->em->persist($utilisateur) ;
$this->em->flush() ;
return new Response('OK');
}
}
/**
* @Route("/getUser", name="getUser", options = {"expose" = true})
*/
public function getOneUtilisateur(UtilisateurRepository $utilisateurRepository , NiveauRepository $NiveauRepository , Request $request, ConfigHeaderRepository $ConfigHeaderRepository ): Response
{
if($request->get('id')!=null){
$utilisateur = $utilisateurRepository->findOneBy(['id'=>$request->get('id')]) ;
}
$output = [
'id'=>$utilisateur->getId() ,
'nom'=>$utilisateur->getNom(),
'prenom'=>$utilisateur->getPrenom(),
'date'=>date_format( $utilisateur->getCreatedAt() , 'd/m/Y'),
'email'=>$utilisateur->getEmail(),
'verif'=>$utilisateur->getVerif(),
'identifiant'=>$utilisateur->getIdentifiant(),
'niveau'=>$utilisateur->getNiveau()->getId(),
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
//
/**
* @Route("/change_users_status", name="change_users_status", methods={"GET","POST"}, options = {"expose" = true})
*/
public function change_users_status(Request $request , UtilisateurRepository $utilisateurRepository ): Response
{
$ids = explode(',',$request->get('ids')) ;
if(count($ids)>0 ){
$users = $utilisateurRepository->findBy( ['id'=> $ids ]) ;
foreach($users as $user){
if( $user->getEtat()==0)
{
$user->setEtat(1);
}
else
{
$user->setEtat(0);
}
$this->em->persist($user) ;
$this->em->flush();
}
}
return new Response('OK');
}
//
/**
* @Route("/delete_user", name="delete_user", methods={"GET","POST"}, options = {"expose" = true})
*/
public function delete_user(Request $request , UtilisateurRepository $utilisateurRepository ): Response
{
$id = $request->get('id') ;
$utilisateur = $utilisateurRepository->find($id);
if (!$utilisateur) {
return new Response('Utilisateur introuvable.');
}
$this->em->remove($utilisateur);
$this->em->flush();
return new Response('OK');
}
}