diff --git a/src/Command/CleanRegistrationCommand.php b/src/Command/CleanRegistrationCommand.php index 4ffa830..91773a2 100644 --- a/src/Command/CleanRegistrationCommand.php +++ b/src/Command/CleanRegistrationCommand.php @@ -1,16 +1,13 @@ container = $container; @@ -39,41 +36,49 @@ class CleanRegistrationCommand extends Command protected function execute(InputInterface $input, OutputInterface $output) { - $this->output = $output; - $this->filesystem = new Filesystem(); - $this->rootlog = $this->container->get('kernel')->getLogDir()."/"; + $this->output = $output; + $this->filesystem = new Filesystem(); + $this->rootlog = $this->container->get('kernel')->getLogDir().'/'; $this->writelnred(''); - $this->writelnred('== app:CleanRegistration'); + $this->writelnred('== app:CleanRegistration'); $this->writelnred('=========================================================================================================='); - $now=new \DateTime('now'); + $now = new \DateTime('now'); $datas = $this->em ->createQueryBuilder() ->select('table') - ->from('App\Entity\Registration','table') + ->from('App\Entity\Registration', 'table') ->where('table.keyexpire<:now') - ->setParameter("now",$now->format("Y-m-d H:i:s")) + ->setParameter('now', $now->format('Y-m-d H:i:s')) ->getQuery() ->getResult(); - foreach($datas as $data) { - $this->writeln('Inscription supprimée = '.$data->getkeyexpire()->format("Y-m-d H:i:s")." >> ".$data->getUsername()); + foreach ($datas as $data) { + $this->writeln('Inscription supprimée = '.$data->getkeyexpire()->format('Y-m-d H:i:s').' >> '.$data->getUsername()); $this->em->remove($data); - $this->em->flush(); + $this->em->flush(); } $this->writeln(''); + return Command::SUCCESS; } - private function writelnred($string) { + private function writelnred($string) + { $this->output->writeln(''.$string.''); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n"); + if ($this->byexec) { + $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n"); + } } - private function writeln($string) { + + private function writeln($string) + { $this->output->writeln($string); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n"); - } + if ($this->byexec) { + $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n"); + } + } } diff --git a/src/Command/CronCommand.php b/src/Command/CronCommand.php index e347d4a..93e7a20 100644 --- a/src/Command/CronCommand.php +++ b/src/Command/CronCommand.php @@ -2,28 +2,26 @@ namespace App\Command; +use App\Entity\Cron; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Command\LockableTrait; +use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\DependencyInjection\ContainerInterface; -use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Filesystem\Filesystem; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Command\LockableTrait; - -use App\Entity\Cron; class CronCommand extends Command { + use LockableTrait; private $container; private $em; private $output; private $filesystem; private $rootlog; - use LockableTrait; - public function __construct(ContainerInterface $container,EntityManagerInterface $em) + public function __construct(ContainerInterface $container, EntityManagerInterface $em) { parent::__construct(); $this->container = $container; @@ -40,93 +38,99 @@ class CronCommand extends Command protected function execute(InputInterface $input, OutputInterface $output) { - $this->output = $output; - $this->filesystem = new Filesystem(); - $this->rootlog = $this->container->get('kernel')->getLogDir()."/"; + $this->output = $output; + $this->filesystem = new Filesystem(); + $this->rootlog = $this->container->get('kernel')->getLogDir().'/'; if (!$this->lock()) { - $this->output->writeln("CRON LOCK"); + $this->output->writeln('CRON LOCK'); + return Command::FAILURE; } $crons = $this->em->getRepository('App\Entity\Cron')->toexec(); - if($crons) { - $now=new \DateTime(); + if ($crons) { + $now = new \DateTime(); $this->writelnred(''); $this->writelnred(''); $this->writelnred(''); $this->writelnred(''); $this->writelnred('=========================================================================================================='); $this->writelnred('== CRON =================================================================================================='); - $this->writelnred('=========================================================================================================='); - $this->writeln ('Date = '.$now->format('Y-m-d H:i:s')); - $this->writeln ('Application = '.$this->container->getParameter("appName")); + $this->writelnred('=========================================================================================================='); + $this->writeln('Date = '.$now->format('Y-m-d H:i:s')); + $this->writeln('Application = '.$this->container->getParameter('appName')); } - - foreach($crons as $cron) { + + foreach ($crons as $cron) { // Id du cron $idcron = $cron->getId(); // Flag d'execution en cours - $now=new \DateTime(); + $now = new \DateTime(); $cron->setStartexecdate($now); - //$cron->setStatut(1); + // $cron->setStatut(1); $this->em->flush(); // Récupération de la commande $command = $this->getApplication()->find($cron->getCommand()); - + // Réccuépration des parametres - $jsonparameter=json_decode($cron->getJsonargument(),true); + $jsonparameter = json_decode($cron->getJsonargument(), true); // Formater la chaine de parametre - if(!$jsonparameter) $jsonparameter=[]; + if (!$jsonparameter) { + $jsonparameter = []; + } $parameter = new ArrayInput($jsonparameter); // Executer la commande - try{ + try { $returnCode = $command->run($parameter, $output); + } catch (\Exception $e) { + $this->writelnred('JOB EN ERREUR .'.$e->getMessage()); + $returnCode = Command::FAILURE; } - catch(\Exception $e) { - $this->writelnred("JOB EN ERREUR .".$e->getMessage()); - $returnCode=Command::FAILURE; - } // Flag de fin d'execution - $now=new \DateTime(); + $now = new \DateTime(); $cron->setEndexecdate($now); // Si interval par heure - if(fmod($cron->getRepeatinterval(),3600)==0) - $next=clone $cron->getNextexecdate(); - else - $next=new \DateTime(); + if (0 == fmod($cron->getRepeatinterval(), 3600)) { + $next = clone $cron->getNextexecdate(); + } else { + $next = new \DateTime(); + } $next->add(new \DateInterval('PT'.$cron->getRepeatinterval().'S')); $cron->setNextexecdate($next); // Statut OK/KO - $cron->setStatut(($returnCode==Command::FAILURE?0:1)); + $cron->setStatut(Command::FAILURE == $returnCode ? 0 : 1); $this->em->flush(); } - if($crons) { - $this->writelnred("=="); - $this->writelnred("FIN CRON"); - $this->writelnred("=="); - $this->writelnred(""); + if ($crons) { + $this->writelnred('=='); + $this->writelnred('FIN CRON'); + $this->writelnred('=='); + $this->writelnred(''); } return Command::SUCCESS; } - private function writelnred($string) { + private function writelnred($string) + { $this->output->writeln(''.$string.''); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); } - private function writeln($string) { + + private function writeln($string) + { $this->output->writeln($string); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - } + } } diff --git a/src/Command/InitCommand.php b/src/Command/InitCommand.php index 8eaa591..340afee 100644 --- a/src/Command/InitCommand.php +++ b/src/Command/InitCommand.php @@ -1,26 +1,24 @@ container = $container; $this->em = $em; } - protected function configure() { $this @@ -48,455 +45,451 @@ class InitCommand extends Command protected function execute(InputInterface $input, OutputInterface $output) { - $this->output = $output; - $this->filesystem = new Filesystem(); - $this->rootlog = $this->container->get('kernel')->getLogDir()."/"; - $this->appname = $this->container->getParameter('appName'); - + $this->output = $output; + $this->filesystem = new Filesystem(); + $this->rootlog = $this->container->get('kernel')->getLogDir().'/'; + $this->appname = $this->container->getParameter('appName'); + $this->writeln('APP = Default Data'); // On s'assure que le groupe tout le monde existe $metadata = $this->em->getClassMetaData('App\Entity\Group'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); - $metadata->setIdGenerator(new AssignedGenerator()); - $group=$this->em->getRepository('App\Entity\Group')->findOneBy(['id'=>'-1']); - if(!$group) { - $group=new Group(); + $metadata->setIdGenerator(new AssignedGenerator()); + $group = $this->em->getRepository('App\Entity\Group')->findOneBy(['id' => '-1']); + if (!$group) { + $group = new Group(); $group->setId(-1); - $group->setLabel("Tout le monde"); + $group->setLabel('Tout le monde'); $group->setIsopen(false); $group->setIsworkgroup(false); $group->setApikey(Uuid::uuid4()); $this->em->persist($group); - $this->em->flush(); - + $this->em->flush(); } // On s'assure qu'il exite un niveau01 $metadata = $this->em->getClassMetaData('App\Entity\Niveau01'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); - $metadata->setIdGenerator(new AssignedGenerator()); - $niveau01=$this->em->getRepository('App\Entity\Niveau01')->findOneBy(['id'=>'-1']); - if(!$niveau01) { - $niveau01=new Niveau01(); + $metadata->setIdGenerator(new AssignedGenerator()); + $niveau01 = $this->em->getRepository('App\Entity\Niveau01')->findOneBy(['id' => '-1']); + if (!$niveau01) { + $niveau01 = new Niveau01(); $niveau01->setId(-1); $niveau01->setLabel($this->appname); $niveau01->setApikey(Uuid::uuid4()); $this->em->persist($niveau01); - $this->em->flush(); + $this->em->flush(); } // On s'assure que le user admin existe $metadata = $this->em->getClassMetaData('App\Entity\User'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); - $metadata->setIdGenerator(new AssignedGenerator()); - $user=$this->em->getRepository('App\Entity\User')->findOneBy(['id'=>'-1']); - if(!$user) { - $user=new User(); + $metadata->setIdGenerator(new AssignedGenerator()); + $user = $this->em->getRepository('App\Entity\User')->findOneBy(['id' => '-1']); + if (!$user) { + $user = new User(); $user->setId(-1); - $user->setUsername("admin"); - $user->setFirstname("admin"); + $user->setUsername('admin'); + $user->setFirstname('admin'); $user->setLastname($this->appname); $user->setPassword($this->container->getParameter('appSecret')); $user->setEmail($this->container->getParameter('appMailnoreply')); $user->setApikey(Uuid::uuid4()); - $user->setAvatar("admin.jpg"); + $user->setAvatar('admin.jpg'); $user->setIsVisible(true); $user->setNiveau01($niveau01); - + $this->em->persist($user); $this->em->flush(); } // On s'assure que les appAdmins sont bien admin - foreach($this->container->getParameter('appAdmins') as $admin) { - $user=$this->em->getRepository('App\Entity\User')->findOneBy(['username'=>$admin]); - if($user&&!$user->hasRole("ROLE_ADMIN")) { - $user->setRole("ROLE_ADMIN"); + foreach ($this->container->getParameter('appAdmins') as $admin) { + $user = $this->em->getRepository('App\Entity\User')->findOneBy(['username' => $admin]); + if ($user && !$user->hasRole('ROLE_ADMIN')) { + $user->setRole('ROLE_ADMIN'); $this->em->flush(); - } + } } // colorbgbody = Couleur des fonds de page $this->insertConfig( 1, // order - "site", // category - "appname", // id - "Titre de votre site", // title - "", // value + 'site', // category + 'appname', // id + 'Titre de votre site', // title + '', // value $this->appname, // default - "string", // type, + 'string', // type, true, // visible true, // changeable false, // required - "", // grouped - "Titre de votre site" + '', // grouped + 'Titre de votre site' ); $this->insertConfig( 2, // order - "site", // category - "appsubname", // id - "Sous-titre de votre site", // title - "", // value - "", // default - "string", // type, + 'site', // category + 'appsubname', // id + 'Sous-titre de votre site', // title + '', // value + '', // default + 'string', // type, true, // visible true, // changeable false, // required - "", // grouped - "Sous-titre de votre site" + '', // grouped + 'Sous-titre de votre site' ); $this->insertConfig( 3, // order - "site", // category - "appdescription", // id - "Description de votre site", // title - "", // value - "", // default - "editor", // type, + 'site', // category + 'appdescription', // id + 'Description de votre site', // title + '', // value + '', // default + 'editor', // type, true, // visible true, // changeable false, // required - "", // grouped - "Description de votre site" + '', // grouped + 'Description de votre site' ); $this->insertConfig( 100, // order - "site", // category - "fgforceconnect", // id - "Forcer la connexion", // title - "", // value - "0", // default - "boolean", // type, + 'site', // category + 'fgforceconnect', // id + 'Forcer la connexion', // title + '', // value + '0', // default + 'boolean', // type, true, // visible true, // changeable true, // required - "", // grouped - "Forcer la connexion afin de rendre votre site privé" + '', // grouped + 'Forcer la connexion afin de rendre votre site privé' ); - + $this->insertConfig( 200, // order - "site", // category - "permgroup", // id - "Rôle créateur de groupe de travail", // title - "", // value - "ROLE_MASTER", // default - "role", // type, + 'site', // category + 'permgroup', // id + 'Rôle créateur de groupe de travail', // title + '', // value + 'ROLE_MASTER', // default + 'role', // type, true, // visible true, // changeable true, // required - "", // grouped - "Détermine quel rôle aura la permission de créer des groupes de travail" + '', // grouped + 'Détermine quel rôle aura la permission de créer des groupes de travail' ); $this->insertConfig( 201, // order - "site", // category - "permannu", // id + 'site', // category + 'permannu', // id "Rôle accédant à l'annuaire", // title - "", // value - "ROLE_USER", // default - "role", // type, + '', // value + 'ROLE_USER', // default + 'role', // type, true, // visible true, // changeable true, // required - "", // grouped + '', // grouped "Détermine quel rôle aura la permission de voir l'annuaire" ); $this->insertConfig( 202, // order - "site", // category - "scopeannu", // id + 'site', // category + 'scopeannu', // id "Scope de l'annuaire", // title - "", // value - "ALL", // default - "scopeannu", // type, + '', // value + 'ALL', // default + 'scopeannu', // type, true, // visible true, // changeable true, // required - "", // grouped + '', // grouped "Détermine le scope des utilisateurs visibles dans l'annuaire par d'autres utilisateurs" ); $this->insertConfig( 500, // order - "site", // category - "apptheme", // id - "Thème de votre site", // title - "", // value - "", // default - "string", // type, + 'site', // category + 'apptheme', // id + 'Thème de votre site', // title + '', // value + '', // default + 'string', // type, false, // visible true, // changeable false, // required - "", // grouped - "Thème de votre site" + '', // grouped + 'Thème de votre site' ); - // colorbgbody = Couleur des fonds de page $this->insertConfig( 1, // order - "colorbgbody", // category - "colorbgbodydark", // id - "Couleur de fond fonçée", // title - "", // value - "#2e3131", // default - "color", // type, + 'colorbgbody', // category + 'colorbgbodydark', // id + 'Couleur de fond fonçée', // title + '', // value + '#2e3131', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped + '', // grouped "La couleur de fond quand le site a besoin d'avoir une couleur de fond foncée" ); $this->insertConfig( 2, // order - "colorbgbody", // category - "colorbgbodylight", // id - "Couleur de fond claire", // title - "", // value - "#ffffff", // default - "color", // type, + 'colorbgbody', // category + 'colorbgbodylight', // id + 'Couleur de fond claire', // title + '', // value + '#ffffff', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped + '', // grouped "La couleur de fond quand le site a besoin d'avoir une couleur de fond claire" ); // colorfttitle = Couleur des fontes titre $this->insertConfig( 1, // order - "colorfttitle", // category - "colorfttitledark", // id - "Couleur des titres sur fond fonçé", // title - "", // value - "#ffffff", // default - "color", // type, + 'colorfttitle', // category + 'colorfttitledark', // id + 'Couleur des titres sur fond fonçé', // title + '', // value + '#ffffff', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped - "La couleur des titres sur fond fonçé" + '', // grouped + 'La couleur des titres sur fond fonçé' ); $this->insertConfig( 2, // order - "colorfttitle", // category - "colorfttitlelight", // id - "Couleur des titres sur fond claire", // title - "", // value - "#2e3131", // default - "color", // type, + 'colorfttitle', // category + 'colorfttitlelight', // id + 'Couleur des titres sur fond claire', // title + '', // value + '#2e3131', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped - "La couleur des titres sur fond claire" + '', // grouped + 'La couleur des titres sur fond claire' ); - + // colorftbody = Couleur des fontes titre $this->insertConfig( 1, // order - "colorftbody", // category - "colorftbodydark", // id - "Couleur de la police sur fond fonçé", // title - "", // value - "#ffffff", // default - "color", // type, + 'colorftbody', // category + 'colorftbodydark', // id + 'Couleur de la police sur fond fonçé', // title + '', // value + '#ffffff', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped - "La couleur de la police sur fond fonçé" + '', // grouped + 'La couleur de la police sur fond fonçé' ); $this->insertConfig( 2, // order - "colorftbody", // category - "colorftbodylight", // id - "Couleur de la police sur fond claire", // title - "", // value - "#343a40", // default - "color", // type, + 'colorftbody', // category + 'colorftbodylight', // id + 'Couleur de la police sur fond claire', // title + '', // value + '#343a40', // default + 'color', // type, true, // visible true, // changeable false, // required - "", // grouped - "La couleur de la police sur fond claire" + '', // grouped + 'La couleur de la police sur fond claire' ); // font = nom des polices $this->insertConfig( 1, // order - "font", // category - "fonttitle", // id - "Police pour les titres", // title - "", // value - "Theboldfont", // default - "font", // type, + 'font', // category + 'fonttitle', // id + 'Police pour les titres', // title + '', // value + 'Theboldfont', // default + 'font', // type, true, // visible true, // changeable false, // required - "", // grouped - "La couleur de la police de votre site" - ); + '', // grouped + 'La couleur de la police de votre site' + ); $this->insertConfig( 2, // order - "font", // category - "fontbody", // id - "Police principale", // title - "", // value - "Roboto-Regular", // default - "font", // type, + 'font', // category + 'fontbody', // id + 'Police principale', // title + '', // value + 'Roboto-Regular', // default + 'font', // type, true, // visible true, // changeable false, // required - "", // grouped - "Nom de la police principale" + '', // grouped + 'Nom de la police principale' ); $this->insertConfig( 3, // order - "font", // category - "fontsizeh1", // id - "Taille des titres h1", // title - "", // value - "40", // default - "integer", // type, + 'font', // category + 'fontsizeh1', // id + 'Taille des titres h1', // title + '', // value + '40', // default + 'integer', // type, true, // visible true, // changeable false, // required - "", // grouped - "Taille des titres h1 en px" + '', // grouped + 'Taille des titres h1 en px' ); $this->insertConfig( 4, // order - "font", // category - "fontsizeh2", // id - "Taille des titres h2", // title - "", // value - "32", // default - "integer", // type, + 'font', // category + 'fontsizeh2', // id + 'Taille des titres h2', // title + '', // value + '32', // default + 'integer', // type, true, // visible true, // changeable false, // required - "", // grouped - "Taille des titres h2 en px" + '', // grouped + 'Taille des titres h2 en px' ); $this->insertConfig( 5, // order - "font", // category - "fontsizeh3", // id - "Taille des titres h3", // title - "", // value - "28", // default - "integer", // type, + 'font', // category + 'fontsizeh3', // id + 'Taille des titres h3', // title + '', // value + '28', // default + 'integer', // type, true, // visible true, // changeable false, // required - "", // grouped - "Taille des titres h3 en px" + '', // grouped + 'Taille des titres h3 en px' ); $this->insertConfig( 6, // order - "font", // category - "fontsizeh4", // id - "Taille des titres h4", // title - "", // value - "24", // default - "integer", // type, + 'font', // category + 'fontsizeh4', // id + 'Taille des titres h4', // title + '', // value + '24', // default + 'integer', // type, true, // visible true, // changeable false, // required - "", // grouped - "Taille des titres h4 en px" + '', // grouped + 'Taille des titres h4 en px' ); - // logo = + // logo = $this->insertConfig( 1, // order - "logo", // category - "logodark", // id - "Logo sur fond fonçé", // title - "", // value - "logo.png", // default - "logo", // type, + 'logo', // category + 'logodark', // id + 'Logo sur fond fonçé', // title + '', // value + 'logo.png', // default + 'logo', // type, true, // visible true, // changeable false, // required - "", // grouped - "Logo sur fond fonçé" - ); + '', // grouped + 'Logo sur fond fonçé' + ); $this->insertConfig( 2, // order - "logo", // category - "logolight", // id - "Logo sur fond clair", // title - "", // value - "logo.png", // default - "logo", // type, + 'logo', // category + 'logolight', // id + 'Logo sur fond clair', // title + '', // value + 'logo.png', // default + 'logo', // type, true, // visible true, // changeable false, // required - "", // grouped - "Logo sur fond clair" - ); + '', // grouped + 'Logo sur fond clair' + ); - - // header = + // header = $this->insertConfig( 1, // order - "header", // category - "headerimage", // id - "Image de fond de la bannière", // title - "", // value - "header.jpg", // default - "header", // type, + 'header', // category + 'headerimage', // id + 'Image de fond de la bannière', // title + '', // value + 'header.jpg', // default + 'header', // type, true, // visible true, // changeable false, // required - "", // grouped - "Image appnamede fond de la bannière" - ); + '', // grouped + 'Image appnamede fond de la bannière' + ); $this->insertConfig( 1, // order - "header", // category - "headerheight", // id - "Hauteur de la bannière", // title - "", // value - "100", // default - "integer", // type, + 'header', // category + 'headerheight', // id + 'Hauteur de la bannière', // title + '', // value + '100', // default + 'integer', // type, true, // visible true, // changeable false, // required - "", // grouped - "Image de fond de la bannière" - ); + '', // grouped + 'Image de fond de la bannière' + ); $output->writeln(''); - // Job synchronisation des comptes utilisateur // Toute les 24h à 3h00 - $entity = $this->em->getRepository('App\Entity\Cron')->findOneBy(["command"=>"app:Synchro"]); - if(!$entity) { - $entity = new Cron; - $nextdate=$entity->getSubmitdate(); - $nextdate->setTime(4,0); - $entity->setCommand("app:Synchro"); - $entity->setDescription("Synchronisation des comptes utilisateurs"); + $entity = $this->em->getRepository('App\Entity\Cron')->findOneBy(['command' => 'app:Synchro']); + if (!$entity) { + $entity = new Cron(); + $nextdate = $entity->getSubmitdate(); + $nextdate->setTime(4, 0); + $entity->setCommand('app:Synchro'); + $entity->setDescription('Synchronisation des comptes utilisateurs'); $entity->setStatut(1); $entity->setRepeatinterval(86400); $entity->setNextexecdate($nextdate); @@ -505,27 +498,29 @@ class InitCommand extends Command // Job purge des registrations obsolètes // Toute les 5mn - $entity = $this->em->getRepository('App\Entity\Cron')->findOneBy(["command"=>"app:CleanRegistration"]); - if(!$entity) { - $entity = new Cron; - $entity->setCommand("app:CleanRegistration"); - $entity->setDescription("Nettoyage des Inscriptions obsolètes"); + $entity = $this->em->getRepository('App\Entity\Cron')->findOneBy(['command' => 'app:CleanRegistration']); + if (!$entity) { + $entity = new Cron(); + $entity->setCommand('app:CleanRegistration'); + $entity->setDescription('Nettoyage des Inscriptions obsolètes'); $entity->setStatut(1); $entity->setRepeatinterval(300); $entity->setNextexecdate($entity->getSubmitdate()); $this->em->persist($entity); - } + } $this->em->flush(); $output->writeln(''); + return Command::SUCCESS; } - private function insertConfig($order,$category,$id,$title,$value,$default,$type,$visible,$changeable,$required,$grouped,$help) { - $entity=$this->em->getRepository("App\Entity\Config")->find($id); - if(!$entity) { - $entity= new Config(); + private function insertConfig($order, $category, $id, $title, $value, $default, $type, $visible, $changeable, $required, $grouped, $help) + { + $entity = $this->em->getRepository("App\Entity\Config")->find($id); + if (!$entity) { + $entity = new Config(); $entity->setId($id); $entity->setValue($value); } @@ -545,12 +540,15 @@ class InitCommand extends Command $this->em->flush(); } - private function writelnred($string) { + private function writelnred($string) + { $this->output->writeln(''.$string.''); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); } - private function writeln($string) { + + private function writeln($string) + { $this->output->writeln($string); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - } + } } diff --git a/src/Command/SetPasswordCommand.php b/src/Command/SetPasswordCommand.php index 5c14062..3d1458a 100644 --- a/src/Command/SetPasswordCommand.php +++ b/src/Command/SetPasswordCommand.php @@ -1,17 +1,15 @@ container = $container; @@ -33,21 +31,19 @@ class SetPasswordCommand extends Command ->setName('app:SetPassword') ->setDescription("Modifier le password d'un utilisateur") ->setHelp("Modifier le password d'un utilisateur") - ->addArgument('username', InputArgument::OPTIONAL, 'username') + ->addArgument('username', InputArgument::OPTIONAL, 'username') ->addArgument('password', InputArgument::OPTIONAL, 'password') ; } protected function execute(InputInterface $input, OutputInterface $output) { - $this->output = $output; - $this->filesystem = new Filesystem(); - $this->rootlog = $this->container->get('kernel')->getLogDir()."/"; - - + $this->output = $output; + $this->filesystem = new Filesystem(); + $this->rootlog = $this->container->get('kernel')->getLogDir().'/'; $this->writelnred(''); - $this->writelnred('== app:SetPasword'); + $this->writelnred('== app:SetPasword'); $this->writelnred('=========================================================================================================='); $username = $input->getArgument('username'); @@ -56,28 +52,31 @@ class SetPasswordCommand extends Command $password = $input->getArgument('password'); $this->writeln($password); - $user = $this->em->getRepository('App\Entity\User')->findOneBy(array('username' => $username)); - if($user) { + $user = $this->em->getRepository('App\Entity\User')->findOneBy(['username' => $username]); + if ($user) { // Set Password $user->setPassword($password); $this->em->persist($user); - $this->em->flush(); + $this->em->flush(); } $this->writeln(''); + return Command::SUCCESS; } - private function writelnred($string) { + private function writelnred($string) + { $this->output->writeln(''.$string.''); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); } - private function writeln($string) { - if(!$string) $string=" "; + + private function writeln($string) + { + if (!$string) { + $string = ' '; + } $this->output->writeln($string); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - } - - - + } } diff --git a/src/Command/SynchroCommand.php b/src/Command/SynchroCommand.php index c923688..e349628 100644 --- a/src/Command/SynchroCommand.php +++ b/src/Command/SynchroCommand.php @@ -1,25 +1,20 @@ container = $container; @@ -81,85 +76,84 @@ class SynchroCommand extends Command protected function execute(InputInterface $input, OutputInterface $output) { - $this->output = $output; - $this->filesystem = new Filesystem(); - $this->rootlog = $this->container->get('kernel')->getLogDir()."/"; - $this->appMasteridentity = $this->container->getParameter('appMasteridentity'); + $this->output = $output; + $this->filesystem = new Filesystem(); + $this->rootlog = $this->container->get('kernel')->getLogDir().'/'; + $this->appMasteridentity = $this->container->getParameter('appMasteridentity'); - - $appSynchro = $this->container->getParameter('appSynchro'); - $this->synchro = $this->container->getParameter("appSynchro"); - $this->synchropurgeniveau01 = $this->container->getParameter("appSynchroPurgeNiveau01"); - $this->synchropurgeniveau02 = $this->container->getParameter("appSynchroPurgeNiveau02"); - $this->synchropurgegroup = $this->container->getParameter("appSynchroPurgeGroup"); - $this->synchropurgeuser = $this->container->getParameter("appSynchroPurgeUser"); - - $this->host = $this->container->getParameter("ldapHost"); - $this->port = $this->container->getParameter("ldapPort"); - $this->usetls = $this->container->getParameter("ldapUsetls"); - $this->userwriter = $this->container->getParameter("ldapUserwriter"); - $this->user = $this->container->getParameter("ldapUser"); - $this->password = $this->container->getParameter("ldapPassword"); - $this->basedn = $this->container->getParameter("ldapBasedn"); - $this->baseorganisation = $this->container->getParameter("ldapBaseorganisation"); - $this->baseniveau01 = $this->container->getParameter("ldapBaseniveau01"); - $this->baseniveau02 = $this->container->getParameter("ldapBaseniveau02"); - $this->basegroup = $this->container->getParameter("ldapBasegroup"); - $this->baseuser = $this->container->getParameter("ldapBaseuser"); - $this->username = $this->container->getParameter("ldapUsername"); - $this->firstname = $this->container->getParameter("ldapFirstname"); - $this->lastname = $this->container->getParameter("ldapLastname"); - $this->email = $this->container->getParameter("ldapEmail"); - $this->avatar = $this->container->getParameter("ldapAvatar"); - $this->memberof = $this->container->getParameter("ldapMemberof"); - $this->groupgid = $this->container->getParameter("ldapGroupgid"); - $this->groupname = $this->container->getParameter("ldapGroupname"); - $this->groupmember = $this->container->getParameter("ldapGroupmember"); - $this->groupmemberisdn = $this->container->getParameter("ldapGroupmemberisdn"); - $this->filtergroup = $this->container->getParameter("ldapFiltergroup"); - $this->filteruser = $this->container->getParameter("ldapFilteruser"); + $this->synchro = $this->container->getParameter('appSynchro'); + $this->synchropurgeniveau01 = $this->container->getParameter('appSynchroPurgeNiveau01'); + $this->synchropurgeniveau02 = $this->container->getParameter('appSynchroPurgeNiveau02'); + $this->synchropurgegroup = $this->container->getParameter('appSynchroPurgeGroup'); + $this->synchropurgeuser = $this->container->getParameter('appSynchroPurgeUser'); - switch($appSynchro){ - case "LDAP2NINE": - $return=$this->ldap2nine(); - break; + $this->host = $this->container->getParameter('ldapHost'); + $this->port = $this->container->getParameter('ldapPort'); + $this->usetls = $this->container->getParameter('ldapUsetls'); + $this->userwriter = $this->container->getParameter('ldapUserwriter'); + $this->user = $this->container->getParameter('ldapUser'); + $this->password = $this->container->getParameter('ldapPassword'); + $this->basedn = $this->container->getParameter('ldapBasedn'); + $this->baseorganisation = $this->container->getParameter('ldapBaseorganisation'); + $this->baseniveau01 = $this->container->getParameter('ldapBaseniveau01'); + $this->baseniveau02 = $this->container->getParameter('ldapBaseniveau02'); + $this->basegroup = $this->container->getParameter('ldapBasegroup'); + $this->baseuser = $this->container->getParameter('ldapBaseuser'); + $this->username = $this->container->getParameter('ldapUsername'); + $this->firstname = $this->container->getParameter('ldapFirstname'); + $this->lastname = $this->container->getParameter('ldapLastname'); + $this->email = $this->container->getParameter('ldapEmail'); + $this->avatar = $this->container->getParameter('ldapAvatar'); + $this->memberof = $this->container->getParameter('ldapMemberof'); + $this->groupgid = $this->container->getParameter('ldapGroupgid'); + $this->groupname = $this->container->getParameter('ldapGroupname'); + $this->groupmember = $this->container->getParameter('ldapGroupmember'); + $this->groupmemberisdn = $this->container->getParameter('ldapGroupmemberisdn'); + $this->filtergroup = $this->container->getParameter('ldapFiltergroup'); + $this->filteruser = $this->container->getParameter('ldapFilteruser'); - case "NINE2LDAP": - $return=$this->nine2ldap(); - break; + switch ($appSynchro) { + case 'LDAP2NINE': + $return = $this->ldap2nine(); + break; - case "NINE2NINE": - $return=$this->nine2nine(); - break; + case 'NINE2LDAP': + $return = $this->nine2ldap(); + break; + + case 'NINE2NINE': + $return = $this->nine2nine(); + break; default: - $return=Command::SUCCESS; - break; + $return = Command::SUCCESS; + break; } $this->writeln(''); - return $return; + + return $return; } private function ldap2nine() { - $this->writelnred(''); - $this->writelnred('== app:Synchro'); + $this->writelnred('== app:Synchro'); $this->writelnred('=========================================================================================================='); - // Synchronisation ldap2nine possible uniquement si appMasteridentity=LDAP or SSO - if($this->appMasteridentity!="LDAP"&&$this->appMasteridentity!="SSO") { - $this->writeln("Synchronisation impossible si appMasteridentity!=LDAP et appMasteridentity!=SSO"); + if ('LDAP' != $this->appMasteridentity && 'SSO' != $this->appMasteridentity) { + $this->writeln('Synchronisation impossible si appMasteridentity!=LDAP et appMasteridentity!=SSO'); + return Command::FAILURE; } // Synchronisation impossible si aucune connexion à l'annuaire - if(!$this->ldap->connect()) { + if (!$this->ldap->connect()) { $this->writeln("Synchronisation impossible connexion impossible à l'annuaire"); + return Command::FAILURE; } @@ -168,240 +162,256 @@ class SynchroCommand extends Command $this->writeln('== SYNCHONISATION LDAP TO NINE ======================'); $this->writeln('====================================================='); - $tbniveau01members=[]; - $tbgroupmembers=[]; - $tbniveau01s=[]; - $tbgroups=[]; - $tbusers=[]; + $tbniveau01members = []; + $tbgroupmembers = []; + $tbniveau01s = []; + $tbgroups = []; + $tbusers = []; - $ldapniveau01s=$this->em->createQueryBuilder()->select('entity')->from('App:Niveau01','entity')->where('entity.ldapfilter IS NOT NULL')->getQuery()->getResult(); - $ldapgroups=$this->em->createQueryBuilder()->select('entity')->from('App:Group','entity')->where('entity.ldapfilter IS NOT NULL')->getQuery()->getResult(); + $ldapniveau01s = $this->em->createQueryBuilder()->select('entity')->from('App:Niveau01', 'entity')->where('entity.ldapfilter IS NOT NULL')->getQuery()->getResult(); + $ldapgroups = $this->em->createQueryBuilder()->select('entity')->from('App:Group', 'entity')->where('entity.ldapfilter IS NOT NULL')->getQuery()->getResult(); - $fgsynchroniveau01s=(!empty($this->baseniveau01)&&!empty($this->groupgid)&&!empty($this->groupname)&&!empty($this->filtergroup)); - $fgsynchrogroups=(!empty($this->basegroup)&&!empty($this->groupgid)&&!empty($this->groupname)&&!empty($this->filtergroup)); - $fgsynchrousers=(!empty($this->baseuser)&&!empty($this->username)&&!empty($this->email)&&!empty($this->filteruser)); - - $fgsynchropurgeniveau01s=($fgsynchroniveau01s&&$this->synchropurgeniveau01); - $fgsynchropurgegroups=($fgsynchrogroups&&$this->synchropurgegroup); - $fgsynchropurgeusers=($fgsynchrousers&&$this->synchropurgeuser); + $fgsynchroniveau01s = (!empty($this->baseniveau01) && !empty($this->groupgid) && !empty($this->groupname) && !empty($this->filtergroup)); + $fgsynchrogroups = (!empty($this->basegroup) && !empty($this->groupgid) && !empty($this->groupname) && !empty($this->filtergroup)); + $fgsynchrousers = (!empty($this->baseuser) && !empty($this->username) && !empty($this->email) && !empty($this->filteruser)); + + $fgsynchropurgeniveau01s = ($fgsynchroniveau01s && $this->synchropurgeniveau01); + $fgsynchropurgegroups = ($fgsynchrogroups && $this->synchropurgegroup); + $fgsynchropurgeusers = ($fgsynchrousers && $this->synchropurgeuser); // Synchronisation des niveau01s - if($fgsynchroniveau01s) { + if ($fgsynchroniveau01s) { $this->writeln(''); $this->writeln('== NIVEAU01 ========================================='); - $ldapentrys=$this->ldap->search($this->filtergroup,[$this->groupgid,$this->groupname,$this->groupmember],$this->baseniveau01); - foreach($ldapentrys as $ldapentry) { - $niveau01other=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$ldapentry[$this->groupname]]); - if($niveau01other&&$niveau01other->getIdexternal()!=$ldapentry[$this->groupgid]) { - $this->writelnred(" > ".$ldapentry[$this->groupname]." = Impossible à synchroniser un autre niveau01 existe déjà avec ce label"); + $ldapentrys = $this->ldap->search($this->filtergroup, [$this->groupgid, $this->groupname, $this->groupmember], $this->baseniveau01); + foreach ($ldapentrys as $ldapentry) { + $niveau01other = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $ldapentry[$this->groupname]]); + if ($niveau01other && $niveau01other->getIdexternal() != $ldapentry[$this->groupgid]) { + $this->writelnred(' > '.$ldapentry[$this->groupname].' = Impossible à synchroniser un autre niveau01 existe déjà avec ce label'); continue; } - // On recherche le groupe via le gid + // On recherche le groupe via le gid $this->writeln(' > '.$ldapentry[$this->groupname]); - $niveau01=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["idexternal"=>$ldapentry[$this->groupgid]]); - if(!$niveau01) { - $niveau01=new Niveau01(); - $niveau01->setApikey(Uuid::uuid4()); + $niveau01 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['idexternal' => $ldapentry[$this->groupgid]]); + if (!$niveau01) { + $niveau01 = new Niveau01(); + $niveau01->setApikey(Uuid::uuid4()); $this->em->persist($niveau01); } $niveau01->setIdexternal($ldapentry[$this->groupgid]); $niveau01->setLabel($ldapentry[$this->groupname]); - $niveau01->setLdapfilter("(".$this->groupname."=".$ldapentry[$this->groupname].")"); + $niveau01->setLdapfilter('('.$this->groupname.'='.$ldapentry[$this->groupname].')'); + + $this->em->flush(); - $this->em->flush(); - // Sauvegarde du niveau01ldap - array_push($tbniveau01s,$ldapentry[$this->groupname]); + array_push($tbniveau01s, $ldapentry[$this->groupname]); // Sauvegarde des membres du niveau01 - if(!empty($ldapentry[$this->groupmember])) { - if(!is_array($ldapentry[$this->groupmember])) { - $member=$ldapentry[$this->groupmember]; - if(!array_key_exists($member,$tbniveau01members)) $tbniveau01members[$member]=[]; - array_push($tbniveau01members[$member],$ldapentry[$this->groupname]); - } - else { - foreach($ldapentry[$this->groupmember] as $member) { - if(!array_key_exists($member,$tbniveau01members)) $tbniveau01members[$member]=[]; - array_push($tbniveau01members[$member],$ldapentry[$this->groupname]); + if (!empty($ldapentry[$this->groupmember])) { + if (!is_array($ldapentry[$this->groupmember])) { + $member = $ldapentry[$this->groupmember]; + if (!array_key_exists($member, $tbniveau01members)) { + $tbniveau01members[$member] = []; + } + array_push($tbniveau01members[$member], $ldapentry[$this->groupname]); + } else { + foreach ($ldapentry[$this->groupmember] as $member) { + if (!array_key_exists($member, $tbniveau01members)) { + $tbniveau01members[$member] = []; + } + array_push($tbniveau01members[$member], $ldapentry[$this->groupname]); } } } } - } - else { + } else { $this->writeln(''); $this->writeln('== NIVEAU01 ========================================='); - $this->writelnred(" > Synchronisation impossible il vous manque des paramétres ldap pour le faire"); + $this->writelnred(' > Synchronisation impossible il vous manque des paramétres ldap pour le faire'); } // Synchronisation des groups - if($fgsynchrogroups) { + if ($fgsynchrogroups) { $this->writeln(''); $this->writeln('== GROUP ============================================'); - $ldapentrys=$this->ldap->search($this->filtergroup,[$this->groupgid,$this->groupname,$this->groupmember],$this->basegroup); + $ldapentrys = $this->ldap->search($this->filtergroup, [$this->groupgid, $this->groupname, $this->groupmember], $this->basegroup); - foreach($ldapentrys as $ldapentry) { - $groupother=$this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$ldapentry[$this->groupname]]); - if($groupother&&$groupother->getIdexternal()!=$ldapentry[$this->groupgid]) { - $this->writelnred(" > ".$ldapentry[$this->groupname]." = Impossible à synchroniser un autre groupe existe déjà avec ce label"); + foreach ($ldapentrys as $ldapentry) { + $groupother = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $ldapentry[$this->groupname]]); + if ($groupother && $groupother->getIdexternal() != $ldapentry[$this->groupgid]) { + $this->writelnred(' > '.$ldapentry[$this->groupname].' = Impossible à synchroniser un autre groupe existe déjà avec ce label'); continue; } - // On recherche le groupe via le gid + // On recherche le groupe via le gid $this->writeln(' > '.$ldapentry[$this->groupname]); - $group=$this->em->getRepository("App\Entity\Group")->findOneBy(["idexternal"=>$ldapentry[$this->groupgid]]); - if(!$group) { - $group=new Group(); + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['idexternal' => $ldapentry[$this->groupgid]]); + if (!$group) { + $group = new Group(); $group->setIsopen(false); $group->setIsworkgroup(false); - $group->setApikey(Uuid::uuid4()); + $group->setApikey(Uuid::uuid4()); $this->em->persist($group); } $group->setIdexternal($ldapentry[$this->groupgid]); $group->setLabel($ldapentry[$this->groupname]); - $group->setLdapfilter("(".$this->groupname."=".$ldapentry[$this->groupname].")"); + $group->setLdapfilter('('.$this->groupname.'='.$ldapentry[$this->groupname].')'); - $this->em->flush(); + $this->em->flush(); // Sauvegarde du groupldap - array_push($tbgroups,$ldapentry[$this->groupname]); + array_push($tbgroups, $ldapentry[$this->groupname]); // Sauvegarde des membres du group - if(!empty($ldapentry[$this->groupmember])) { - if(!is_array($ldapentry[$this->groupmember])) { - $member=$ldapentry[$this->groupmember]; - if(!array_key_exists($member,$tbgroupmembers)) $tbgroupmembers[$member]=[]; - array_push($tbgroupmembers[$member],$ldapentry[$this->groupname]); - } - else { - foreach($ldapentry[$this->groupmember] as $member) { - if(!array_key_exists($member,$tbgroupmembers)) $tbgroupmembers[$member]=[]; - array_push($tbgroupmembers[$member],$ldapentry[$this->groupname]); + if (!empty($ldapentry[$this->groupmember])) { + if (!is_array($ldapentry[$this->groupmember])) { + $member = $ldapentry[$this->groupmember]; + if (!array_key_exists($member, $tbgroupmembers)) { + $tbgroupmembers[$member] = []; + } + array_push($tbgroupmembers[$member], $ldapentry[$this->groupname]); + } else { + foreach ($ldapentry[$this->groupmember] as $member) { + if (!array_key_exists($member, $tbgroupmembers)) { + $tbgroupmembers[$member] = []; + } + array_push($tbgroupmembers[$member], $ldapentry[$this->groupname]); } } } } - } - else { + } else { $this->writeln(''); $this->writeln('== GROUP ============================================'); - $this->writelnred(" > Synchronisation impossible il vous manque des paramétres ldap pour le faire"); + $this->writelnred(' > Synchronisation impossible il vous manque des paramétres ldap pour le faire'); } - // Synchronisation des users - if($fgsynchrousers) { + if ($fgsynchrousers) { $this->writeln(''); $this->writeln('== USER ============================================='); - $ldapentrys=$this->ldap->search($this->filteruser,[$this->username,$this->firstname,$this->lastname,$this->email,$this->avatar,$this->memberof],$this->baseuser); + $ldapentrys = $this->ldap->search($this->filteruser, [$this->username, $this->firstname, $this->lastname, $this->email, $this->avatar, $this->memberof], $this->baseuser); - foreach($ldapentrys as $ldapentry) { - $userother=$this->em->getRepository("App\Entity\User")->findOneBy(["email"=>$ldapentry[$this->email]]); - if($userother&&$userother->getUSername()!=$ldapentry[$this->username]) { - $this->writelnred(" > ".$ldapentry[$this->groupname]." = Impossible à synchroniser un autre user existe déjà avec ce mail"); + foreach ($ldapentrys as $ldapentry) { + $userother = $this->em->getRepository("App\Entity\User")->findOneBy(['email' => $ldapentry[$this->email]]); + if ($userother && $userother->getUSername() != $ldapentry[$this->username]) { + $this->writelnred(' > '.$ldapentry[$this->groupname].' = Impossible à synchroniser un autre user existe déjà avec ce mail'); continue; } - $userother=$this->em->getRepository("App\Entity\Registration")->findOneBy(["email"=>$ldapentry[$this->email]]); - if($userother&&$userother->getUSername()!=$ldapentry[$this->username]) { - $this->writelnred(" > ".$ldapentry[$this->username]." = Impossible à synchroniser un autre user existe déjà avec ce mail"); + $userother = $this->em->getRepository("App\Entity\Registration")->findOneBy(['email' => $ldapentry[$this->email]]); + if ($userother && $userother->getUSername() != $ldapentry[$this->username]) { + $this->writelnred(' > '.$ldapentry[$this->username].' = Impossible à synchroniser un autre user existe déjà avec ce mail'); continue; } // On recherche le user via le username $this->writeln(' > '.$ldapentry[$this->username]); - $user=$this->em->getRepository("App\Entity\User")->findOneBy(["username"=>$ldapentry[$this->username]]); - if(!$user) { - $user=new User(); + $user = $this->em->getRepository("App\Entity\User")->findOneBy(['username' => $ldapentry[$this->username]]); + if (!$user) { + $user = new User(); $user->setUsername($ldapentry[$this->username]); $user->setIsvisible(true); $user->setApikey(Uuid::uuid4()); - $user->setRole("ROLE_USER"); - $user->setAvatar("noavatar.png"); + $user->setRole('ROLE_USER'); + $user->setAvatar('noavatar.png'); - $uuid=Uuid::uuid4(); - $user->setPassword("PWD-".$ldapentry[$this->username]."-".$uuid); + $uuid = Uuid::uuid4(); + $user->setPassword('PWD-'.$ldapentry[$this->username].'-'.$uuid); $this->em->persist($user); } // Recherche du niveau01 - $niveau01=null; - if($user->getNiveau01()&&empty($user->getNiveau01()->getIdexternal())) - $niveau01=$user->getNiveau01(); - if(array_key_exists($ldapentry[$this->username],$tbniveau01members)) - $niveau01=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$tbniveau01members[$ldapentry[$this->username]][0]]); - if(!$niveau01) - $niveau01=$this->em->getRepository('App\Entity\Niveau01')->find(-1); + $niveau01 = null; + if ($user->getNiveau01() && empty($user->getNiveau01()->getIdexternal())) { + $niveau01 = $user->getNiveau01(); + } + if (array_key_exists($ldapentry[$this->username], $tbniveau01members)) { + $niveau01 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $tbniveau01members[$ldapentry[$this->username]][0]]); + } + if (!$niveau01) { + $niveau01 = $this->em->getRepository('App\Entity\Niveau01')->find(-1); + } // Mise à jour des attributs - if(!empty($ldapentry[$this->lastname])) $user->setLastname($ldapentry[$this->lastname]); - if(!empty($ldapentry[$this->firstname])) $user->setFirstname($ldapentry[$this->firstname]); - if(!empty($ldapentry[$this->email])) $user->setEmail($ldapentry[$this->email]); - if(!empty($ldapentry[$this->avatar])) $user->setAvatar($ldapentry[$this->avatar]); + if (!empty($ldapentry[$this->lastname])) { + $user->setLastname($ldapentry[$this->lastname]); + } + if (!empty($ldapentry[$this->firstname])) { + $user->setFirstname($ldapentry[$this->firstname]); + } + if (!empty($ldapentry[$this->email])) { + $user->setEmail($ldapentry[$this->email]); + } + if (!empty($ldapentry[$this->avatar])) { + $user->setAvatar($ldapentry[$this->avatar]); + } // Mise à jour du niveau01 - if($niveau01!=$user->getNiveau01()) $user->setNiveau02(null); + if ($niveau01 != $user->getNiveau01()) { + $user->setNiveau02(null); + } $user->setNiveau01($niveau01); - + // Mise à jour du role - if(in_array($ldapentry[$this->username],$this->container->getParameter("appAdmins"))) - $user->setRole("ROLE_ADMIN"); + if (in_array($ldapentry[$this->username], $this->container->getParameter('appAdmins'))) { + $user->setRole('ROLE_ADMIN'); + } // Sauvegarde en bdd - $this->em->flush(); + $this->em->flush(); // Sauvegarde du userldap - array_push($tbusers,$ldapentry[$this->username]); + array_push($tbusers, $ldapentry[$this->username]); // Inscription au groupe - if(array_key_exists($ldapentry[$this->username],$tbgroupmembers)) { - foreach($tbgroupmembers[$ldapentry[$this->username]] as $grouplabel) { - $group=$this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$grouplabel]); - if($group) { - $usergroup=$this->em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); - if(!$usergroup) { - $usergroup=new UserGroup(); + if (array_key_exists($ldapentry[$this->username], $tbgroupmembers)) { + foreach ($tbgroupmembers[$ldapentry[$this->username]] as $grouplabel) { + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $grouplabel]); + if ($group) { + $usergroup = $this->em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($user); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); $usergroup->setRolegroup(0); $this->em->persist($usergroup); - $this->em->flush(); + $this->em->flush(); } } } } // Desinscription des group ldap - foreach($ldapgroups as $group) { - if(!array_key_exists($ldapentry[$this->username],$tbgroupmembers)||!in_array($group->getLabel(),$tbgroupmembers[$ldapentry[$this->username]])) { - $usergroup=$this->em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); - if($usergroup) { + foreach ($ldapgroups as $group) { + if (!array_key_exists($ldapentry[$this->username], $tbgroupmembers) || !in_array($group->getLabel(), $tbgroupmembers[$ldapentry[$this->username]])) { + $usergroup = $this->em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if ($usergroup) { $this->em->remove($usergroup); $this->em->flush(); } } } - } - } - else { + } + } else { $this->writeln(''); $this->writeln('== USER ============================================='); - $this->writelnred(" > Synchronisation impossible il vous manque des paramétres ldap pour le faire"); - } + $this->writelnred(' > Synchronisation impossible il vous manque des paramétres ldap pour le faire'); + } // Purge des users - if($fgsynchropurgeusers) { + if ($fgsynchropurgeusers) { $this->writeln(''); $this->writeln('== PURGE USER ============================================='); - $users=$this->em->getRepository("App\Entity\User")->findAll(); - foreach($users as $user) { - if(!in_array($user->getUsername(),$tbusers)) { - if($user->getId()>0) { + $users = $this->em->getRepository("App\Entity\User")->findAll(); + foreach ($users as $user) { + if (!in_array($user->getUsername(), $tbusers)) { + if ($user->getId() > 0) { $this->writeln(' > '.$user->getUSername()); $this->em->remove($user); $this->em->flush(); @@ -411,17 +421,16 @@ class SynchroCommand extends Command } // Purge des groups - if($fgsynchropurgegroups) { + if ($fgsynchropurgegroups) { $this->writeln(''); $this->writeln('== PURGE GROUP ============================================='); - foreach($ldapgroups as $group) { - if(!in_array($group->getLabel(),$tbgroups)) { - if($group->getId()>0) { + foreach ($ldapgroups as $group) { + if (!in_array($group->getLabel(), $tbgroups)) { + if ($group->getId() > 0) { $this->writeln(' > '.$group->getLabel()); $this->em->remove($group); - } - else { + } else { $group->setLdapfilter(null); $group->setIdexternal(null); } @@ -429,27 +438,26 @@ class SynchroCommand extends Command $this->em->flush(); } } - } + } // Purge des niveau01s - if($fgsynchropurgeniveau01s) { + if ($fgsynchropurgeniveau01s) { $this->writeln(''); $this->writeln('== PURGE NIVEAU01 ============================================='); - foreach($ldapniveau01s as $niveau01) { - if(!in_array($niveau01->getLabel(),$tbniveau01s)) { - if($niveau01->getId()>0) { - $user=$this->em->getRepository("App\Entity\User")->findOneBy(["niveau01"=>$niveau01]); - if($user) { - $resetniveau01=$this->em->getRepository("App\Entity\User")->find(-1); + foreach ($ldapniveau01s as $niveau01) { + if (!in_array($niveau01->getLabel(), $tbniveau01s)) { + if ($niveau01->getId() > 0) { + $user = $this->em->getRepository("App\Entity\User")->findOneBy(['niveau01' => $niveau01]); + if ($user) { + $resetniveau01 = $this->em->getRepository("App\Entity\User")->find(-1); $user->setNiveau01($resetniveau01); $user->setNiveau02(null); } $this->writeln(' > '.$niveau01->getLabel()); $this->em->remove($niveau01); - } - else { + } else { $niveau01->setLdapfilter(null); $niveau01->setIdexternal(null); } @@ -457,32 +465,28 @@ class SynchroCommand extends Command $this->em->flush(); } } - } - + } return Command::SUCCESS; } - private function nine2ldap() { - $this->writelnred(''); - $this->writelnred('== app:Synchro'); + $this->writelnred('== app:Synchro'); $this->writelnred('=========================================================================================================='); // Synchronisation impossible si aucune connexion à l'annuaire - if(!$this->ldap->isNine2Ldap()) { - $this->writeln("Synchronisation impossible soit :"); + if (!$this->ldap->isNine2Ldap()) { + $this->writeln('Synchronisation impossible soit :'); $this->writeln("- connexion impossible à l'annuaire"); - $this->writeln("- appMasteridentity!=SQL"); + $this->writeln('- appMasteridentity!=SQL'); $this->writeln("- votre user ldap n'a pas de permission en écriture"); $this->writeln("- vous n'avez pas renseigné les bases de votre organisation"); return Command::FAILURE; } - $this->writeln(''); $this->writeln('====================================================='); $this->writeln('== SYNCHONISATION NINE TO LDAP ======================'); @@ -499,346 +503,365 @@ class SynchroCommand extends Command $this->writeln(''); $this->writeln('== USER ============================================='); - $users=$this->em->getRepository("App\Entity\User")->findAll(); - $attributes=$this->ldap->listAttributesUser(); - foreach($users as $user) { - $filter=str_replace("*",$user->getUsername(),$this->filteruser); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseuser); - if(empty($ldapentrys)) { - $this->writeln($user->getUsername()." = SUBMIT"); + $users = $this->em->getRepository("App\Entity\User")->findAll(); + $attributes = $this->ldap->listAttributesUser(); + foreach ($users as $user) { + $filter = str_replace('*', $user->getUsername(), $this->filteruser); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseuser); + if (empty($ldapentrys)) { + $this->writeln($user->getUsername().' = SUBMIT'); $this->ldap->addUser($user); - } - elseif($this->ldap->ismodifyUser($user,$ldapentrys[0])) { - $this->writeln($user->getUsername()." = UPDATE"); + } elseif ($this->ldap->ismodifyUser($user, $ldapentrys[0])) { + $this->writeln($user->getUsername().' = UPDATE'); $this->ldap->modifyUser($user); } } - $ldapentrys=$this->ldap->search($this->filteruser,$attributes,$this->baseuser); - foreach($ldapentrys as $ldapentry) { - $user=$this->em->getRepository("App\Entity\User")->findOneBy(["username"=>$ldapentry["uid"]]); - if(!$user) { - $this->writeln($ldapentry["uid"]." = DELETE"); - $dn=$this->ldap->getUserDN($ldapentry["uid"]); - $this->ldap->deleteByDN($dn); + $ldapentrys = $this->ldap->search($this->filteruser, $attributes, $this->baseuser); + foreach ($ldapentrys as $ldapentry) { + $user = $this->em->getRepository("App\Entity\User")->findOneBy(['username' => $ldapentry['uid']]); + if (!$user) { + $this->writeln($ldapentry['uid'].' = DELETE'); + $dn = $this->ldap->getUserDN($ldapentry['uid']); + $this->ldap->deleteByDN($dn); } } $this->writeln(''); $this->writeln('== GROUP ============================================'); - $groups=$this->em->getRepository("App\Entity\Group")->findAll(); - $attributes=$this->ldap->listAttributesGroup(); - foreach($groups as $group) { - if($group->getLdapfilter()) { + $groups = $this->em->getRepository("App\Entity\Group")->findAll(); + $attributes = $this->ldap->listAttributesGroup(); + foreach ($groups as $group) { + if ($group->getLdapfilter()) { $group->setLdapfilter(null); $this->em->flush(); } - $filter="gidnumber=".$group->getId(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->basegroup); - if(empty($ldapentrys)) { - $filter=str_replace("*",$group->getLabel(),$this->filtergroup); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseniveau01); + $filter = 'gidnumber='.$group->getId(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->basegroup); + if (empty($ldapentrys)) { + $filter = str_replace('*', $group->getLabel(), $this->filtergroup); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseniveau01); } - - if(empty($ldapentrys)) { - $this->writeln($group->getLabel()." = SUBMIT"); - $this->ldap->addGroup($group); - } - elseif($this->ldap->ismodifyGroup($group,$ldapentrys[0])) { - $this->writeln($group->getLabel()." = UPDATE"); - $this->ldap->modifyGroup($group,$ldapentrys[0]["cn"]); - } - } - $ldapentrys=$this->ldap->search($this->filtergroup,$attributes,$this->basegroup); - foreach($ldapentrys as $ldapentry) { - $group=$this->em->getRepository("App\Entity\Group")->find($ldapentry["gidnumber"]); - if(!$group) { - $this->writeln($ldapentry["cn"]." = DELETE"); - $dn=$this->ldap->getGroupDN($ldapentry["cn"]); - $this->ldap->deleteByDN($dn); + if (empty($ldapentrys)) { + $this->writeln($group->getLabel().' = SUBMIT'); + $this->ldap->addGroup($group); + } elseif ($this->ldap->ismodifyGroup($group, $ldapentrys[0])) { + $this->writeln($group->getLabel().' = UPDATE'); + $this->ldap->modifyGroup($group, $ldapentrys[0]['cn']); + } + } + + $ldapentrys = $this->ldap->search($this->filtergroup, $attributes, $this->basegroup); + foreach ($ldapentrys as $ldapentry) { + $group = $this->em->getRepository("App\Entity\Group")->find($ldapentry['gidnumber']); + if (!$group) { + $this->writeln($ldapentry['cn'].' = DELETE'); + $dn = $this->ldap->getGroupDN($ldapentry['cn']); + $this->ldap->deleteByDN($dn); } } $this->writeln(''); $this->writeln('== NIVEAU02 ========================================='); - $niveau02s=$this->em->getRepository("App\Entity\Niveau02")->findAll(); - $attributes=$this->ldap->listAttributesNiveau02(); - foreach($niveau02s as $niveau02) { - $filter="gidnumber=".$niveau02->getId(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseniveau02); - if(empty($ldapentrys)) { - $filter=str_replace("*",$niveau02->getLabel(),$this->filtergroup); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseniveau01); + $niveau02s = $this->em->getRepository("App\Entity\Niveau02")->findAll(); + $attributes = $this->ldap->listAttributesNiveau02(); + foreach ($niveau02s as $niveau02) { + $filter = 'gidnumber='.$niveau02->getId(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseniveau02); + if (empty($ldapentrys)) { + $filter = str_replace('*', $niveau02->getLabel(), $this->filtergroup); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseniveau01); } - - if(empty($ldapentrys)) { - $this->writeln($niveau02->getLabel()." = SUBMIT"); + + if (empty($ldapentrys)) { + $this->writeln($niveau02->getLabel().' = SUBMIT'); $this->ldap->addNiveau02($niveau02); + } elseif ($this->ldap->ismodifyNiveau02($niveau02, $ldapentrys[0])) { + $this->writeln($niveau02->getLabel().' = UPDATE'); + $this->ldap->modifyNiveau02($niveau02, $ldapentrys[0]['cn']); } - elseif($this->ldap->ismodifyNiveau02($niveau02,$ldapentrys[0])) { - $this->writeln($niveau02->getLabel()." = UPDATE"); - $this->ldap->modifyNiveau02($niveau02,$ldapentrys[0]["cn"]); - } - } - - $ldapentrys=$this->ldap->search($this->filtergroup,$attributes,$this->baseniveau02); - foreach($ldapentrys as $ldapentry) { - $niveau02=$this->em->getRepository("App\Entity\Niveau02")->find($ldapentry["gidnumber"]); - if(!$niveau02) { - $this->writeln($ldapentry["cn"]." = DELETE"); - $dn=$this->ldap->getNiveau02DN($ldapentry["cn"]); - $this->ldap->deleteByDN($dn); + } + + $ldapentrys = $this->ldap->search($this->filtergroup, $attributes, $this->baseniveau02); + foreach ($ldapentrys as $ldapentry) { + $niveau02 = $this->em->getRepository("App\Entity\Niveau02")->find($ldapentry['gidnumber']); + if (!$niveau02) { + $this->writeln($ldapentry['cn'].' = DELETE'); + $dn = $this->ldap->getNiveau02DN($ldapentry['cn']); + $this->ldap->deleteByDN($dn); } } $this->writeln(''); $this->writeln('== NIVEAU01 ========================================='); - $niveau01s=$this->em->getRepository("App\Entity\Niveau01")->findAll(); - $attributes=$this->ldap->listAttributesNiveau01(); - foreach($niveau01s as $niveau01) { - if($niveau01->getLdapfilter()) { + $niveau01s = $this->em->getRepository("App\Entity\Niveau01")->findAll(); + $attributes = $this->ldap->listAttributesNiveau01(); + foreach ($niveau01s as $niveau01) { + if ($niveau01->getLdapfilter()) { $niveau01->setLdapfilter(null); $this->em->flush(); } - $filter="gidnumber=".$niveau01->getId(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseniveau01); - if(empty($ldapentrys)) { - $filter=str_replace("*",$niveau01->getLabel(),$this->filtergroup); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->baseniveau01); + $filter = 'gidnumber='.$niveau01->getId(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseniveau01); + if (empty($ldapentrys)) { + $filter = str_replace('*', $niveau01->getLabel(), $this->filtergroup); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->baseniveau01); } - if(empty($ldapentrys)) { - $this->writeln($niveau01->getLabel()." = SUBMIT"); + if (empty($ldapentrys)) { + $this->writeln($niveau01->getLabel().' = SUBMIT'); $this->ldap->addNiveau01($niveau01); - } - elseif($this->ldap->ismodifyNiveau01($niveau01,$ldapentrys[0])) { - $this->writeln($niveau01->getLabel()." = UPDATE"); - $this->ldap->modifyNiveau01($niveau01,$ldapentrys[0]["cn"]); + } elseif ($this->ldap->ismodifyNiveau01($niveau01, $ldapentrys[0])) { + $this->writeln($niveau01->getLabel().' = UPDATE'); + $this->ldap->modifyNiveau01($niveau01, $ldapentrys[0]['cn']); } } - - $ldapentrys=$this->ldap->search($this->filtergroup,$attributes,$this->baseniveau01); - foreach($ldapentrys as $ldapentry) { - $niveau01=$this->em->getRepository("App\Entity\Niveau01")->find($ldapentry["gidnumber"]); - if(!$niveau01) { - $this->writeln($ldapentry["cn"]." = DELETE"); - $dn=$this->ldap->getNiveau01DN($ldapentry["cn"]); - $this->ldap->deleteByDN($dn); + + $ldapentrys = $this->ldap->search($this->filtergroup, $attributes, $this->baseniveau01); + foreach ($ldapentrys as $ldapentry) { + $niveau01 = $this->em->getRepository("App\Entity\Niveau01")->find($ldapentry['gidnumber']); + if (!$niveau01) { + $this->writeln($ldapentry['cn'].' = DELETE'); + $dn = $this->ldap->getNiveau01DN($ldapentry['cn']); + $this->ldap->deleteByDN($dn); } } - + return Command::SUCCESS; } private function nine2nine() { - $this->writelnred(''); - $this->writelnred('== app:Synchro'); + $this->writelnred('== app:Synchro'); $this->writelnred('=========================================================================================================='); - // Synchronisation ldap2nine possible uniquement si appMasteridentity=NINE - if($this->appMasteridentity!="NINE") { - $this->writeln("Synchronisation impossible si appMasteridentity!=NINE"); + if ('NINE' != $this->appMasteridentity) { + $this->writeln('Synchronisation impossible si appMasteridentity!=NINE'); + return Command::FAILURE; } - $nineurl = $this->container->getParameter("nineUrl"); - $ninesecret = $this->container->getParameter("nineSecret"); - if(!$nineurl||!$ninesecret) { - $this->writeln("Synchronisation impossible soit parametres NINE_URL et/ou NINE_SECRET manquant"); + $nineurl = $this->container->getParameter('nineUrl'); + $ninesecret = $this->container->getParameter('nineSecret'); + if (!$nineurl || !$ninesecret) { + $this->writeln('Synchronisation impossible soit parametres NINE_URL et/ou NINE_SECRET manquant'); + return Command::FAILURE; } - $nineurl.="/rest/"; + $nineurl .= '/rest/'; $this->writeln(''); $this->writeln('====================================================='); $this->writeln('== SYNCHONISATION NINE TO NINE ======================'); $this->writeln('====================================================='); - $nineniveau01s=$this->em->createQueryBuilder()->select('entity')->from('App:Niveau01','entity')->where('entity.idexternal IS NOT NULL')->getQuery()->getResult(); - $ninegroups=$this->em->createQueryBuilder()->select('entity')->from('App:Group','entity')->where('entity.idexternal IS NOT NULL')->getQuery()->getResult(); + $nineniveau01s = $this->em->createQueryBuilder()->select('entity')->from('App:Niveau01', 'entity')->where('entity.idexternal IS NOT NULL')->getQuery()->getResult(); + $ninegroups = $this->em->createQueryBuilder()->select('entity')->from('App:Group', 'entity')->where('entity.idexternal IS NOT NULL')->getQuery()->getResult(); - $tbniveau01members=[]; - $tbgroupmembers=[]; - $tbniveau01s=[]; - $tbgroups=[]; - $tbusers=[]; + $tbniveau01members = []; + $tbgroupmembers = []; + $tbniveau01s = []; + $tbgroups = []; + $tbusers = []; + + $fgsynchropurgeniveau01s = $this->synchropurgeniveau01; + $fgsynchropurgegroups = $this->synchropurgegroup; + $fgsynchropurgeusers = $this->synchropurgeuser; - $fgsynchropurgeniveau01s=($this->synchropurgeniveau01); - $fgsynchropurgegroups=($this->synchropurgegroup); - $fgsynchropurgeusers=($this->synchropurgeuser); - $this->writeln(''); $this->writeln('== NIVEAU01 ========================================='); - - $response = $this->apiservice->run("GET",$nineurl."getAllNiveau01s",null,["key"=>$ninesecret]); - if($response->code!="200") return Command::FAILURE; - foreach($response->body as $nineniveau01 ) { - $niveau01other=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$nineniveau01->niveau01label]); - if($niveau01other&&$niveau01other->getIdexternal()!=$nineniveau01->niveau01id) { - $this->writelnred(" > ".$nineniveau01->niveau01label." = Impossible à synchroniser un autre niveau01 existe déjà avec ce label"); + + $response = $this->apiservice->run('GET', $nineurl.'getAllNiveau01s', null, ['key' => $ninesecret]); + if ('200' != $response->code) { + return Command::FAILURE; + } + foreach ($response->body as $nineniveau01) { + $niveau01other = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $nineniveau01->niveau01label]); + if ($niveau01other && $niveau01other->getIdexternal() != $nineniveau01->niveau01id) { + $this->writelnred(' > '.$nineniveau01->niveau01label.' = Impossible à synchroniser un autre niveau01 existe déjà avec ce label'); continue; } - // On recherche le groupe via le gid + // On recherche le groupe via le gid $this->writeln(' > '.$nineniveau01->niveau01label); - $niveau01=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["idexternal"=>$nineniveau01->niveau01id]); - if(!$niveau01) { - $niveau01=new Niveau01(); + $niveau01 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['idexternal' => $nineniveau01->niveau01id]); + if (!$niveau01) { + $niveau01 = new Niveau01(); $niveau01->setApikey(Uuid::uuid4()); $this->em->persist($niveau01); } $niveau01->setIdexternal($nineniveau01->niveau01id); $niveau01->setLabel($nineniveau01->niveau01label); - $this->em->flush(); - + $this->em->flush(); + // Sauvegarde du niveau01nine - array_push($tbniveau01s,$nineniveau01->niveau01label); + array_push($tbniveau01s, $nineniveau01->niveau01label); // Sauvegarde des membres du niveau01 - if(!empty($nineniveau01->niveau01users)) { - foreach($nineniveau01->niveau01users as $member) { - if(!array_key_exists($member->userlogin,$tbniveau01members)) $tbniveau01members[$member->userlogin]=[]; - array_push($tbniveau01members[$member->userlogin],$nineniveau01->niveau01label); + if (!empty($nineniveau01->niveau01users)) { + foreach ($nineniveau01->niveau01users as $member) { + if (!array_key_exists($member->userlogin, $tbniveau01members)) { + $tbniveau01members[$member->userlogin] = []; + } + array_push($tbniveau01members[$member->userlogin], $nineniveau01->niveau01label); } - } + } } $this->writeln(''); $this->writeln('== GROUP ============================================'); - $response = $this->apiservice->run("GET",$nineurl."getAllGroups",null,["key"=>$ninesecret]); - if($response->code!="200") return Command::FAILURE; - foreach($response->body as $ninegroup ) { - $groupother=$this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$ninegroup->grouplabel]); - if($groupother&&$groupother->getIdexternal()!=$ninegroup->groupid) { - $this->writelnred(" > ".$ninegroup->grouplabel." = Impossible à synchroniser un autre group existe déjà avec ce label"); + $response = $this->apiservice->run('GET', $nineurl.'getAllGroups', null, ['key' => $ninesecret]); + if ('200' != $response->code) { + return Command::FAILURE; + } + foreach ($response->body as $ninegroup) { + $groupother = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $ninegroup->grouplabel]); + if ($groupother && $groupother->getIdexternal() != $ninegroup->groupid) { + $this->writelnred(' > '.$ninegroup->grouplabel.' = Impossible à synchroniser un autre group existe déjà avec ce label'); continue; } - // On recherche le groupe via le gid + // On recherche le groupe via le gid $this->writeln(' > '.$ninegroup->grouplabel); - $group=$this->em->getRepository("App\Entity\Group")->findOneBy(["idexternal"=>$ninegroup->groupid]); - if(!$group) { - $group=new Group(); + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['idexternal' => $ninegroup->groupid]); + if (!$group) { + $group = new Group(); $group->setIsopen(false); $group->setIsworkgroup(false); - $group->setApikey(Uuid::uuid4()); + $group->setApikey(Uuid::uuid4()); $this->em->persist($group); } $group->setIdexternal($ninegroup->groupid); $group->setLabel($ninegroup->grouplabel); - $this->em->flush(); - + $this->em->flush(); + // Sauvegarde du groupnine - array_push($tbgroups,$ninegroup->grouplabel); + array_push($tbgroups, $ninegroup->grouplabel); // Sauvegarde des membres du group - if(!empty($ninegroup->groupusers)) { - foreach($ninegroup->groupusers as $member) { - if(!array_key_exists($member->userlogin,$tbgroupmembers)) $tbgroupmembers[$member->userlogin]=[]; - array_push($tbgroupmembers[$member->userlogin],$ninegroup->grouplabel); + if (!empty($ninegroup->groupusers)) { + foreach ($ninegroup->groupusers as $member) { + if (!array_key_exists($member->userlogin, $tbgroupmembers)) { + $tbgroupmembers[$member->userlogin] = []; + } + array_push($tbgroupmembers[$member->userlogin], $ninegroup->grouplabel); } - } + } } - $this->writeln(''); $this->writeln('== USER ============================================='); - $response = $this->apiservice->run("GET",$nineurl."getAllUsers",null,["key"=>$ninesecret]); - if($response->code!="200") return Command::FAILURE; - $nineusers=$response->body; + $response = $this->apiservice->run('GET', $nineurl.'getAllUsers', null, ['key' => $ninesecret]); + if ('200' != $response->code) { + return Command::FAILURE; + } + $nineusers = $response->body; - foreach($nineusers as $nineuser) { - $userother=$this->em->getRepository("App\Entity\User")->findOneBy(["email"=>$nineuser->useremail]); - if($userother&&$userother->getUsername()!=$nineuser->userlogin) { - $this->writelnred(" > ".$nineuser->userlogin." = Impossible à synchroniser un autre user existe déjà avec ce mail"); + foreach ($nineusers as $nineuser) { + $userother = $this->em->getRepository("App\Entity\User")->findOneBy(['email' => $nineuser->useremail]); + if ($userother && $userother->getUsername() != $nineuser->userlogin) { + $this->writelnred(' > '.$nineuser->userlogin.' = Impossible à synchroniser un autre user existe déjà avec ce mail'); continue; } - $userother=$this->em->getRepository("App\Entity\Registration")->findOneBy(["email"=>$nineuser->useremail]); - if($userother&&$userother->getUSername()!=$nineuser->userlogin) { - $this->writelnred(" > ".$nineuser->userlogin." = Impossible à synchroniser un autre user existe déjà avec ce mail"); + $userother = $this->em->getRepository("App\Entity\Registration")->findOneBy(['email' => $nineuser->useremail]); + if ($userother && $userother->getUSername() != $nineuser->userlogin) { + $this->writelnred(' > '.$nineuser->userlogin.' = Impossible à synchroniser un autre user existe déjà avec ce mail'); continue; } // On recherche le user via le username $this->writeln(' > '.$nineuser->userlogin); - $user=$this->em->getRepository("App\Entity\User")->findOneBy(["username"=>$nineuser->userlogin]); - if(!$user) { - $user=new User(); + $user = $this->em->getRepository("App\Entity\User")->findOneBy(['username' => $nineuser->userlogin]); + if (!$user) { + $user = new User(); $user->setUsername($nineuser->userlogin); $user->setIsvisible(true); $user->setApikey(Uuid::uuid4()); - $user->setRole("ROLE_USER"); + $user->setRole('ROLE_USER'); $user->setAvatar($nineuser->useravatar); - $uuid=Uuid::uuid4(); - $user->setPassword("PWD-".$nineuser->userlogin."-".$uuid); + $uuid = Uuid::uuid4(); + $user->setPassword('PWD-'.$nineuser->userlogin.'-'.$uuid); $this->em->persist($user); } // Recherche du niveau01 - $niveau01=null; - if($user->getNiveau01()&&empty($user->getNiveau01()->getIdexternal())) - $niveau01=$user->getNiveau01(); - if(array_key_exists($nineuser->userlogin,$tbniveau01members)) - $niveau01=$this->em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$tbniveau01members[$nineuser->userlogin][0]]); - if(!$niveau01) - $niveau01=$this->em->getRepository('App\Entity\Niveau01')->find(-1); + $niveau01 = null; + if ($user->getNiveau01() && empty($user->getNiveau01()->getIdexternal())) { + $niveau01 = $user->getNiveau01(); + } + if (array_key_exists($nineuser->userlogin, $tbniveau01members)) { + $niveau01 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $tbniveau01members[$nineuser->userlogin][0]]); + } + if (!$niveau01) { + $niveau01 = $this->em->getRepository('App\Entity\Niveau01')->find(-1); + } // Mise à jour des attributs - if(!empty($nineuser->userlastname)) $user->setLastname($nineuser->userlastname); - if(!empty($nineuser->userfirstname)) $user->setFirstname($nineuser->userfirstname); - if(!empty($nineuser->useremail)) $user->setEmail($nineuser->useremail); - if(!empty($nineuser->useravatar)) $user->setAvatar($nineuser->useravatar); + if (!empty($nineuser->userlastname)) { + $user->setLastname($nineuser->userlastname); + } + if (!empty($nineuser->userfirstname)) { + $user->setFirstname($nineuser->userfirstname); + } + if (!empty($nineuser->useremail)) { + $user->setEmail($nineuser->useremail); + } + if (!empty($nineuser->useravatar)) { + $user->setAvatar($nineuser->useravatar); + } // Mise à jour du niveau01 - if($niveau01!=$user->getNiveau01()) $user->setNiveau02(null); + if ($niveau01 != $user->getNiveau01()) { + $user->setNiveau02(null); + } $user->setNiveau01($niveau01); - + // Mise à jour du role - if(in_array($nineuser->userlogin,$this->container->getParameter("appAdmins"))) - $user->setRole("ROLE_ADMIN"); + if (in_array($nineuser->userlogin, $this->container->getParameter('appAdmins'))) { + $user->setRole('ROLE_ADMIN'); + } // Sauvegarde en bdd - $this->em->flush(); + $this->em->flush(); // Sauvegarde du userldap - array_push($tbusers,$nineuser->userlogin); + array_push($tbusers, $nineuser->userlogin); // Inscription au groupe - if(array_key_exists($nineuser->userlogin,$tbgroupmembers)) { - foreach($tbgroupmembers[$nineuser->userlogin] as $grouplabel) { - $group=$this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$grouplabel]); - if($group) { - $usergroup=$this->em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); - if(!$usergroup) { - $usergroup=new UserGroup(); + if (array_key_exists($nineuser->userlogin, $tbgroupmembers)) { + foreach ($tbgroupmembers[$nineuser->userlogin] as $grouplabel) { + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $grouplabel]); + if ($group) { + $usergroup = $this->em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($user); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); $usergroup->setRolegroup(0); $this->em->persist($usergroup); - $this->em->flush(); + $this->em->flush(); } } } } // Desinscription des group ldap - foreach($ninegroups as $group) { - if(!array_key_exists($nineuser->userlogin,$tbgroupmembers)||!in_array($group->getLabel(),$tbgroupmembers[$nineuser->userlogin])) { - $usergroup=$this->em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); - if($usergroup) { + foreach ($ninegroups as $group) { + if (!array_key_exists($nineuser->userlogin, $tbgroupmembers) || !in_array($group->getLabel(), $tbgroupmembers[$nineuser->userlogin])) { + $usergroup = $this->em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if ($usergroup) { $this->em->remove($usergroup); $this->em->flush(); } @@ -846,16 +869,15 @@ class SynchroCommand extends Command } } - // Purge des users - if($fgsynchropurgeusers) { + if ($fgsynchropurgeusers) { $this->writeln(''); $this->writeln('== PURGE USER ============================================='); - $users=$this->em->getRepository("App\Entity\User")->findAll(); - foreach($users as $user) { - if(!in_array($user->getUsername(),$tbusers)) { - if($user->getId()>0) { + $users = $this->em->getRepository("App\Entity\User")->findAll(); + foreach ($users as $user) { + if (!in_array($user->getUsername(), $tbusers)) { + if ($user->getId() > 0) { $this->writeln(' > '.$user->getUsername()); $this->em->remove($user); $this->em->flush(); @@ -865,17 +887,16 @@ class SynchroCommand extends Command } // Purge des groups - if($fgsynchropurgegroups) { + if ($fgsynchropurgegroups) { $this->writeln(''); $this->writeln('== PURGE GROUP ============================================='); - foreach($ninegroups as $group) { - if(!in_array($group->getLabel(),$tbgroups)) { - if($group->getId()>0) { + foreach ($ninegroups as $group) { + if (!in_array($group->getLabel(), $tbgroups)) { + if ($group->getId() > 0) { $this->writeln(' > '.$group->getLabel()); $this->em->remove($group); - } - else { + } else { $group->setLdapfilter(null); $group->setIdexternal(null); } @@ -883,27 +904,26 @@ class SynchroCommand extends Command $this->em->flush(); } } - } + } // Purge des niveau01s - if($fgsynchropurgeniveau01s) { + if ($fgsynchropurgeniveau01s) { $this->writeln(''); $this->writeln('== PURGE NIVEAU01 ============================================='); - foreach($nineniveau01s as $niveau01) { - if(!in_array($niveau01->getLabel(),$tbniveau01s)) { - if($niveau01->getId()>0) { - $user=$this->em->getRepository("App\Entity\User")->findOneBy(["niveau01"=>$niveau01]); - if($user) { - $resetniveau01=$this->em->getRepository("App\Entity\User")->find(-1); + foreach ($nineniveau01s as $niveau01) { + if (!in_array($niveau01->getLabel(), $tbniveau01s)) { + if ($niveau01->getId() > 0) { + $user = $this->em->getRepository("App\Entity\User")->findOneBy(['niveau01' => $niveau01]); + if ($user) { + $resetniveau01 = $this->em->getRepository("App\Entity\User")->find(-1); $user->setNiveau01($resetniveau01); $user->setNiveau02(null); } $this->writeln(' > '.$niveau01->getLabel()); $this->em->remove($niveau01); - } - else { + } else { $niveau01->setLdapfilter(null); $niveau01->setIdexternal(null); } @@ -911,59 +931,61 @@ class SynchroCommand extends Command $this->em->flush(); } } - } - + } return Command::SUCCESS; - } - private function writelnred($string) { + private function writelnred($string) + { $this->output->writeln(''.$string.''); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); } - - private function writeln($string) { + + private function writeln($string) + { $this->output->writeln($string); $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n"); - } + } - protected function addUser($niveau01,$username,$firstname,$lastname,$email,$usersadmin) { + protected function addUser($niveau01, $username, $firstname, $lastname, $email, $usersadmin) + { $user = new User(); $user->setUsername($username); $user->setLastname($lastname); $user->setFirstname($firstname); - $user->setEmail($email); + $user->setEmail($email); $user->setNiveau01($niveau01); $user->setSiren($niveau01->getSiren()); $user->setVisible(true); - $user->setAuthlevel("simple"); - $user->setBelongingpopulation("agent"); + $user->setAuthlevel('simple'); + $user->setBelongingpopulation('agent'); - $uuid=Uuid::uuid4(); - $user->setPassword("PWD-".$username."-".$uuid); + $uuid = Uuid::uuid4(); + $user->setPassword('PWD-'.$username.'-'.$uuid); - if(in_array($username,$usersadmin)) - $user->setRole("ROLE_ADMIN"); - else { - $user->setRole("ROLE_USER"); - } + if (in_array($username, $usersadmin)) { + $user->setRole('ROLE_ADMIN'); + } else { + $user->setRole('ROLE_USER'); + } $this->em->persist($user); $this->em->flush(); } - protected function modUser($user,$username,$firstname,$lastname,$email,$usersadmin) { + protected function modUser($user, $username, $firstname, $lastname, $email, $usersadmin) + { $user->setLastname($lastname); $user->setFirstname($firstname); $user->setEmail($email); - if(in_array($username,$usersadmin)) - $user->setRole("ROLE_ADMIN"); + if (in_array($username, $usersadmin)) { + $user->setRole('ROLE_ADMIN'); + } $this->em->persist($user); $this->em->flush(); } - } diff --git a/src/Controller/AuditController.php b/src/Controller/AuditController.php index 726ce18..c2eac99 100644 --- a/src/Controller/AuditController.php +++ b/src/Controller/AuditController.php @@ -1,38 +1,36 @@ getRepository($this->entity)->findBy(["entityname"=>$entityname]); + private $data = 'audit'; + private $entity = "App\Entity\Audit"; + private $twig = 'Audit/'; + private $route = 'app_admin_audit'; - return $this->render($this->twig.'list.html.twig',[ - $this->data."s" => $datas, - "entityname" => $entityname, - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, + public function list($entityname, $access, ManagerRegistry $em): Response + { + $datas = $em->getRepository($this->entity)->findBy(['entityname' => $entityname]); + + return $this->render($this->twig.'list.html.twig', [ + $this->data.'s' => $datas, + 'entityname' => $entityname, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, ]); } - public function auditrender($entityname,$entityid,$access,ManagerRegistry $em): Response - { - $datas = $em->getRepository($this->entity)->findBy(["entityname"=>$entityname,"entityid"=>$entityid]); - + public function auditrender($entityname, $entityid, $access, ManagerRegistry $em): Response + { + $datas = $em->getRepository($this->entity)->findBy(['entityname' => $entityname, 'entityid' => $entityid]); + /* if($entityname=="User") { $user=$em->getRepository("App\Entity\User")->find($entityid); @@ -52,8 +50,8 @@ class AuditController extends AbstractController } */ - return $this->render($this->twig.'render.html.twig',[ - $this->data."s" => $datas, + return $this->render($this->twig.'render.html.twig', [ + $this->data.'s' => $datas, ]); } -} \ No newline at end of file +} diff --git a/src/Controller/ConfigController.php b/src/Controller/ConfigController.php index 2c940e6..9ab4249 100644 --- a/src/Controller/ConfigController.php +++ b/src/Controller/ConfigController.php @@ -1,86 +1,87 @@ render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function listrender($access,$category,ManagerRegistry $em): Response - { - $datas = $em->getRepository($this->entity)->findBy(["visible"=>true,"category"=>$category]); + public function listrender($access, $category, ManagerRegistry $em): Response + { + $datas = $em->getRepository($this->entity)->findBy(['visible' => true, 'category' => $category]); - return $this->render($this->twig.'render.html.twig',[ - $this->data."s" => $datas, + return $this->render($this->twig.'render.html.twig', [ + $this->data.'s' => $datas, ]); } - public function update($access,$id,Request $request,ManagerRegistry $em): Response + public function update($access, $id, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if(!$data->getValue()) + $data = $em->getRepository($this->entity)->find($id); + if (!$data->getValue()) { $data->setValue($request->getSession()->get($data->getId())); + } // Création du formulaire - $form = $this->createForm(Form::class,$data,array("mode"=>"update","id"=>$data->getId(),"type"=>$data->getType(),"required"=>$data->isRequired())); + $form = $this->createForm(Form::class, $data, ['mode' => 'update', 'id' => $data->getId(), 'type' => $data->getType(), 'required' => $data->isRequired()]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); $em->getManager()->flush(); // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'form' => $form->createView() + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'form' => $form->createView(), ]); } - public function delete($access,$id,Request $request,ManagerRegistry $em): Response + public function delete($access, $id, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $config=$em->getRepository($this->entity)->find($id); - if(!$config->isRequired()) { - $config->setValue(""); - $em->getManager()->flush(); + $config = $em->getRepository($this->entity)->find($id); + if (!$config->isRequired()) { + $config->setValue(''); + $em->getManager()->flush(); } + return $this->redirectToRoute($this->route); } public function logo($access): Response { return $this->render($this->twig.'logo.html.twig'); - } -} \ No newline at end of file + } +} diff --git a/src/Controller/CronController.php b/src/Controller/CronController.php index abd62ed..a390309 100644 --- a/src/Controller/CronController.php +++ b/src/Controller/CronController.php @@ -2,183 +2,186 @@ namespace App\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\JsonResponse; +use App\Form\CronType as Form; use Doctrine\Persistence\ManagerRegistry; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\ResponseHeaderBag; -use App\Form\CronType as Form; - class CronController extends AbstractController { - private $data="cron"; - private $entity="App\Entity\Cron"; - private $twig="Cron/"; - private $route="app_admin_cron"; - + private $data = 'cron'; + private $entity = "App\Entity\Cron"; + private $twig = 'Cron/'; + private $route = 'app_admin_cron'; + public function list($access): Response - { - return $this->render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function tablelist(Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; + public function tablelist(Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; // Nombre total d'enregistrement - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - $totalf= $em->getManager()->createQueryBuilder() + } else { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.command LIKE :value OR entity.description LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('entity')->from($this->entity,'entity'); - if($search&&$search["value"]!="") { - $qb ->andWhere('entity.command LIKE :value OR entity.description LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + $qb->select('entity')->from($this->entity, 'entity'); + if ($search && '' != $search['value']) { + $qb->andWhere('entity.command LIKE :value OR entity.description LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - if($ordercolumn) { - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.nextexecdate',$orderdir); - break; + if ($ordercolumn) { + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.nextexecdate', $orderdir); + break; - case 2 : - $qb->orderBy('entity.command',$orderdir); - break; + case 2: + $qb->orderBy('entity.command', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - $action.="$data->getId()))."'>"; + $action = ''; + $action .= " $data->getId()])."'>"; - $tmp=array(); - array_push($tmp,$action); - array_push($tmp,$data->getNextexecdate()->format("d/m/Y H:i")); - array_push($tmp,$data->getCommand()); - array_push($tmp,$data->getDescription()); - array_push($tmp,$data->getStatutLabel()); + $tmp = []; + array_push($tmp, $action); + array_push($tmp, $data->getNextexecdate()->format('d/m/Y H:i')); + array_push($tmp, $data->getCommand()); + array_push($tmp, $data->getDescription()); + array_push($tmp, $data->getStatutLabel()); - array_push($output["data"],$tmp); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + ]); // Récupération des data du formulaire $form->handleRequest($request); // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); $em->getManager()->flush(); // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'form' => $form->createView(), - 'access' => $access, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'form' => $form->createView(), + 'access' => $access, ]); } public function log() { return $this->render($this->twig.'logs.html.twig', [ - 'useheader' => true, - 'usesidebar' => true, + 'useheader' => true, + 'usesidebar' => true, ]); - } + } public function getlog(Request $request, $id) { - $path = $this->getParameter('kernel.project_dir'); - if($id=="dump") - $file = $path . '/var/log/' . $this->getParameter("appAlias") . '.sql'; - else - $file = $path . '/var/log/'.$id.'.log'; - - $fs = new Filesystem(); - if($fs->exists($file)) { - $response = new BinaryFileResponse($file); - $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT); - return $response; - } - else return $this->redirectToRoute($this->route."_log"); - } - - - protected function getErrorForm($id,$form,$request,$data,$mode) { - if ($form->get('submit')->isClicked()&&$mode=="delete") { + if ('dump' == $id) { + $file = $path.'/var/log/'.$this->getParameter('appAlias').'.sql'; + } else { + $file = $path.'/var/log/'.$id.'.log'; } - if ($form->get('submit')->isClicked() && $mode=="submit") { + $fs = new Filesystem(); + if ($fs->exists($file)) { + $response = new BinaryFileResponse($file); + $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT); + + return $response; + } else { + return $this->redirectToRoute($this->route.'_log'); + } + } + + protected function getErrorForm($id, $form, $request, $data, $mode) + { + if ($form->get('submit')->isClicked() && 'delete' == $mode) { + } + + if ($form->get('submit')->isClicked() && 'submit' == $mode) { } if ($form->get('submit')->isClicked() && !$form->isValid()) { $errors = $form->getErrors(); - foreach( $errors as $error ) { - $request->getSession()->getFlashBag()->add("error", $error->getMessage()); + foreach ($errors as $error) { + $request->getSession()->getFlashBag()->add('error', $error->getMessage()); } } - } + } } diff --git a/src/Controller/CropController.php b/src/Controller/CropController.php index e2969b0..e6b96b9 100644 --- a/src/Controller/CropController.php +++ b/src/Controller/CropController.php @@ -2,14 +2,14 @@ namespace App\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Component\Form\Extension\Core\Type\HiddenType; -use Symfony\Component\Filesystem\Filesystem; -use Symfony\Component\HttpKernel\KernelInterface; -use Symfony\Component\HttpFoundation\Response; use App\Service\MinioService; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\KernelInterface; class CropController extends AbstractController { @@ -23,81 +23,82 @@ class CropController extends AbstractController } // Etape 01 - Téléchargement de l'image - public function crop01($type,$reportinput): Response + public function crop01($type, $reportinput): Response { - return $this->render('Crop/crop01.html.twig',[ - 'useheader' => false, - 'usesidebar' => false, - 'type' => $type, - 'reportinput' => $reportinput + return $this->render('Crop/crop01.html.twig', [ + 'useheader' => false, + 'usesidebar' => false, + 'type' => $type, + 'reportinput' => $reportinput, ]); } // Etape 02 - Couper votre l'image - public function crop02($type,$reportinput,Request $request) + public function crop02($type, $reportinput, Request $request) { // Récupération de l'image à cropper - $file=$request->query->get('file'); - $large_image_location=$this->minio->download($type."/".$file,$type."/".$file,true); + $file = $request->query->get('file'); + $large_image_location = $this->minio->download($type.'/'.$file, $type.'/'.$file, true); // Récupérer les tailles de l'image - $width = $this->getWidth($large_image_location); - $height = $this->getHeight($large_image_location); - $max_height=null; - $max_width=null; - $ratio=null; + $width = $this->getWidth($large_image_location); + $height = $this->getHeight($large_image_location); + $max_height = null; + $max_width = null; + $ratio = null; // Définir le pourcentage de réduction de l'image - switch ($type) { - case "illustration": - $max_height=0; - $ratio="1:1"; - break; - - case "avatar": - $max_height=900; - $max_width=900; - $ratio="1:1"; - break; - case "header": - $max_height=1600; - $max_width=1600; - $ratio="16:2"; + switch ($type) { + case 'illustration': + $max_height = 0; + $ratio = '1:1'; + break; + + case 'avatar': + $max_height = 900; + $max_width = 900; + $ratio = '1:1'; + break; + case 'header': + $max_height = 1600; + $max_width = 1600; + $ratio = '16:2'; + break; + case 'hero': + $max_height = 1600; + $max_width = 1600; + $ratio = '16:9'; + break; + case 'image': + $max_height = 1600; + $max_width = 1600; + $ratio = '1:1'; break; - case "hero": - $max_height=1600; - $max_width=1600; - $ratio="16:9"; - break; - case "image": - $max_height=1600; - $max_width=1600; - $ratio="1:1"; - break; } - - if($max_height>0) { - $scale = $max_height/$height; - if(($width*$scale)>$max_width) { - $scale = $max_width/$width; - } - $this->resizeImage($large_image_location,$width,$height,$scale); - $this->minio->upload($large_image_location,$type."/".$file,false); - } - else $scale=1; + + if ($max_height > 0) { + $scale = $max_height / $height; + if (($width * $scale) > $max_width) { + $scale = $max_width / $width; + } + $this->resizeImage($large_image_location, $width, $height, $scale); + $this->minio->upload($large_image_location, $type.'/'.$file, false); + } else { + $scale = 1; + } // Construction du formulaire - $submited=false; + $submited = false; $form = $this->createFormBuilder() - ->add('submit',SubmitType::class,array("label" => "Valider","attr" => array("class" => "btn btn-success"))) - ->add('x',HiddenType::class) - ->add('y',HiddenType::class) - ->add('w',HiddenType::class) - ->add('h',HiddenType::class) - ->add('xs',HiddenType::class) - ->add('ys',HiddenType::class) - ->add('ws',HiddenType::class) - ->add('hs',HiddenType::class) + ->add('submit', SubmitType::class, ['label' => 'Valider', 'attr' => ['class' => 'btn btn-success']]) + ->add('x', HiddenType::class) + ->add('y', HiddenType::class) + ->add('w', HiddenType::class) + ->add('h', HiddenType::class) + ->add('xs', HiddenType::class) + ->add('ys', HiddenType::class) + ->add('ws', HiddenType::class) + ->add('hs', HiddenType::class) ->getForm(); // Récupération des data du formulaire @@ -107,134 +108,141 @@ class CropController extends AbstractController if ($form->get('submit')->isClicked() && $form->isValid()) { // Récupération des valeurs du formulaire $data = $form->getData(); - $tmpdir=$this->appKernel->getProjectDir()."/var/tmp"; - $thumb_image_location = "$tmpdir/$type/thumb_".$file; - $cropped = $this->resizeThumbnailImage($thumb_image_location, $large_image_location,$data["ws"],$data["hs"],$data["xs"],$data["ys"],$scale); + $tmpdir = $this->appKernel->getProjectDir().'/var/tmp'; + $thumb_image_location = "$tmpdir/$type/thumb_".$file; + $cropped = $this->resizeThumbnailImage($thumb_image_location, $large_image_location, $data['ws'], $data['hs'], $data['xs'], $data['ys'], $scale); // Dépot des fichiers sur minio - $this->minio->upload($thumb_image_location,$type."/thumb_".$file,false); + $this->minio->upload($thumb_image_location, $type.'/thumb_'.$file, false); - $submited=true; + $submited = true; } return $this->render('Crop/crop02.html.twig', [ - 'useheader' => false, - 'usesidebar' => false, - 'form' => $form->createView(), - 'type' => $type, - 'file' => $file, - 'ratio' => $ratio, - "reportinput" => $reportinput, - "submited" => $submited + 'useheader' => false, + 'usesidebar' => false, + 'form' => $form->createView(), + 'type' => $type, + 'file' => $file, + 'ratio' => $ratio, + 'reportinput' => $reportinput, + 'submited' => $submited, ]); } - // Calcul de la hauteur - protected function getHeight($image) { - $size = getimagesize($image); - $height = $size[1]; - return $height; - } + // Calcul de la hauteur + protected function getHeight($image) + { + $size = getimagesize($image); + $height = $size[1]; - // Cacul de la largeur - protected function getWidth($image) { - $size = getimagesize($image); - $width = $size[0]; - return $width; - } + return $height; + } - protected function resizeImage($image,$width,$height,$scale) { - list($imagewidth, $imageheight, $imageType) = getimagesize($image); - $imageType = image_type_to_mime_type($imageType); - $newImageWidth = ceil($width * $scale); - $newImageHeight = ceil($height * $scale); - $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); - $source=null; + // Cacul de la largeur + protected function getWidth($image) + { + $size = getimagesize($image); + $width = $size[0]; - switch($imageType) { - case "image/gif": - $source=imagecreatefromgif($image); - break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": - $source=imagecreatefromjpeg($image); - break; - case "image/png": - case "image/x-png": - $source=imagecreatefrompng($image); - break; - } - imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height); + return $width; + } - switch($imageType) { - case "image/gif": - imagegif($newImage,$image); - break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": - imagejpeg($newImage,$image,90); - break; - case "image/png": - case "image/x-png": - imagepng($newImage,$image); - break; - } + protected function resizeImage($image, $width, $height, $scale) + { + list($imagewidth, $imageheight, $imageType) = getimagesize($image); + $imageType = image_type_to_mime_type($imageType); + $newImageWidth = ceil($width * $scale); + $newImageHeight = ceil($height * $scale); + $newImage = imagecreatetruecolor($newImageWidth, $newImageHeight); + $source = null; - chmod($image, 0640); - return $image; - } + switch ($imageType) { + case 'image/gif': + $source = imagecreatefromgif($image); + break; + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': + $source = imagecreatefromjpeg($image); + break; + case 'image/png': + case 'image/x-png': + $source = imagecreatefrompng($image); + break; + } + imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newImageWidth, $newImageHeight, $width, $height); - protected function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){ + switch ($imageType) { + case 'image/gif': + imagegif($newImage, $image); + break; + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': + imagejpeg($newImage, $image, 90); + break; + case 'image/png': + case 'image/x-png': + imagepng($newImage, $image); + break; + } + + chmod($image, 0640); + + return $image; + } + + protected function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale) + { $fs = new Filesystem(); $fs->remove($thumb_image_name); - - list($imagewidth, $imageheight, $imageType) = getimagesize($image); - $imageType = image_type_to_mime_type($imageType); - $newImageWidth = ceil($width * $scale); - $newImageHeight = ceil($height * $scale); - $newImageWidth=900; - $newImageHeight=900; - $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); - $source=null; - switch($imageType) { - case "image/gif": - $source=imagecreatefromgif($image); - break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": - dump("here"); - $source=imagecreatefromjpeg($image); - break; - case "image/png": - case "image/x-png": - $source=imagecreatefrompng($image); - break; - } + list($imagewidth, $imageheight, $imageType) = getimagesize($image); + $imageType = image_type_to_mime_type($imageType); + $newImageWidth = ceil($width * $scale); + $newImageHeight = ceil($height * $scale); + $newImageWidth = 900; + $newImageHeight = 900; + $newImage = imagecreatetruecolor($newImageWidth, $newImageHeight); + $source = null; - $ok=imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height); + switch ($imageType) { + case 'image/gif': + $source = imagecreatefromgif($image); + break; + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': + dump('here'); + $source = imagecreatefromjpeg($image); + break; + case 'image/png': + case 'image/x-png': + $source = imagecreatefrompng($image); + break; + } - switch($imageType) { - case "image/gif": - imagegif($newImage,$thumb_image_name); - break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": + $ok = imagecopyresampled($newImage, $source, 0, 0, $start_width, $start_height, $newImageWidth, $newImageHeight, $width, $height); + + switch ($imageType) { + case 'image/gif': + imagegif($newImage, $thumb_image_name); + break; + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': dump($thumb_image_name); - imagejpeg($newImage,$thumb_image_name,100); - break; - case "image/png": - case "image/x-png": - imagepng($newImage,$thumb_image_name); - break; - } + imagejpeg($newImage, $thumb_image_name, 100); + break; + case 'image/png': + case 'image/x-png': + imagepng($newImage, $thumb_image_name); + break; + } chmod($thumb_image_name, 0640); - return $thumb_image_name; - } + return $thumb_image_name; + } } diff --git a/src/Controller/GroupController.php b/src/Controller/GroupController.php index 458d1ea..34214c5 100644 --- a/src/Controller/GroupController.php +++ b/src/Controller/GroupController.php @@ -1,695 +1,720 @@ render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>($access!="user"), - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('user' != $access), + 'access' => $access, ]); } - public function tablelist($access,Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $user=$this->getUser(); + public function tablelist($access, Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $user = $this->getUser(); // Nombre total d'enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); - if($access=="user") { - $qb ->from("App:UserGroup","usergroup") - ->andWhere(("entity.isworkgroup=:flag")) - ->andWhere("entity.id=usergroup.group") - ->andWhere("usergroup.user=:user") - ->setParameter("flag", true) - ->setParameter("user", $user); - + $qb->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); + if ('user' == $access) { + $qb->from('App:UserGroup', 'usergroup') + ->andWhere('entity.isworkgroup=:flag') + ->andWhere('entity.id=usergroup.group') + ->andWhere('usergroup.user=:user') + ->setParameter('flag', true) + ->setParameter('user', $user); } $total = $qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - $qb= $em->getManager()->createQueryBuilder(); - - $qb ->select('COUNT(entity)') - ->from($this->entity,'entity') + } else { + $qb = $em->getManager()->createQueryBuilder(); + + $qb->select('COUNT(entity)') + ->from($this->entity, 'entity') ->where('entity.label LIKE :value') - ->leftJoin('App:User', 'user','WITH','entity.owner = user.id AND user.username LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->leftJoin('App:User', 'user', 'WITH', 'entity.owner = user.id AND user.username LIKE :value') + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); - if($access=="user") { - $qb ->from("App:UserGroup","usergroup") - ->andWhere(("entity.isworkgroup=:flag")) - ->andWhere("entity.id=usergroup.group") - ->andWhere("usergroup.user=:user") - ->setParameter("flag", true) - ->setParameter("user", $user); - } - $totalf= $qb->getQuery()->getSingleScalarResult(); + if ('user' == $access) { + $qb->from('App:UserGroup', 'usergroup') + ->andWhere('entity.isworkgroup=:flag') + ->andWhere('entity.id=usergroup.group') + ->andWhere('usergroup.user=:user') + ->setParameter('flag', true) + ->setParameter('user', $user); + } + $totalf = $qb->getQuery()->getSingleScalarResult(); } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb ->select('entity') - ->from($this->entity,'entity'); - if($access=="user") { - $qb ->from("App:UserGroup","usergroup") - ->andWhere(("entity.isworkgroup=:flag")) - ->andWhere("entity.id=usergroup.group") - ->andWhere("usergroup.user=:user") - ->setParameter("flag", true) - ->setParameter("user", $user); + $qb->select('entity') + ->from($this->entity, 'entity'); + if ('user' == $access) { + $qb->from('App:UserGroup', 'usergroup') + ->andWhere('entity.isworkgroup=:flag') + ->andWhere('entity.id=usergroup.group') + ->andWhere('usergroup.user=:user') + ->setParameter('flag', true) + ->setParameter('user', $user); } - if($search&&$search["value"]!="") { - $qb ->andWhere('entity.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + if ($search && '' != $search['value']) { + $qb->andWhere('entity.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - if($ordercolumn) { - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.label',$orderdir); - break; - case 2 : - $qb->orderBy('entity.isworkgroup',$orderdir); - break; - case 3 : - $qb->orderBy('entity.isopen',$orderdir); - break; - case 4 : - $qb->orderBy('entity.owner',$orderdir); - break; + if ($ordercolumn) { + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.label', $orderdir); + break; + case 2: + $qb->orderBy('entity.isworkgroup', $orderdir); + break; + case 3: + $qb->orderBy('entity.isopen', $orderdir); + break; + case 4: + $qb->orderBy('entity.owner', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - switch($access) { - case "admin": - if($this->canupdate($access,$data,$em,false)) - $action.="$data->getId()])."'>"; + $action = ''; + switch ($access) { + case 'admin': + if ($this->canupdate($access, $data, $em, false)) { + $action .= "route).'_update', ['id' => $data->getId()])."'>"; + } - if($this->canseemember($access,$data,$em,false)) - $action.="$data->getId()])."'>"; - break; + if ($this->canseemember($access, $data, $em, false)) { + $action .= "route).'_users', ['id' => $data->getId()])."'>"; + } + break; - case "modo": - if($this->canupdate($access,$data,$em,false)) - $action.="$data->getId()])."'>"; + case 'modo': + if ($this->canupdate($access, $data, $em, false)) { + $action .= "route).'_update', ['id' => $data->getId()])."'>"; + } - if($this->canseemember($access,$data,$em,false)) - $action.="$data->getId()])."'>"; - break; + if ($this->canseemember($access, $data, $em, false)) { + $action .= "route).'_users', ['id' => $data->getId()])."'>"; + } + break; - case "user": - if($this->canupdate($access,$data,$em,false)) - $action.="$data->getId()])."'>"; - - if($this->canseemember($access,$data,$em,false)) - $action.="$data->getId()])."'>"; + case 'user': + if ($this->canupdate($access, $data, $em, false)) { + $action .= "route).'_update', ['id' => $data->getId()])."'>"; + } + if ($this->canseemember($access, $data, $em, false)) { + $action .= "route).'_users', ['id' => $data->getId()])."'>"; + } // On ne peut se désinscrire que si le groupe est ouvert et qu'il n'est pas lié à un groupe ldap ou sso - if($data->getOwner()!=$this->getUser()&&($data->isIsOpen()||$this->canupdatemember($access,$data,$em,false))) - $action.="$data->getId()])."'>"; - break; + if ($data->getOwner() != $this->getUser() && ($data->isIsOpen() || $this->canupdatemember($access, $data, $em, false))) { + $action .= "route).'_userout', ['id' => $data->getId()])."'>"; + } + break; } - $userinfo=""; - if($data->getOwner()) { - $userinfo.=""avatar/".$data->getOwner()->getAvatar()])."' class='avatar'>"; - $userinfo.="
".$data->getOwner()->getUsername(); + $userinfo = ''; + if ($data->getOwner()) { + $userinfo .= " 'avatar/'.$data->getOwner()->getAvatar()])."' class='avatar'>"; + $userinfo .= '
'.$data->getOwner()->getUsername(); } - $visitecpt=0; - $visitelast=null; - foreach($data->getUsers() as $usergroup) { - $visitecpt+=intval($usergroup->getVisitecpt()); - $visitelast=($usergroup->getVisitedate()>$visitelast?$usergroup->getVisitedate():$visitelast); + $visitecpt = 0; + $visitelast = null; + foreach ($data->getUsers() as $usergroup) { + $visitecpt += intval($usergroup->getVisitecpt()); + $visitelast = ($usergroup->getVisitedate() > $visitelast ? $usergroup->getVisitedate() : $visitelast); } - $tmp=array(); - array_push($tmp,$action); - array_push($tmp,$data->getLabel()); - array_push($tmp,($data->isIsworkgroup()?"oui":"non")); - array_push($tmp,($data->isIsopen()?"oui":"non")); - array_push($tmp,$userinfo); - array_push($tmp,($visitelast?$visitelast->format("d/m/Y H:i")."
":"")."nb = ".$visitecpt); - array_push($output["data"],$tmp); + $tmp = []; + array_push($tmp, $action); + array_push($tmp, $data->getLabel()); + array_push($tmp, $data->isIsworkgroup() ? 'oui' : 'non'); + array_push($tmp, $data->isIsopen() ? 'oui' : 'non'); + array_push($tmp, $userinfo); + array_push($tmp, ($visitelast ? $visitelast->format('d/m/Y H:i').'
' : '').'nb = '.$visitecpt); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - - public function submit($access,Request $request,ManagerRegistry $em): Response + public function submit($access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement $data = new Entity(); $data->setApikey(Uuid::uuid4()); - if($access=="user") { + if ('user' == $access) { $data->setOwner($this->getUser()); $data->setIsworkgroup(true); } // Controler les permissions - $this->cansubmit($access,$em); + $this->cansubmit($access, $em); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"submit", - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "access"=>$access, - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'submit', + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'access' => $access, + ]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); // Les groupes opé ne sont pas ouvert - if(!$data->isIsworkgroup()) $data->setIsopen(false); + if (!$data->isIsworkgroup()) { + $data->setIsopen(false); + } // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>($access!="user"), - "mode"=>"submit", - "access"=>$access, - "form"=>$form->createView(), - $this->data=>$data, - "maxsize"=>($access=="user"?1200:null), + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('user' != $access), + 'mode' => 'submit', + 'access' => $access, + 'form' => $form->createView(), + $this->data => $data, + 'maxsize' => ('user' == $access ? 1200 : null), ]); } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data or $id<0) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data or $id < 0) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "access"=>$access, - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'access' => $access, + ]); // Récupération des data du formulaire $form->handleRequest($request); // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); // Les groupes opé ne sont pas ouvert - if(!$data->isIsworkgroup()) $data->setIsopen(false); + if (!$data->isIsworkgroup()) { + $data->setIsopen(false); + } $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader" => true, - "usemenu" => false, - "usesidebar" => ($access!="user"), + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('user' != $access), $this->data => $data, - "mode" => "update", - "access"=>$access, - "form" => $form->createView(), - "maxsize"=>($access=="user"?1200:null), + 'mode' => 'update', + 'access' => $access, + 'form' => $form->createView(), + 'maxsize' => ('user' == $access ? 1200 : null), ]); } - public function delete($id,$access,Request $request,ManagerRegistry $em): Response + public function delete($id, $access, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); - } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)."_update",["id"=>$id]); - } - - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); - } + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route).'_update', ['id' => $id]); + } - public function users($id,$access,Request $request,ManagerRegistry $em) - { + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); + } + + public function users($id, $access, Request $request, ManagerRegistry $em) + { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); - + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canseemember($access,$data,$em); - + $this->canseemember($access, $data, $em); + // Affichage du formulaire return $this->render($this->twig.'users.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => ($access!="user"), - 'access' => $access, - $this->data => $data, - ]); - } + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('user' != $access), + 'access' => $access, + $this->data => $data, + ]); + } - public function usersnotin($id,$access,Request $request,ManagerRegistry $em) + public function usersnotin($id, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($id); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); + $group = $em->getRepository($this->entity)->find($id); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canseemember($access,$group,$em); + $this->canseemember($access, $group, $em); $sub = $em->getManager()->createQueryBuilder(); - $sub->select("usergroup"); - $sub->from("App:UserGroup","usergroup"); + $sub->select('usergroup'); + $sub->from('App:UserGroup', 'usergroup'); $sub->andWhere('usergroup.user = user.id'); - $sub->andWhere('usergroup.group = :groupid'); + $sub->andWhere('usergroup.group = :groupid'); - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $usermodo=null; - $niveau01=null; - $niveau02=null; + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $usermodo = null; + $niveau01 = null; + $niveau02 = null; // Nombre total d'enregistrement $qb = $em->getManager()->createQueryBuilder(); - switch($access) { - case "admin": + switch ($access) { + case 'admin': $qb->select('COUNT(user)') - ->from('App:User','user') + ->from('App:User', 'user') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->setParameter("groupid",$id); - break; - - case "modo": - $usermodo=$this->getUser()->getId(); - $qb->select('COUNT(user)') - ->from('App:User','user') - ->from('App:UserModo','usermodo') - ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo) - ->setParameter("groupid",$id); - break; - - case "user": - $niveau01=$this->getUser()->getNiveau01(); - $niveau02=$this->getUser()->getNiveau02(); - - $qb->select('COUNT(user)') - ->from('App:User','user') - ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->setParameter("groupid",$id); - - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("user.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; - - case "SAME_NIVEAU02": - $qb->andWhere("user.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; - } - break; - } - $total=$qb->getQuery()->getSingleScalarResult(); - $totalf=null; - - // Nombre d'enregistrement filtré - if($search["value"]=="") - $totalf = $total; - else { - switch($access) { - case "admin": - $totalf= $em->getManager()->createQueryBuilder() - ->select('COUNT(user)') - ->from('App:User','user') - ->where('user.username LIKE :value OR user.email LIKE :value') - ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("groupid",$id) - ->getQuery() - ->getSingleScalarResult(); + ->setParameter('groupid', $id); break; - case "modo": + case 'modo': + $usermodo = $this->getUser()->getId(); + $qb->select('COUNT(user)') + ->from('App:User', 'user') + ->from('App:UserModo', 'usermodo') + ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo) + ->setParameter('groupid', $id); + break; + + case 'user': + $niveau01 = $this->getUser()->getNiveau01(); + $niveau02 = $this->getUser()->getNiveau02(); + + $qb->select('COUNT(user)') + ->from('App:User', 'user') + ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) + ->setParameter('groupid', $id); + + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('user.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; + + case 'SAME_NIVEAU02': + $qb->andWhere('user.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; + } + break; + } + $total = $qb->getQuery()->getSingleScalarResult(); + $totalf = null; + + // Nombre d'enregistrement filtré + if ('' == $search['value']) { + $totalf = $total; + } else { + switch ($access) { + case 'admin': $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(user)') - ->from('App:User','user') - ->from('App:UserModo','usermodo') + ->from('App:User', 'user') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo) - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("groupid",$id) + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('groupid', $id) ->getQuery() ->getSingleScalarResult(); - break; + break; - case "user": + case 'modo': + $totalf = $em->getManager()->createQueryBuilder() + ->select('COUNT(user)') + ->from('App:User', 'user') + ->from('App:UserModo', 'usermodo') + ->where('user.username LIKE :value OR user.email LIKE :value') + ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo) + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('groupid', $id) + ->getQuery() + ->getSingleScalarResult(); + break; + + case 'user': $qb = $em->getManager()->createQueryBuilder() ->select('COUNT(user)') - ->from('App:User','user') + ->from('App:User', 'user') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("groupid",$id); - - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("user.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; - - case "SAME_NIVEAU02": - $qb->andWhere("user.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; - } + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('groupid', $id); - $totalf=$qb->getQuery()->getSingleScalarResult(); - break; + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('user.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; + + case 'SAME_NIVEAU02': + $qb->andWhere('user.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; + } + + $totalf = $qb->getQuery()->getSingleScalarResult(); + break; } } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('user')->from("App:User",'user'); - - switch($access) { - case "admin": - $qb->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))); - break; + $qb->select('user')->from('App:User', 'user'); - case "modo": - $qb->from('App:UserModo','usermodo') + switch ($access) { + case 'admin': + $qb->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))); + break; + + case 'modo': + $qb->from('App:UserModo', 'usermodo') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo); - break; + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo); + break; - case "user": + case 'user': $qb->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))); - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("user.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('user.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; - case "SAME_NIVEAU02": - $qb->andWhere("user.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; + case 'SAME_NIVEAU02': + $qb->andWhere('user.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; } - break; + break; } - if($search["value"]!="") { - $qb ->andWhere('user.username LIKE :value OR user.email LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + if ('' != $search['value']) { + $qb->andWhere('user.username LIKE :value OR user.email LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - $qb->setParameter("groupid",$id); - switch($ordercolumn) { - case 2 : - $qb->orderBy('user.username',$orderdir); - break; + $qb->setParameter('groupid', $id); + switch ($ordercolumn) { + case 2: + $qb->orderBy('user.username', $orderdir); + break; - case 3 : - $qb->orderBy('user.email',$orderdir); - break; + case 3: + $qb->orderBy('user.email', $orderdir); + break; } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - $canupdatemember=$this->canupdatemember($access,$group,$em,false); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $canupdatemember = $this->canupdatemember($access, $group, $em, false); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - if($canupdatemember) - $action.=""; - - // Avatar - $avatar=""avatar/".$data->getAvatar()])."' class='avatar'>"; + $action = ''; + if ($canupdatemember) { + $action .= ""; + } - array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),"","")); + // Avatar + $avatar = " 'avatar/'.$data->getAvatar()])."' class='avatar'>"; + + array_push($output['data'], ['DT_RowId' => 'user'.$data->getId(), $action, $avatar, $data->getUsername(), $data->getEmail(), '', '']); } // Retour return new JsonResponse($output); - } + } - - public function usersin($id,$access,Request $request,ManagerRegistry $em) - { + public function usersin($id, $access, Request $request, ManagerRegistry $em) + { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($id); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); + $group = $em->getRepository($this->entity)->find($id); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canseemember($access,$group,$em); + $this->canseemember($access, $group, $em); $sub = $em->getManager()->createQueryBuilder(); - $sub->select("usergroup"); - $sub->from("App:UserGroup","usergroup"); + $sub->select('usergroup'); + $sub->from('App:UserGroup', 'usergroup'); $sub->andWhere('usergroup.user = user.id'); - $sub->andWhere('usergroup.group = :groupid'); + $sub->andWhere('usergroup.group = :groupid'); - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $usermodo=null; + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $usermodo = null; // Nombre total d'enregistrement $qb = $em->getManager()->createQueryBuilder(); - if($access=="admin"||$access=="user") + if ('admin' == $access || 'user' == $access) { $qb->select('COUNT(user)') - ->from('App:User','user') + ->from('App:User', 'user') ->where($qb->expr()->exists($sub->getDQL())) - ->setParameter("groupid",$id); - else { - $usermodo=$this->getUser()->getId(); + ->setParameter('groupid', $id); + } else { + $usermodo = $this->getUser()->getId(); $qb->select('COUNT(user)') - ->from('App:User','user') - ->from('App:UserModo','usermodo') + ->from('App:User', 'user') + ->from('App:UserModo', 'usermodo') ->where($qb->expr()->exists($sub->getDQL())) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo) - ->setParameter("groupid",$id); + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo) + ->setParameter('groupid', $id); } - $total=$qb->getQuery()->getSingleScalarResult(); + $total = $qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré - if($search["value"]=="") + if ('' == $search['value']) { $totalf = $total; - else { - if($access=="admin"||$access=="user") - $totalf= $em->getManager()->createQueryBuilder() + } else { + if ('admin' == $access || 'user' == $access) { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(user)') - ->from('App:User','user') + ->from('App:User', 'user') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->exists($sub->getDQL())) - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("groupid",$id) + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('groupid', $id) ->getQuery() ->getSingleScalarResult(); - else - $totalf= $em->getManager()->createQueryBuilder() + } else { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(user)') - ->from('App:User','user') - ->from('App:UserModo','usermodo') + ->from('App:User', 'user') + ->from('App:UserModo', 'usermodo') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->exists($sub->getDQL())) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo) - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("groupid",$id) + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo) + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('groupid', $id) ->getQuery() ->getSingleScalarResult(); - + } } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('user')->from("App:User",'user'); - - if($access=="admin"||$access=="user") + $qb->select('user')->from('App:User', 'user'); + + if ('admin' == $access || 'user' == $access) { $qb->where($qb->expr()->exists($sub->getDQL())); - else - $qb->from('App:UserModo','usermodo') + } else { + $qb->from('App:UserModo', 'usermodo') ->where($qb->expr()->exists($sub->getDQL())) - ->andWhere("usermodo.niveau01 = user.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("userid", $usermodo); - - if($search["value"]!="") { - $qb ->andWhere('user.username LIKE :value OR user.email LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); - } - $qb->setParameter("groupid",$id); - switch($ordercolumn) { - case 2 : - $qb->orderBy('user.username',$orderdir); - break; - - case 3 : - $qb->orderBy('user.email',$orderdir); - break; + ->andWhere('usermodo.niveau01 = user.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('userid', $usermodo); } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - - foreach($datas as $data) { + if ('' != $search['value']) { + $qb->andWhere('user.username LIKE :value OR user.email LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); + } + $qb->setParameter('groupid', $id); + switch ($ordercolumn) { + case 2: + $qb->orderBy('user.username', $orderdir); + break; + + case 3: + $qb->orderBy('user.email', $orderdir); + break; + } + + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + + foreach ($datas as $data) { // Propriétaire - $usergroup=$em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$data->getId(),"group"=>$id]); - $fgproprio=($usergroup->getUser()==$group->getOwner()); - $fgme=($usergroup->getUser()==$this->getUser()&&$access!="admin"); + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $data->getId(), 'group' => $id]); + $fgproprio = ($usergroup->getUser() == $group->getOwner()); + $fgme = ($usergroup->getUser() == $this->getUser() && 'admin' != $access); // Action - $action = ""; - if($this->canupdatemember($access,$group,$em,false)&&!$fgproprio&&!$fgme) - $action.=""; + $action = ''; + if ($this->canupdatemember($access, $group, $em, false) && !$fgproprio && !$fgme) { + $action .= ""; + } // Avatar - $avatar=""avatar/".$data->getAvatar()])."' class='avatar'>"; + $avatar = " 'avatar/'.$data->getAvatar()])."' class='avatar'>"; // Flag manager - $rolegroup=""; - if($fgproprio) $rolegroup="Propriétaire du groupe"; - elseif($this->canupdatemember($access,$group,$em,false)&&!$fgme) { - $selectuser=($usergroup->getRolegroup()==0?"selected='selected'":""); - $selectwritter=($usergroup->getRolegroup()==50?"selected='selected'":""); - $selectmanager=($usergroup->getRolegroup()==90?"selected='selected'":""); + $rolegroup = ''; + if ($fgproprio) { + $rolegroup = 'Propriétaire du groupe'; + } elseif ($this->canupdatemember($access, $group, $em, false) && !$fgme) { + $selectuser = (0 == $usergroup->getRolegroup() ? "selected='selected'" : ''); + $selectwritter = (50 == $usergroup->getRolegroup() ? "selected='selected'" : ''); + $selectmanager = (90 == $usergroup->getRolegroup() ? "selected='selected'" : ''); - $rolegroup=''; + $rolegroup = ''; + } else { + $rolegroup = (0 == $usergroup->getRolegroup() ? 'Utilisateur' : (50 == $usergroup->getRolegroup() ? 'Collaborateur' : 'Gestionnaire')); } - else $rolegroup=($usergroup->getRolegroup()==0?"Utilisateur":($usergroup->getRolegroup()==50?"Collaborateur":"Gestionnaire")); - - $tmp=array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$rolegroup); - array_push($output["data"],$tmp); + + $tmp = ['DT_RowId' => 'user'.$data->getId(), $action, $avatar, $data->getUsername(), $data->getEmail(), $rolegroup]; + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - public function useradd($groupid,$userid,$access,Request $request,ManagerRegistry $em) + public function useradd($groupid, $userid, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($groupid); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); + $group = $em->getRepository($this->entity)->find($groupid); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $user=$em->getRepository("App\Entity\User")->find($userid); - if (!$user) throw $this->createNotFoundException('Unable to find entity.'); + $user = $em->getRepository("App\Entity\User")->find($userid); + if (!$user) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $output=array(); - $this->canupdatemember($access,$group,$em,true); + $output = []; + $this->canupdatemember($access, $group, $em, true); - $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(array("user"=>$user,"group"=>$group)); - if($usergroup) return new JsonResponse($output); + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if ($usergroup) { + return new JsonResponse($output); + } - $usergroup=new UserGroup(); + $usergroup = new UserGroup(); $usergroup->setUser($user); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); @@ -697,127 +722,168 @@ class GroupController extends AbstractController $em->getManager()->persist($usergroup); $em->getManager()->flush(); - // Retour + // Retour return new JsonResponse($output); } - public function userdel($groupid,$userid,$access,Request $request,ManagerRegistry $em) + public function userdel($groupid, $userid, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($groupid); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); + $group = $em->getRepository($this->entity)->find($groupid); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $user=$em->getRepository("App\Entity\User")->find($userid); - if (!$user) throw $this->createNotFoundException('Unable to find entity.'); + $user = $em->getRepository("App\Entity\User")->find($userid); + if (!$user) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $output=array(); - $this->canupdatemember($access,$group,$em,true); - if($user==$group->getOwner()) throw $this->createAccessDeniedException('Permission denied'); + $output = []; + $this->canupdatemember($access, $group, $em, true); + if ($user == $group->getOwner()) { + throw $this->createAccessDeniedException('Permission denied'); + } - $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(array("user"=>$user,"group"=>$group)); - if($usergroup) { + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if ($usergroup) { $em->getManager()->remove($usergroup); $em->getManager()->flush(); } - // Retour + // Retour return new JsonResponse($output); } - public function userchangerole($groupid,$userid,$roleid,$access,Request $request,ManagerRegistry $em) + public function userchangerole($groupid, $userid, $roleid, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($groupid); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); + $group = $em->getRepository($this->entity)->find($groupid); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $user=$em->getRepository("App\Entity\User")->find($userid); - if (!$user) throw $this->createNotFoundException('Unable to find entity.'); + $user = $em->getRepository("App\Entity\User")->find($userid); + if (!$user) { + throw $this->createNotFoundException('Unable to find entity.'); + } - $output=array(); - $this->canupdatemember($access,$group,$em,true); - if($user==$group->getOwner()) throw $this->createAccessDeniedException('Permission denied'); - + $output = []; + $this->canupdatemember($access, $group, $em, true); + if ($user == $group->getOwner()) { + throw $this->createAccessDeniedException('Permission denied'); + } - $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(array("user"=>$user,"group"=>$group)); - if($usergroup) { + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $group]); + if ($usergroup) { $usergroup->setRolegroup($roleid); $em->getManager()->persist($usergroup); $em->getManager()->flush(); } - // Retour + // Retour return new JsonResponse($output); } - public function userout($id,$access,Request $request,ManagerRegistry $em) + public function userout($id, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $group=$em->getRepository($this->entity)->find($id); - if (!$group) throw $this->createNotFoundException('Unable to find entity.'); - - // On ne peut se désinscrire que si le groupe est ouvert et qu'il n'est pas lié à un groupe ldap ou sso - if($group->getOwner()!=$this->getUser()&&($group->isIsOpen()||$this->canupdatemember($access,$group,$em,false))) { - $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(array("user"=>$this->getUser(),"group"=>$group)); - if($usergroup) { - $em->getManager()->remove($usergroup); - $em->getManager()->flush(); - } + $group = $em->getRepository($this->entity)->find($id); + if (!$group) { + throw $this->createNotFoundException('Unable to find entity.'); } - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + // On ne peut se désinscrire que si le groupe est ouvert et qu'il n'est pas lié à un groupe ldap ou sso + if ($group->getOwner() != $this->getUser() && ($group->isIsOpen() || $this->canupdatemember($access, $group, $em, false))) { + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $this->getUser(), 'group' => $group]); + if ($usergroup) { + $em->getManager()->remove($usergroup); + $em->getManager()->flush(); + } + } + + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - private function cansubmit($access,$em) { - switch($access) { - case "admin" : return true; break; - case "user" : return true; break; + private function cansubmit($access, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'user': return true; + break; } throw $this->createAccessDeniedException('Permission denied'); } - - private function canupdate($access,$entity,$em,$fgblock=true) { - $toreturn=false; - switch($access) { - case "admin" : $toreturn=($entity->getId()>0); break; - case "user": - if(!$entity->isIsworkgroup()||$entity->getOwner()!=$this->getUser()) $toreturn=false; - else $toreturn=true; - break; + private function canupdate($access, $entity, $em, $fgblock = true) + { + $toreturn = false; + switch ($access) { + case 'admin': $toreturn = ($entity->getId() > 0); + break; + case 'user': + if (!$entity->isIsworkgroup() || $entity->getOwner() != $this->getUser()) { + $toreturn = false; + } else { + $toreturn = true; + } + break; } - if($fgblock&&!$toreturn) throw $this->createAccessDeniedException('Permission denied'); + if ($fgblock && !$toreturn) { + throw $this->createAccessDeniedException('Permission denied'); + } + return $toreturn; } - private function canseemember($access,$entity,$em,$fgblock=true) { - $toreturn=false; - switch($access) { - case "admin" : $toreturn=($entity->getId()>0); break; - case "modo" : $toreturn=($entity->getId()>0); break; - case "user": - $usergroup=$em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$entity]); - if(!$usergroup||!$entity->isIsworkgroup()||$entity->getId()<0) $toreturn=false; - else $toreturn=true; - break; + private function canseemember($access, $entity, $em, $fgblock = true) + { + $toreturn = false; + switch ($access) { + case 'admin': $toreturn = ($entity->getId() > 0); + break; + case 'modo': $toreturn = ($entity->getId() > 0); + break; + case 'user': + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $this->getUser(), 'group' => $entity]); + if (!$usergroup || !$entity->isIsworkgroup() || $entity->getId() < 0) { + $toreturn = false; + } else { + $toreturn = true; + } + break; } - if($fgblock&&!$toreturn) throw $this->createAccessDeniedException('Permission denied'); + if ($fgblock && !$toreturn) { + throw $this->createAccessDeniedException('Permission denied'); + } + return $toreturn; } - - private function canupdatemember($access,$entity,$em,$fgblock=true) { - $toreturn=false; - switch($access) { - case "admin" : $toreturn=($entity->getId()>0&&!$entity->getLdapfilter()); break; - case "modo" : $toreturn=($entity->getId()>0); break; - case "user": - $usergroup=$em->getRepository("App\Entity\UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$entity]); - if(!$usergroup||!$entity->isIsworkgroup()||$entity->getId()<0) $toreturn=false; - elseif($usergroup->getRolegroup()<90) $toreturn=false; - else $toreturn=true; - break; + private function canupdatemember($access, $entity, $em, $fgblock = true) + { + $toreturn = false; + switch ($access) { + case 'admin': $toreturn = ($entity->getId() > 0 && !$entity->getLdapfilter()); + break; + case 'modo': $toreturn = ($entity->getId() > 0); + break; + case 'user': + $usergroup = $em->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $this->getUser(), 'group' => $entity]); + if (!$usergroup || !$entity->isIsworkgroup() || $entity->getId() < 0) { + $toreturn = false; + } elseif ($usergroup->getRolegroup() < 90) { + $toreturn = false; + } else { + $toreturn = true; + } + break; } - if($fgblock&&!$toreturn) throw $this->createAccessDeniedException('Permission denied'); + if ($fgblock && !$toreturn) { + throw $this->createAccessDeniedException('Permission denied'); + } + return $toreturn; - } -} \ No newline at end of file + } +} diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index fedc290..c43c412 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -1,57 +1,53 @@ getSession()->get("fgforceconnect")) - return $this->redirectToRoute("app_user_home"); + { + if ($request->getSession()->get('fgforceconnect')) { + return $this->redirectToRoute('app_user_home'); + } - return $this->render('Home/home.html.twig',[ - "useheader"=>true, - "usemenu"=>true, - "usesidebar"=>false, - "maxsize"=>1000, + return $this->render('Home/home.html.twig', [ + 'useheader' => true, + 'usemenu' => true, + 'usesidebar' => false, + 'maxsize' => 1000, ]); } - + public function homeuser($access): Response - { - return $this->render('Home/home.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>false, - "maxsize"=>1000, + { + return $this->render('Home/home.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxsize' => 1000, ]); } public function homeadmin($access): Response - { - return $this->redirectToRoute("app_admin_config"); + { + return $this->redirectToRoute('app_admin_config'); } - public function homemodo($access): Response - { - return $this->redirectToRoute("app_modo_niveau02"); + { + return $this->redirectToRoute('app_modo_niveau02'); } public function docrest(): Response - { - return $this->render('Home/docrest.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, + { + return $this->render('Home/docrest.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, ]); } - - - - -} \ No newline at end of file +} diff --git a/src/Controller/HydraController.php b/src/Controller/HydraController.php index 0a889c8..bc434cf 100644 --- a/src/Controller/HydraController.php +++ b/src/Controller/HydraController.php @@ -1,27 +1,24 @@ apiservice = $apiservice; $this->passwordencoder = $passwordencoder; @@ -29,19 +26,19 @@ class HydraController extends AbstractController } public function loginsql(Request $request): Response - { - + { $challenge = $request->query->get('login_challenge'); // S'il n'y a pas de challenge, on déclenche une bad request if (!$challenge) { throw new BadRequestException('pas de challenge'); } - + // On vérifie que la requête d'identification provient bien de hydra - $response = $this->apiservice->run("GET",$this->getParameter('hydraLoginchallenge').$challenge,null); - if(!$response) + $response = $this->apiservice->run('GET', $this->getParameter('hydraLoginchallenge').$challenge, null); + if (!$response) { throw new BadRequestException('challenge invalide'); + } // si le challenge est validé par hydra, on le stocke en session pour l'utiliser par la suite et on redirige vers une route interne protégée qui va déclencher l'identification FranceConnect $request->getSession()->set('hydraChallenge', $challenge); @@ -51,60 +48,65 @@ class HydraController extends AbstractController // Récupération des data du formulaire $form->handleRequest($request); - // Affichage du formulaire - return $this->render("Home/loginHYDRA.html.twig", [ - "useheader"=>false, - "usemenu"=>false, - "usesidebar"=>false, - "form"=>$form->createView(), - "mode"=>"SQL", + return $this->render('Home/loginHYDRA.html.twig', [ + 'useheader' => false, + 'usemenu' => false, + 'usesidebar' => false, + 'form' => $form->createView(), + 'mode' => 'SQL', ]); } - public function checkloginsql(Request $request,ManagerRegistry $em) { - $username=$request->get('login')["username"]; - $password=$request->get('login')["password"]; + public function checkloginsql(Request $request, ManagerRegistry $em) + { + $username = $request->get('login')['username']; + $password = $request->get('login')['password']; // user exist ? - $user=$em->getRepository("App\Entity\User")->findOneBy(["username"=>$username]); - if(!$user) return $this->redirect($this->generateUrl('app_hydra_loginsql',["login_challenge"=>$request->getSession()->get("hydraChallenge")])); + $user = $em->getRepository("App\Entity\User")->findOneBy(['username' => $username]); + if (!$user) { + return $this->redirect($this->generateUrl('app_hydra_loginsql', ['login_challenge' => $request->getSession()->get('hydraChallenge')])); + } - $islogin=$this->passwordencoder->verify($user->getPassword(),$password,$user->getSalt()); - if(!$islogin) return $this->redirect($this->generateUrl('app_hydra_loginsql',["login_challenge"=>$request->getSession()->get("hydraChallenge")])); + $islogin = $this->passwordencoder->verify($user->getPassword(), $password, $user->getSalt()); + if (!$islogin) { + return $this->redirect($this->generateUrl('app_hydra_loginsql', ['login_challenge' => $request->getSession()->get('hydraChallenge')])); + } - $response = $this->apiservice->run("PUT",$this->getParameter('hydraLoginchallengeaccept').$request->getSession()->get('hydraChallenge'),["subject"=>$user->getEmail(),"acr"=>"string"]); - if(!$response||$response->code!="200") + $response = $this->apiservice->run('PUT', $this->getParameter('hydraLoginchallengeaccept').$request->getSession()->get('hydraChallenge'), ['subject' => $user->getEmail(), 'acr' => 'string']); + if (!$response || '200' != $response->code) { throw new BadRequestException('login accept invalide'); + } - $datas=[ - "username"=>$user->getUsername(), - "email"=>$user->getEmail(), - "firstname"=>$user->getFirstname(), - "lastname"=>$user->getLastname() + $datas = [ + 'username' => $user->getUsername(), + 'email' => $user->getEmail(), + 'firstname' => $user->getFirstname(), + 'lastname' => $user->getLastname(), ]; - $request->getSession()->set("datas",$datas); + $request->getSession()->set('datas', $datas); + + $redirect = $response->body->redirect_to; - $redirect=$response->body->redirect_to; return $this->redirect($redirect, 301); - } public function loginldap(Request $request): Response - { - + { $challenge = $request->query->get('login_challenge'); // S'il n'y a pas de challenge, on déclenche une bad request if (!$challenge) { throw new BadRequestException('pas de challenge'); } - + // On vérifie que la requête d'identification provient bien de hydra - $response = $this->apiservice->run("GET",$this->getParameter('hydraLoginchallenge').$challenge,null); - if(!$response) + $response = $this->apiservice->run('GET', $this->getParameter('hydraLoginchallenge').$challenge, null); + if (!$response) { throw new BadRequestException('challenge invalide'); + } // si le challenge est validé par hydra, on le stocke en session pour l'utiliser par la suite et on redirige vers une route interne protégée qui va déclencher l'identification FranceConnect $request->getSession()->set('hydraChallenge', $challenge); @@ -114,62 +116,66 @@ class HydraController extends AbstractController // Récupération des data du formulaire $form->handleRequest($request); - // Affichage du formulaire - return $this->render("Home/loginHYDRA.html.twig", [ - "useheader"=>false, - "usemenu"=>false, - "usesidebar"=>false, - "form"=>$form->createView(), - "mode"=>"LDAP", + return $this->render('Home/loginHYDRA.html.twig', [ + 'useheader' => false, + 'usemenu' => false, + 'usesidebar' => false, + 'form' => $form->createView(), + 'mode' => 'LDAP', ]); } - public function checkloginldap(Request $request,ManagerRegistry $em) { - $username=$request->get('login')["username"]; - $password=$request->get('login')["password"]; + public function checkloginldap(Request $request, ManagerRegistry $em) + { + $username = $request->get('login')['username']; + $password = $request->get('login')['password']; // L'utilisateur se co à l'annuaire ? - $userldap=$this->ldapservice->userconnect($username,$password); - if(!$userldap) - return $this->redirect($this->generateUrl('app_hydra_loginldap',["login_challenge"=>$request->getSession()->get("hydraChallenge")])); + $userldap = $this->ldapservice->userconnect($username, $password); + if (!$userldap) { + return $this->redirect($this->generateUrl('app_hydra_loginldap', ['login_challenge' => $request->getSession()->get('hydraChallenge')])); + } - $userldap=$userldap[0]; + $userldap = $userldap[0]; // Init $email = "$username@nomail.fr"; $lastname = $username; - $firstname = " "; + $firstname = ' '; // Rechercher l'utilisateur - if(isset($userldap[$this->getParameter('ldapFirstname')])) + if (isset($userldap[$this->getParameter('ldapFirstname')])) { $firstname = $userldap[$this->getParameter('ldapFirstname')]; - - if(isset($userldap[$this->getParameter('ldapLastname')])) + } + + if (isset($userldap[$this->getParameter('ldapLastname')])) { $lastname = $userldap[$this->getParameter('ldapLastname')]; - - if(isset($userldap[$this->getParameter('ldapEmail')])) + } + + if (isset($userldap[$this->getParameter('ldapEmail')])) { $email = $userldap[$this->getParameter('ldapEmail')]; + } - $response = $this->apiservice->run("PUT",$this->getParameter('hydraLoginchallengeaccept').$request->getSession()->get('hydraChallenge'),["subject"=>$email,"acr"=>"string"]); - if(!$response||$response->code!="200") + $response = $this->apiservice->run('PUT', $this->getParameter('hydraLoginchallengeaccept').$request->getSession()->get('hydraChallenge'), ['subject' => $email, 'acr' => 'string']); + if (!$response || '200' != $response->code) { throw new BadRequestException('login accept invalide'); + } - $datas=[ - "username"=>$username, - "email"=>$email, - "firstname"=>$firstname, - "lastname"=>$lastname + $datas = [ + 'username' => $username, + 'email' => $email, + 'firstname' => $firstname, + 'lastname' => $lastname, ]; - $request->getSession()->set("datas",$datas); + $request->getSession()->set('datas', $datas); + + $redirect = $response->body->redirect_to; - $redirect=$response->body->redirect_to; return $this->redirect($redirect, 301); - } - public function consent(Request $request) { $challenge = $request->query->get('consent_challenge'); @@ -178,20 +184,22 @@ class HydraController extends AbstractController } // On vérifie que la requête d'identification provient bien de hydra - $response = $this->apiservice->run("GET",$this->getParameter('hydraConsentchallenge').$challenge,null); - if(!$response) + $response = $this->apiservice->run('GET', $this->getParameter('hydraConsentchallenge').$challenge, null); + if (!$response) { throw new BadRequestException('challenge invalide'); + } - $response = $this->apiservice->run("PUT",$this->getParameter('hydraConsentchallengeaccept').$challenge,[ + $response = $this->apiservice->run('PUT', $this->getParameter('hydraConsentchallengeaccept').$challenge, [ 'grant_scope' => ['openid', 'offline_access'], - 'session' => ['id_token' => $request->getSession()->get('datas')] + 'session' => ['id_token' => $request->getSession()->get('datas')], ]); - if(!$response) + if (!$response) { throw new BadRequestException('challenge not accept'); + } + + $redirect = $response->body->redirect_to; - $redirect=$response->body->redirect_to; return $this->redirect($redirect, 301); - } - -} \ No newline at end of file + } +} diff --git a/src/Controller/MinioController.php b/src/Controller/MinioController.php index 2eaa082..8470394 100644 --- a/src/Controller/MinioController.php +++ b/src/Controller/MinioController.php @@ -2,12 +2,12 @@ namespace App\Controller; +use App\Service\MinioService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use App\Service\MinioService; use Symfony\Component\HttpKernel\KernelInterface; -use Symfony\Component\Filesystem\Filesystem; class MinioController extends AbstractController { @@ -20,54 +20,54 @@ class MinioController extends AbstractController $this->minio = $minio; } - public function ckupload($access,Request $request): Response + public function ckupload($access, Request $request): Response { // Fichier temporaire uploadé - $tmpfile = $request->files->get('upload'); - $extention = $tmpfile->getClientOriginalExtension(); + $tmpfile = $request->files->get('upload'); + $extention = $tmpfile->getClientOriginalExtension(); // Répertoire de Destination - $fs = new Filesystem(); - $rootdir = $this->getParameter('kernel.project_dir') . '/var/tmp'; - $fs->mkdir($rootdir."/ckeditor"); - - // Fichier cible - $targetName = uniqid().".".$extention; - $targetFile = "ckeditor/".$targetName; - $targetUrl = $this->generateUrl('app_minio_document',["file"=>"ckeditor/".$targetName]); + $fs = new Filesystem(); + $rootdir = $this->getParameter('kernel.project_dir').'/var/tmp'; + $fs->mkdir($rootdir.'/ckeditor'); - //move_uploaded_file($tmpfile,$targetFile); - $this->minio->upload($tmpfile,$targetFile,true); - - $output["uploaded"]=1; - $output["fileName"]=$targetName; - $output["url"]=$targetUrl; + // Fichier cible + $targetName = uniqid().'.'.$extention; + $targetFile = 'ckeditor/'.$targetName; + $targetUrl = $this->generateUrl('app_minio_document', ['file' => 'ckeditor/'.$targetName]); + + // move_uploaded_file($tmpfile,$targetFile); + $this->minio->upload($tmpfile, $targetFile, true); + + $output['uploaded'] = 1; + $output['fileName'] = $targetName; + $output['url'] = $targetUrl; return new Response(json_encode($output)); } - public function logo(Request $request): Response { - - return $this->redirectToRoute("app_minio_image",["file"=>"logo/".$request->getSession()->get("logolight")]); + public function logo(Request $request): Response + { + return $this->redirectToRoute('app_minio_image', ['file' => 'logo/'.$request->getSession()->get('logolight')]); } public function image(Request $request): Response { - $file=$request->query->get("file"); - switch($file) { - case "avatar/admin.jpg": - case "avatar/noavatar.png": - case "avatar/system.jpg": - case "header/header.jpg": - case "logo/logo.png": - $file = "medias/".$file; + $file = $request->query->get('file'); + switch ($file) { + case 'avatar/admin.jpg': + case 'avatar/noavatar.png': + case 'avatar/system.jpg': + case 'header/header.jpg': + case 'logo/logo.png': + $file = 'medias/'.$file; $filePath = $file; $content = file_get_contents($file); - break; + break; default: // C'est une url = on affiche l'url - if(stripos($file,"http")===0) { + if (0 === stripos($file, 'http')) { $filePath = $file; $content = file_get_contents($file); } @@ -76,7 +76,7 @@ class MinioController extends AbstractController $filePath = $this->minio->download($file, $file, true); $content = file_get_contents($filePath); } - break; + break; } return new Response($content, 200, [ @@ -88,7 +88,7 @@ class MinioController extends AbstractController public function document(Request $request) { - $file=$request->query->get("file"); + $file = $request->query->get('file'); $filePath = $this->minio->download($file, $file, true); $content = file_get_contents($filePath); diff --git a/src/Controller/Niveau01Controller.php b/src/Controller/Niveau01Controller.php index a6f29b4..82485db 100644 --- a/src/Controller/Niveau01Controller.php +++ b/src/Controller/Niveau01Controller.php @@ -1,127 +1,129 @@ render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function tablelist(Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; + public function tablelist(Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; // Nombre total d'enregistrement - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - $totalf= $em->getManager()->createQueryBuilder() + } else { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('entity')->from($this->entity,'entity'); - if($search&&$search["value"]!="") { - $qb ->andWhere('entity.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + $qb->select('entity')->from($this->entity, 'entity'); + if ($search && '' != $search['value']) { + $qb->andWhere('entity.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - if($ordercolumn) { - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.label',$orderdir); - break; + if ($ordercolumn) { + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.label', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - $action.="$data->getId()))."'>"; + $action = ''; + $action .= " $data->getId()])."'>"; - $tmp=array(); - array_push($tmp,$action); - array_push($tmp,$data->getLabel()); + $tmp = []; + array_push($tmp, $action); + array_push($tmp, $data->getLabel()); - if($this->getParameter("appMasteridentity")=="LDAP"||$this->getParameter("appSynchro")=="LDAP2NINE") array_push($tmp,$data->getLdapfilter()); - if($this->getParameter("appMasteridentity")=="SSO") array_push($tmp,$data->getAttributes()); + if ('LDAP' == $this->getParameter('appMasteridentity') || 'LDAP2NINE' == $this->getParameter('appSynchro')) { + array_push($tmp, $data->getLdapfilter()); + } + if ('SSO' == $this->getParameter('appMasteridentity')) { + array_push($tmp, $data->getAttributes()); + } - array_push($output["data"],$tmp); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - - public function submit($access,Request $request,ManagerRegistry $em): Response + public function submit($access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement $data = new Entity(); $data->setApikey(Uuid::uuid4()); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"submit", - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appSynchro"=>$this->GetParameter("appSynchro"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'submit', + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appSynchro' => $this->GetParameter('appSynchro'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); - + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); + // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); @@ -129,73 +131,77 @@ class Niveau01Controller extends AbstractController // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "mode"=>"submit", - "form"=>$form->createView(), - $this->data=>$data, - "access"=>$access, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'mode' => 'submit', + 'form' => $form->createView(), + $this->data => $data, + 'access' => $access, ]); } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appSynchro"=>$this->GetParameter("appSynchro"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appSynchro' => $this->GetParameter('appSynchro'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); $em->getManager()->flush(); // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'form' => $form->createView(), - "access" => $access + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'form' => $form->createView(), + 'access' => $access, ]); } - public function delete($id,$access,Request $request,ManagerRegistry $em): Response + public function delete($id, $access, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); + + return $this->redirectToRoute($this->route.'_update', ['id' => $id]); } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute($this->route."_update",["id"=>$id]); - } - + return $this->redirectToRoute($this->route); - } -} \ No newline at end of file + } +} diff --git a/src/Controller/Niveau02Controller.php b/src/Controller/Niveau02Controller.php index 13ca8e6..f38736f 100644 --- a/src/Controller/Niveau02Controller.php +++ b/src/Controller/Niveau02Controller.php @@ -1,328 +1,337 @@ render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function tablelist($access,Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $total=null; - $totalf=null; - - // Nombre total d'enregistrement - switch($access) { - case "admin": - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); - break; + public function tablelist($access, Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $total = null; + $totalf = null; - case "modo": + // Nombre total d'enregistrement + switch ($access) { + case 'admin': + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); + break; + + case 'modo': $total = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App\Entity\UserModo",'usermodo') - ->where("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("user", $this->getUser()) - ->getQuery()->getSingleScalarResult(); - break; + ->from($this->entity, 'entity') + ->from("App\Entity\UserModo", 'usermodo') + ->where('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('user', $this->getUser()) + ->getQuery()->getSingleScalarResult(); + break; } - - // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - switch($access) { - case "admin": - $totalf= $em->getManager()->createQueryBuilder() + } else { + switch ($access) { + case 'admin': + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App\Entity\Niveau01",'niveau01') + ->from($this->entity, 'entity') + ->from("App\Entity\Niveau01", 'niveau01') ->where('entity.niveau01=niveau01.id') ->andwhere('entity.label LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); - break; + break; - case "modo": - $totalf= $em->getManager()->createQueryBuilder() + case 'modo': + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App\Entity\Niveau01",'niveau01') - ->from("App\Entity\UserModo",'usermodo') + ->from($this->entity, 'entity') + ->from("App\Entity\Niveau01", 'niveau01') + ->from("App\Entity\UserModo", 'usermodo') ->where('entity.niveau01=niveau01.id') ->andwhere('entity.label LIKE :value OR niveau01.label LIKE :value') - ->andWhere("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("user", $this->getUser()) + ->andWhere('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('user', $this->getUser()) ->getQuery() ->getSingleScalarResult(); - break; + break; } } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - switch($access) { - case "admin": + switch ($access) { + case 'admin': $qb->select('entity') - ->from($this->entity,'entity') - ->from("App:Niveau01",'niveau01') + ->from($this->entity, 'entity') + ->from('App:Niveau01', 'niveau01') ->where('entity.niveau01=niveau01.id'); - break; + break; - case "modo": + case 'modo': $qb->select('entity') - ->from($this->entity,'entity') - ->from("App:Niveau01",'niveau01') - ->from("App\Entity\UserModo",'usermodo') + ->from($this->entity, 'entity') + ->from('App:Niveau01', 'niveau01') + ->from("App\Entity\UserModo", 'usermodo') ->where('entity.niveau01=niveau01.id') - ->andWhere("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("user", $this->getUser()); - break; + ->andWhere('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('user', $this->getUser()); + break; } - if($search&&$search["value"]!="") { - $qb ->andwhere('entity.label LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + if ($search && '' != $search['value']) { + $qb->andwhere('entity.label LIKE :value OR niveau01.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - if($ordercolumn) { - switch($ordercolumn) { - case 1 : - $qb->orderBy('niveau01.label',$orderdir); - break; + if ($ordercolumn) { + switch ($ordercolumn) { + case 1: + $qb->orderBy('niveau01.label', $orderdir); + break; - case 2 : - $qb->orderBy('entity.label',$orderdir); - break; + case 2: + $qb->orderBy('entity.label', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - switch($access) { - case "admin": - $action.="$data->getId()))."'>"; - break; - case "modo": - $action.="$data->getId()))."'>"; - break; + $action = ''; + switch ($access) { + case 'admin': + $action .= " $data->getId()])."'>"; + break; + case 'modo': + $action .= "route).'_update', ['id' => $data->getId()])."'>"; + break; } - $tmp=array(); - array_push($tmp,$action); - array_push($tmp,$data->getNiveau01()->getLabel()); - array_push($tmp,$data->getLabel()); + $tmp = []; + array_push($tmp, $action); + array_push($tmp, $data->getNiveau01()->getLabel()); + array_push($tmp, $data->getLabel()); - array_push($output["data"],$tmp); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - public function selectlist(Request $request,ManagerRegistry $em): Response + public function selectlist(Request $request, ManagerRegistry $em): Response { - $output=array(); - $page_limit=$request->query->get('page_limit'); - $q=$request->query->get('q'); - $niveau01id=$request->get('niveau01'); + $output = []; + $page_limit = $request->query->get('page_limit'); + $q = $request->query->get('q'); + $niveau01id = $request->get('niveau01'); $qb = $em->getManager()->createQueryBuilder(); $qb->select('entity') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.label LIKE :value') ->andwhere('entity.niveau01=:niveau01') - ->setParameter("value", "%".$q."%") - ->setParameter("niveau01", $niveau01id) + ->setParameter('value', '%'.$q.'%') + ->setParameter('niveau01', $niveau01id) ->orderBy('entity.label'); - - $datas=$qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult(); - foreach($datas as $data) { - array_push($output,array("id"=>$data->getId(),"text"=>$data->getLabel())); + + $datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult(); + foreach ($datas as $data) { + array_push($output, ['id' => $data->getId(), 'text' => $data->getLabel()]); } - $ret_string["results"]=$output; - $response = new Response(json_encode($ret_string)); - $response->headers->set('Content-Type', 'application/json'); - return $response; - } + $ret_string['results'] = $output; + $response = new Response(json_encode($ret_string)); + $response->headers->set('Content-Type', 'application/json'); - public function submit($access,Request $request,ManagerRegistry $em): Response + return $response; + } + + public function submit($access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement $data = new Entity(); $data->setApikey(Uuid::uuid4()); // Controler les permissions - $this->cansubmit($access,$em); + $this->cansubmit($access, $em); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"submit", - "access"=>$access, - "userid"=>$this->getUser()->getId(), - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'submit', + 'access' => $access, + 'userid' => $this->getUser()->getId(), + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); - + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); + // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "mode"=>"submit", - "access"=>$access, - "form"=>$form->createView(), - $this->data=>$data, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'mode' => 'submit', + 'access' => $access, + 'form' => $form->createView(), + $this->data => $data, ]); } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'access' => $access, - 'form' => $form->createView() + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'access' => $access, + 'form' => $form->createView(), ]); } - public function delete($id,$access,Request $request,ManagerRegistry $em): Response + public function delete($id, $access, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); - } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)."_update",["id"=>$id]); - } - - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); - } + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); - private function cansubmit($access,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : return true; break; + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route).'_update', ['id' => $id]); + } + + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); + } + + private function cansubmit($access, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': return true; + break; } throw $this->createAccessDeniedException('Permission denied'); } + private function canupdate($access, $entity, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': + $usermodo = $em->getRepository("App\Entity\UserModo")->findOneBy(['user' => $this->getUser(), 'niveau01' => $entity->getNiveau01()]); + if (!$usermodo) { + throw $this->createAccessDeniedException('Permission denied'); + } - private function canupdate($access,$entity,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : - $usermodo=$em->getRepository("App\Entity\UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$entity->getNiveau01()]); - if(!$usermodo) throw $this->createAccessDeniedException('Permission denied'); return true; - break; + break; } throw $this->createAccessDeniedException('Permission denied'); } -} \ No newline at end of file +} diff --git a/src/Controller/PublishController.php b/src/Controller/PublishController.php index 3ef2dc2..30309ab 100644 --- a/src/Controller/PublishController.php +++ b/src/Controller/PublishController.php @@ -1,4 +1,5 @@ render('Home/publishsample.html.twig',[ - 'id'=>$id + public function sample($id) + { + return $this->render('Home/publishsample.html.twig', [ + 'id' => $id, ]); } public function publish($channel, $id, Request $request, HubInterface $hub): Response { - $ret=$request->get("msg"); - $ret["from"]=[]; - $ret["from"]["id"]=$this->getUser()->getId(); - $ret["from"]["username"]=$this->getUser()->getUsername(); - $ret["from"]["displayname"]=$this->getUser()->getDisplayname(); - $ret["from"]["avatar"]=$this->generateUrl('app_minio_image',["file"=>"avatar/".$this->getUser()->getAvatar()]); - + $ret = $request->get('msg'); + $ret['from'] = []; + $ret['from']['id'] = $this->getUser()->getId(); + $ret['from']['username'] = $this->getUser()->getUsername(); + $ret['from']['displayname'] = $this->getUser()->getDisplayname(); + $ret['from']['avatar'] = $this->generateUrl('app_minio_image', ['file' => 'avatar/'.$this->getUser()->getAvatar()]); $update = new Update( - $channel."-".$id, + $channel.'-'.$id, json_encode( ['ret' => $ret]) ); @@ -35,4 +36,4 @@ class PublishController extends AbstractController return new Response('published!'); } -} \ No newline at end of file +} diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index 7ef003f..815e4bf 100755 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -2,224 +2,223 @@ namespace App\Controller; - -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\JsonResponse; -use Doctrine\Persistence\ManagerRegistry; -use Symfony\Component\Form\FormError; -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use App\Service\MailService; - -use Ramsey\Uuid\Uuid; - -use App\Entity\User; use App\Entity\Registration; +use App\Entity\User; use App\Form\RegistrationType as Form; use App\Form\ResetpwdType; +use App\Service\MailService; +use Doctrine\Persistence\ManagerRegistry; +use Ramsey\Uuid\Uuid; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\Form\FormError; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; class RegistrationController extends AbstractController { - private $data="registration"; - private $entity="App\Entity\Registration"; - private $twig="Registration/"; - private $route="app_admin_registration"; + private $data = 'registration'; + private $entity = "App\Entity\Registration"; + private $twig = 'Registration/'; + private $route = 'app_admin_registration'; private $mail; - public function __construct(MailService $mail) { + + public function __construct(MailService $mail) + { $this->mail = $mail; } public function list($access) { - $appmoderegistration = $this->getParameter('appModeregistration'); - $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appmoderegistration=="none"||$appMasteridentity!="SQL") + $appmoderegistration = $this->getParameter('appModeregistration'); + $appMasteridentity = $this->getParameter('appMasteridentity'); + if ('none' == $appmoderegistration || 'SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); + } - return $this->render($this->twig.'list.html.twig',[ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - 'access' => $access, + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function tablelist($access, Request $request,ManagerRegistry $em): Response + public function tablelist($access, Request $request, ManagerRegistry $em): Response { - - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $usermodo=null; - + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $usermodo = null; + // Nombre total d'enregistrement - if($access=="admin") - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); - else { - $usermodo=$this->getUser(); + if ('admin' == $access) { + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); + } else { + $usermodo = $this->getUser(); $total = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App:UserModo",'usermodo') - ->where("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("user", $usermodo) - ->getQuery()->getSingleScalarResult(); + ->from($this->entity, 'entity') + ->from('App:UserModo', 'usermodo') + ->where('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('user', $usermodo) + ->getQuery()->getSingleScalarResult(); } // Nombre d'enregistrement filtré - if($search["value"]=="") + if ('' == $search['value']) { $totalf = $total; - else { - if($access=="admin") - $totalf= $em->getManager()->createQueryBuilder() + } else { + if ('admin' == $access) { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.username LIKE :value') ->orWhere('entity.email LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); - else - $totalf= $em->getManager()->createQueryBuilder() + } else { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App:UserModo",'usermodo') + ->from($this->entity, 'entity') + ->from('App:UserModo', 'usermodo') ->where('entity.username LIKE :value OR entity.email LIKE :value') - ->andWhere("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("user", $usermodo) + ->andWhere('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('user', $usermodo) ->getQuery() - ->getSingleScalarResult(); + ->getSingleScalarResult(); + } } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - if($this->isGranted('ROLE_ADMIN')) { - $qb->select('entity')->from($this->entity,'entity')->from('App:Niveau01','niveau01'); + if ($this->isGranted('ROLE_ADMIN')) { + $qb->select('entity')->from($this->entity, 'entity')->from('App:Niveau01', 'niveau01'); $qb->where('entity.niveau01=niveau01.id'); - } - else{ - $qb->select('entity')->from($this->entity,'entity')->from('App:Niveau01','niveau01')->from("App:UserModo",'usermodo'); + } else { + $qb->select('entity')->from($this->entity, 'entity')->from('App:Niveau01', 'niveau01')->from('App:UserModo', 'usermodo'); $qb->where('entity.niveau01=niveau01.id') - ->andWhere("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("user", $usermodo); + ->andWhere('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('user', $usermodo); } - - if($search["value"]!="") { - $qb ->andWhere('entity.username LIKE :value OR entity.email LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + if ('' != $search['value']) { + $qb->andWhere('entity.username LIKE :value OR entity.email LIKE :value OR niveau01.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.username',$orderdir); - break; + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.username', $orderdir); + break; - case 2 : - $qb->orderBy('entity.email',$orderdir); - break; + case 2: + $qb->orderBy('entity.email', $orderdir); + break; - case 3 : - $qb->orderBy('entity.label',$orderdir); - break; - - case 4 : - $qb->orderBy('entity.statut',$orderdir); - break; + case 3: + $qb->orderBy('entity.label', $orderdir); + break; - case 5 : - $qb->orderBy('entity.keyexpire',$orderdir); - break; + case 4: + $qb->orderBy('entity.statut', $orderdir); + break; + + case 5: + $qb->orderBy('entity.keyexpire', $orderdir); + break; } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { - $action =""; + foreach ($datas as $data) { + $action = ''; // Si inscription non périmée - if($data->getStatut()<=2) { - $action.="$data->getId()))."'>"; + if ($data->getStatut() <= 2) { + $action .= " $data->getId()])."'>"; } - $statut=""; - switch($data->getStatut()) { - case 1: $statut='En attente validation Administration'; break; - case 2: $statut='En attente validation Utilisateur'; break; - case 3: $statut='Inscription expirée'; break; + $statut = ''; + switch ($data->getStatut()) { + case 1: $statut = 'En attente validation Administration'; + break; + case 2: $statut = 'En attente validation Utilisateur'; + break; + case 3: $statut = 'Inscription expirée'; + break; } - array_push($output["data"],array( + array_push($output['data'], [ $action, $data->getUsername(), $data->getEmail(), $data->getNiveau01()->getLabel(), $statut, - (is_null($data->getKeyexpire())?"":$data->getKeyexpire()->format('d/m/Y H:i:s')) - )); + is_null($data->getKeyexpire()) ? '' : $data->getKeyexpire()->format('d/m/Y H:i:s'), + ]); } // Retour return new JsonResponse($output); } - - - public function submit(Request $request,ManagerRegistry $em): Response + public function submit(Request $request, ManagerRegistry $em): Response { - $appmoderegistration = $this->getParameter('appModeregistration'); - $appMasteridentity = $this->getParameter('appMasteridentity'); + $appmoderegistration = $this->getParameter('appModeregistration'); + $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appmoderegistration=="none"||$appMasteridentity!="SQL") + if ('none' == $appmoderegistration || 'SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); + } $data = new Registration(); $data->setIsvisible(true); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"submit", - "access"=>"user", - "userid"=>null, - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'submit', + 'access' => 'user', + 'userid' => null, + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); // si mode de registration BYUSER - if($appmoderegistration=="BYUSER") { - $idstatut=2; - } - else { + if ('BYUSER' == $appmoderegistration) { + $idstatut = 2; + } else { // On recherche le domaine du mail dans la liste blanche - $email=explode("@",$data->getEmail()); - $domaine=end($email); - $whitelist = $em->getRepository("App\Entity\Whitelist")->findBy(["label"=>$domaine]); - $idstatut=(!$whitelist?1:2); + $email = explode('@', $data->getEmail()); + $domaine = end($email); + $whitelist = $em->getRepository("App\Entity\Whitelist")->findBy(['label' => $domaine]); + $idstatut = (!$whitelist ? 1 : 2); } $data->setStatut($idstatut); // Sur erreur - $this->getErrorForm(null,$form,$request,$data,"submit",$idstatut,$em); + $this->getErrorForm(null, $form, $request, $data, 'submit', $idstatut, $em); // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { @@ -228,79 +227,78 @@ class RegistrationController extends AbstractController $appname = $request->getSession()->get('appname'); $noreply = $this->getParameter('appMailnoreply'); $appModeregistrationterme = $this->getParameter('appModeregistrationterme'); - + // si non : validation par administrateur - if($idstatut==1) { + if (1 == $idstatut) { // Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider - $subject=$appname." : Inscription en cours de validation"; - $body="Votre inscription a bien été enregistrée.
Cependant, un administrateur doit encore valider votre inscription avant que celle-ci ne devienne effective.

Vous recevrez un mail quand votre inscription sera validée"; - $info=$body; + $subject = $appname.' : Inscription en cours de validation'; + $body = 'Votre inscription a bien été enregistrée.
Cependant, un administrateur doit encore valider votre inscription avant que celle-ci ne devienne effective.

Vous recevrez un mail quand votre inscription sera validée'; + $info = $body; $to = $data->getEmail(); - $from = $noreply; + $from = $noreply; $fromName = $appname; - $this->mail->sendEmail($subject, $body, $to, $from, $fromName); + $this->mail->sendEmail($subject, $body, $to, $from, $fromName); // Email à l'ensemble administrateurs pour les prévenir qu'il y a une personne à valider $url = $this->generateUrl('app_admin_registration', [], UrlGeneratorInterface::ABSOLUTE_URL); - $to=array(); - $from = $noreply; - $fromName = $appname; - $subject=$appname." : Inscription à valider"; - $motivation = "Login = ".$data->getUsername()."
"; - $motivation.= "Nom = ".$data->getLastname()."
"; - $motivation.= "Prénom = ".$data->getFirstname()."
"; - $motivation.= "Mail = ".$data->getEmail()."
"; - $motivation.= $this->getParameter("appNiveau01label")." = ".$data->getNiveau01()->getLabel(); - $motivation.= $data->getMotivation(); - $body="Un utilisateur dont le mail n’est pas en liste blanche souhaite s’inscrire à ".$appname.".\nMerci d’approuver son inscription pour finaliser celle-ci.

Veuillez vérifier cette inscription à cette adresse:
$url

".$motivation; - $emailadmins= $em ->getManager()->createQueryBuilder() + $to = []; + $from = $noreply; + $fromName = $appname; + $subject = $appname.' : Inscription à valider'; + $motivation = 'Login = '.$data->getUsername().'
'; + $motivation .= 'Nom = '.$data->getLastname().'
'; + $motivation .= 'Prénom = '.$data->getFirstname().'
'; + $motivation .= 'Mail = '.$data->getEmail().'
'; + $motivation .= $this->getParameter('appNiveau01label').' = '.$data->getNiveau01()->getLabel(); + $motivation .= $data->getMotivation(); + $body = 'Un utilisateur dont le mail n’est pas en liste blanche souhaite s’inscrire à '.$appname.".\nMerci d’approuver son inscription pour finaliser celle-ci.

Veuillez vérifier cette inscription à cette adresse:
$url

".$motivation; + $emailadmins = $em->getManager()->createQueryBuilder() ->select('table.email') - ->from("App:User",'table') + ->from('App:User', 'table') ->where('table.roles LIKE :value') - ->setParameter("value", "%ROLE_ADMIN%") + ->setParameter('value', '%ROLE_ADMIN%') ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - foreach($emailadmins as $emailadmin) { - array_push($to,$emailadmin["email"]); + foreach ($emailadmins as $emailadmin) { + array_push($to, $emailadmin['email']); } - $this->mail->sendEmail($subject, $body, $to, $from, $fromName); + $this->mail->sendEmail($subject, $body, $to, $from, $fromName); // Email à l'ensemble des modérateurs du service pour les prévenir qu'il y a une personne à valider - $niveau01id=$data->getNiveau01()->getId(); + $niveau01id = $data->getNiveau01()->getId(); $url = $this->generateUrl('app_modo_registration', [], UrlGeneratorInterface::ABSOLUTE_URL); - $to=array(); - $from = $noreply; - $fromName = $appname; - $subject=$appname." : Inscription à valider"; - $motivation = "Login = ".$data->getUsername()."
"; - $motivation.= "Nom = ".$data->getLastname()."
"; - $motivation.= "Prénom = ".$data->getFirstname()."
"; - $motivation.= "Mail = ".$data->getEmail()."
"; - $motivation.= $this->getParameter("appNiveau01label")." = ".$data->getNiveau01()->getLabel(); - $motivation.= $data->getMotivation(); - $body="Un utilisateur dont le mail n’est pas en liste blanche souhaite s’inscrire à ".$appname.".\nMerci d’approuver son inscription pour finaliser celle-ci.

Veuillez vérifier cette inscription à cette adresse:
$url

".$motivation; - $emailmodos= $em ->getManager()->createQueryBuilder() + $to = []; + $from = $noreply; + $fromName = $appname; + $subject = $appname.' : Inscription à valider'; + $motivation = 'Login = '.$data->getUsername().'
'; + $motivation .= 'Nom = '.$data->getLastname().'
'; + $motivation .= 'Prénom = '.$data->getFirstname().'
'; + $motivation .= 'Mail = '.$data->getEmail().'
'; + $motivation .= $this->getParameter('appNiveau01label').' = '.$data->getNiveau01()->getLabel(); + $motivation .= $data->getMotivation(); + $body = 'Un utilisateur dont le mail n’est pas en liste blanche souhaite s’inscrire à '.$appname.".\nMerci d’approuver son inscription pour finaliser celle-ci.

Veuillez vérifier cette inscription à cette adresse:
$url

".$motivation; + $emailmodos = $em->getManager()->createQueryBuilder() ->select('user.email') - ->from("App:UserModo",'usermodo') - ->from("App:User",'user') - ->where("usermodo.niveau01 = :niveau01id") - ->andWhere("user.id = usermodo.user") + ->from('App:UserModo', 'usermodo') + ->from('App:User', 'user') + ->where('usermodo.niveau01 = :niveau01id') + ->andWhere('user.id = usermodo.user') ->andWhere('user.roles LIKE :value') - ->setParameter("niveau01id", $niveau01id) - ->setParameter("value", "%ROLE_MODO%") + ->setParameter('niveau01id', $niveau01id) + ->setParameter('value', '%ROLE_MODO%') ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - foreach($emailmodos as $emailmodo) { - array_push($to,$emailmodo["email"]); + foreach ($emailmodos as $emailmodo) { + array_push($to, $emailmodo['email']); } - $this->mail->sendEmail($subject, $body, $to, $from, $fromName); - + $this->mail->sendEmail($subject, $body, $to, $from, $fromName); } // si oui : Domaine de confiance : email de validation d'inscription directement à l'utilisateur else { // Génération de la date de fin de validité de la clé - $keyexpire=new \DateTime(); + $keyexpire = new \DateTime(); $keyexpire->add(new \DateInterval('PT'.$appModeregistrationterme.'H')); // Enregistrement des valeurs @@ -308,88 +306,89 @@ class RegistrationController extends AbstractController $data->setKeyexpire($keyexpire); // Email à l'utilisateur - $url = $this->generateUrl('app_registration_validation', array("key"=>$data->getKeyvalue()), UrlGeneratorInterface::ABSOLUTE_URL); - $subject=$appname." : confirmation de validation"; - $body="

Merci de confirmer votre inscription en cliquant sur le lien suivant

".$url."


Attention vous disposez d’un délai de 8 heures pour le faire. Passé ce délai, vous devrez vous réinscrire.

"; - $info="Vous allez recevoir un mail de confirmation pour finaliser votre inscription"; + $url = $this->generateUrl('app_registration_validation', ['key' => $data->getKeyvalue()], UrlGeneratorInterface::ABSOLUTE_URL); + $subject = $appname.' : confirmation de validation'; + $body = "

Merci de confirmer votre inscription en cliquant sur le lien suivant

".$url.'


Attention vous disposez d’un délai de 8 heures pour le faire. Passé ce délai, vous devrez vous réinscrire.

'; + $info = 'Vous allez recevoir un mail de confirmation pour finaliser votre inscription'; $to = $data->getEmail(); - $from = $noreply; + $from = $noreply; $fromName = $appname; - $this->mail->sendEmail($subject, $body, $to, $from, $fromName); + $this->mail->sendEmail($subject, $body, $to, $from, $fromName); } // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); - + // A voir retour sur un écran d'info indiquant si validation par admion ou s'il doit matter ses email $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', "info"); + $request->getSession()->set('registrationmode', 'info'); $request->getSession()->set('registrationredirectto', null); return $this->redirectToRoute('app_registration_info'); - } - else { + } else { return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => false, - 'maxsize' => 1200, - $this->data => $data, - 'mode' => 'submit', - 'form' => $form->createView() + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxsize' => 1200, + $this->data => $data, + 'mode' => 'submit', + 'form' => $form->createView(), ]); } - } + public function info(Request $request) { $info = $request->getSession()->get('registrationinfo'); $mode = $request->getSession()->get('registrationmode'); $redirectto = $request->getSession()->get('registrationredirectto'); - return $this->render($this->twig.'info.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => false, - 'maxwidth' => true, - 'info' => $info, - 'mode' => $mode, - 'redirectto' => $redirectto, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxwidth' => true, + 'info' => $info, + 'mode' => $mode, + 'redirectto' => $redirectto, ]); } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { $appname = $request->getSession()->get('appname'); $noreply = $this->getParameter('appMailnoreply'); $appModeregistrationterme = $this->getParameter('appModeregistrationterme'); - $appMasteridentity = $this->getParameter('appMasteridentity'); + $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appModeregistrationterme=="none"||$appMasteridentity!="SQL") + if ('none' == $appModeregistrationterme || 'SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); - + } + // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - "access"=>$access, - "userid"=>$this->getUser()->getId(), - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + 'access' => $access, + 'userid' => $this->getUser()->getId(), + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation if ($form->get('save')->isClicked() && $form->isValid()) { $data = $form->getData(); @@ -398,19 +397,19 @@ class RegistrationController extends AbstractController $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { $data = $form->getData(); - + $appname = $request->getSession()->get('appname'); $noreply = $this->getParameter('appMailnoreply'); $appModeregistrationterme = $this->getParameter('appModeregistrationterme'); - + // Génération de la date de fin de validité de la clé - $keyexpire=new \DateTime(); + $keyexpire = new \DateTime(); $keyexpire->add(new \DateInterval('PT'.$appModeregistrationterme.'H')); // Enregistrement des valeurs @@ -421,11 +420,11 @@ class RegistrationController extends AbstractController $data->setStatut(2); // Email à l'utilisateur - $url = $this->generateUrl('app_registration_validation', array("key"=>$data->getKeyvalue()), UrlGeneratorInterface::ABSOLUTE_URL); - $subject=$appname." : confirmation de validation"; - $body="

Merci de confirmer votre inscription en cliquant sur le lien suivant

".$url."


Attention vous disposez d’un délai de 8 heures pour le faire. Passé ce délai, vous devrez vous réinscrire.

"; + $url = $this->generateUrl('app_registration_validation', ['key' => $data->getKeyvalue()], UrlGeneratorInterface::ABSOLUTE_URL); + $subject = $appname.' : confirmation de validation'; + $body = "

Merci de confirmer votre inscription en cliquant sur le lien suivant

".$url.'


Attention vous disposez d’un délai de 8 heures pour le faire. Passé ce délai, vous devrez vous réinscrire.

'; $to = $data->getEmail(); - $from = $noreply; + $from = $noreply; $fromName = $appname; $this->mail->sendEmail($subject, $body, $to, $from, $fromName); @@ -433,60 +432,60 @@ class RegistrationController extends AbstractController $em->getManager()->flush(); // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'access' => $access, - 'form' => $form->createView() - ]); + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'access' => $access, + 'form' => $form->createView(), + ]); } - public function validation($key,Request $request,ManagerRegistry $em) + public function validation($key, Request $request, ManagerRegistry $em) { - $appmoderegistration = $this->getParameter('appModeregistration'); - $appMasteridentity = $this->getParameter('appMasteridentity'); + $appmoderegistration = $this->getParameter('appModeregistration'); + $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appmoderegistration=="none"||$appMasteridentity!="SQL") + if ('none' == $appmoderegistration || 'SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); + } - $now=new \DateTime(); - - $data = $em ->getManager()->createQueryBuilder() + $now = new \DateTime(); + + $data = $em->getManager()->createQueryBuilder() ->select('entity') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.keyvalue= :key') ->andWhere('entity.keyexpire >= :date') - ->setParameter("key", $key) - ->setParameter("date", $now) + ->setParameter('key', $key) + ->setParameter('date', $now) ->getQuery() ->getSingleResult(); - if(!$data) { - $info="Clé de validation invalide"; - $mode="danger"; + if (!$data) { + $info = 'Clé de validation invalide'; + $mode = 'danger'; $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', $mode); - $request->getSession()->set('registrationredirectto', null); - } - else { - $url=$this->generateUrl('app_login'); - $info="

Votre compte est à présent activé

Vous allez être redirigé vers la mire de connexion

Connexion"; - $mode="success"; + $request->getSession()->set('registrationmode', $mode); + $request->getSession()->set('registrationredirectto', null); + } else { + $url = $this->generateUrl('app_login'); + $info = "

Votre compte est à présent activé

Vous allez être redirigé vers la mire de connexion

Connexion"; + $mode = 'success'; $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', $mode); + $request->getSession()->set('registrationmode', $mode); // Initialisation de l'enregistrement $user = new User(); - $user->setAvatar("noavatar.png"); + $user->setAvatar('noavatar.png'); $user->setUsername($data->getUsername()); $user->setEmail($data->getEmail()); $user->setLastname($data->getLastname()); @@ -505,7 +504,7 @@ class RegistrationController extends AbstractController $user->setPostaladress($data->getPostaladress()); $user->setJob($data->getJob()); $user->setPosition($data->getPosition()); - $user->setRoles(["ROLE_USER"]); + $user->setRoles(['ROLE_USER']); // Sauvegarde $em->getManager()->persist($user); @@ -515,77 +514,79 @@ class RegistrationController extends AbstractController $em->getManager()->remove($data); $em->getManager()->flush(); } - + return $this->redirectToRoute('app_registration_info'); } - - public function delete($id,$access,Request $request,ManagerRegistry $em) + public function delete($id, $access, Request $request, ManagerRegistry $em) { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->candelete($access,$data,$em); - + $this->candelete($access, $data, $em); // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); + + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route).'_update', ['id' => $id]); } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)."_update",["id"=>$id]); - } - - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - public function resetpwd01(Request $request,ManagerRegistry $em) + public function resetpwd01(Request $request, ManagerRegistry $em) { - $appmoderegistration = $this->getParameter('appModeregistration'); - $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appMasteridentity!="SQL") + $appmoderegistration = $this->getParameter('appModeregistration'); + $appMasteridentity = $this->getParameter('appMasteridentity'); + if ('SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); + } // Création du formulaire - $form = $this->createForm(ResetpwdType::class,null,array("mode"=>"resetpwd01")); + $form = $this->createForm(ResetpwdType::class, null, ['mode' => 'resetpwd01']); // Récupération des data du formulaire $form->handleRequest($request); $data = $form->getData(); if ($form->get('submit')->isClicked()) { - $user=$em->getRepository("App\Entity\User")->findOneby(["email"=>$data->getEmail()]); + $user = $em->getRepository("App\Entity\User")->findOneby(['email' => $data->getEmail()]); // On s'assure que le mail existe dans la base des utilisateurs - if(!$user) { - $request->getSession()->getFlashBag()->add("error", 'Mail inconnu'); + if (!$user) { + $request->getSession()->getFlashBag()->add('error', 'Mail inconnu'); // Affichage du formulaire - dump("here"); + dump('here'); + return $this->render($this->twig.'resetpwd01.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => false, - 'maxsize' => 1200, - 'form' => $form->createView() - ]); + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxsize' => 1200, + 'form' => $form->createView(), + ]); } } // Sur validation if ($form->get('submit')->isClicked()) { - $user=$em->getRepository("App\Entity\User")->findOneby(["email"=>$data->getEmail()]); + $user = $em->getRepository("App\Entity\User")->findOneby(['email' => $data->getEmail()]); $appname = $request->getSession()->get('appname'); $noreply = $this->getParameter('appMailnoreply'); $appModeregistrationterme = $this->getParameter('appModeregistrationterme'); // Génération de la date de fin de validité de la clé - $keyexpire=new \DateTime(); + $keyexpire = new \DateTime(); $keyexpire->add(new \DateInterval('PT'.$appModeregistrationterme.'H')); // Enregistrement des valeurs @@ -596,67 +597,68 @@ class RegistrationController extends AbstractController $em->getManager()->flush(); // Email au user - $url = $this->generateUrl('app_resetpwd02', array("key"=>$user->getKeyvalue()), UrlGeneratorInterface::ABSOLUTE_URL); - $subject=$appname." : réinitialisation mot de passe"; - $body="

Merci de réinitialiser votre mot de passe en cliquant sur le lien suivant

".$url."


Attention vous disposez d’un délai de ".$appModeregistrationterme." heures pour le faire.

Vous pourrez par la suite vous connecter avec votre login : ".$user->getUsername()."

"; + $url = $this->generateUrl('app_resetpwd02', ['key' => $user->getKeyvalue()], UrlGeneratorInterface::ABSOLUTE_URL); + $subject = $appname.' : réinitialisation mot de passe'; + $body = "

Merci de réinitialiser votre mot de passe en cliquant sur le lien suivant

".$url.'


Attention vous disposez d’un délai de '.$appModeregistrationterme.' heures pour le faire.

Vous pourrez par la suite vous connecter avec votre login : '.$user->getUsername().'

'; $to = $user->getEmail(); - $from = $noreply; + $from = $noreply; $fromName = $appname; $this->mail->sendEmail($subject, $body, $to, $from, $fromName); - + // Info - $info="Vous allez recevoir un mail avec lien qui vous permettra de réinitialiser votre mot de passe"; - $mode="info"; + $info = 'Vous allez recevoir un mail avec lien qui vous permettra de réinitialiser votre mot de passe'; + $mode = 'info'; $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', $mode); - $request->getSession()->set('registrationredirectto', null); + $request->getSession()->set('registrationmode', $mode); + $request->getSession()->set('registrationredirectto', null); return $this->redirectToRoute('app_registration_info'); } // Affichage du formulaire return $this->render($this->twig.'resetpwd01.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => false, - 'maxsize' => 1200, - 'form' => $form->createView() + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxsize' => 1200, + 'form' => $form->createView(), ]); } - public function resetpwd02($key,Request $request,ManagerRegistry $em) + public function resetpwd02($key, Request $request, ManagerRegistry $em) { $appMasteridentity = $this->getParameter('appMasteridentity'); - if($appMasteridentity!="SQL") + if ('SQL' != $appMasteridentity) { throw $this->createAccessDeniedException('Permission denied'); - - $now=new \DateTime(); - - $user = $em ->getManager()->createQueryBuilder() + } + + $now = new \DateTime(); + + $user = $em->getManager()->createQueryBuilder() ->select('table') - ->from("App:User",'table') + ->from('App:User', 'table') ->where('table.keyvalue= :key') ->andWhere('table.keyexpire >= :date') - ->setParameter("key", $key) - ->setParameter("date", $now) + ->setParameter('key', $key) + ->setParameter('date', $now) ->getQuery() ->getSingleResult(); - if(!$user) { - $info="Clé de validation invalide"; - $mode="danger"; + if (!$user) { + $info = 'Clé de validation invalide'; + $mode = 'danger'; $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', $mode); - $request->getSession()->set('registrationredirectto', null); + $request->getSession()->set('registrationmode', $mode); + $request->getSession()->set('registrationredirectto', null); + return $this->redirectToRoute('app_registration_info'); - } - else { + } else { // Création du formulaire - $form = $this->createForm(ResetpwdType::class,$user,array("mode"=>"resetpwd02")); + $form = $this->createForm(ResetpwdType::class, $user, ['mode' => 'resetpwd02']); // Récupération des data du formulaire $form->handleRequest($request); - + if ($form->get('submit')->isClicked() && $form->isValid()) { $data = $form->getData(); $user->setKeyvalue(null); @@ -664,74 +666,85 @@ class RegistrationController extends AbstractController $user->setPassword($data->getPassword()); // Sauvegarde - $em->getManager()->flush(); + $em->getManager()->flush(); - $url=$this->generateUrl('app_login'); - $info="

Nouveau mot de passe prise en compte

Vous allez être redirigé vers la mire de connexion

Connexion"; - $mode="success"; + $url = $this->generateUrl('app_login'); + $info = "

Nouveau mot de passe prise en compte

Vous allez être redirigé vers la mire de connexion

Connexion"; + $mode = 'success'; $request->getSession()->set('registrationinfo', $info); - $request->getSession()->set('registrationmode', $mode); - $request->getSession()->set('registrationredirectto', null); + $request->getSession()->set('registrationmode', $mode); + $request->getSession()->set('registrationredirectto', null); + return $this->redirectToRoute('app_registration_info'); } // Affichage du formulaire return $this->render($this->twig.'resetpwd02.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => false, - 'maxsize' => 1200, - 'form' => $form->createView() - ]); + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => false, + 'maxsize' => 1200, + 'form' => $form->createView(), + ]); } } - private function canupdate($access,$entity,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : - $usermodo=$em->getRepository("App\Entity\UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$entity->getNiveau01()]); - if(!$usermodo) throw $this->createAccessDeniedException('Permission denied'); + private function canupdate($access, $entity, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': + $usermodo = $em->getRepository("App\Entity\UserModo")->findOneBy(['user' => $this->getUser(), 'niveau01' => $entity->getNiveau01()]); + if (!$usermodo) { + throw $this->createAccessDeniedException('Permission denied'); + } + return true; - break; + break; } throw $this->createAccessDeniedException('Permission denied'); - } + } + + private function candelete($access, $entity, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': + $usermodo = $em->getRepository("App\Entity\UserModo")->findOneBy(['user' => $this->getUser(), 'niveau01' => $entity->getNiveau01()]); + if (!$usermodo) { + throw $this->createAccessDeniedException('Permission denied'); + } - private function candelete($access,$entity,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : - $usermodo=$em->getRepository("App\Entity\UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$entity->getNiveau01()]); - if(!$usermodo) throw $this->createAccessDeniedException('Permission denied'); return true; - break; + break; } throw $this->createAccessDeniedException('Permission denied'); - } + } - protected function getErrorForm($id,$form,$request,$data,$mode,$idstatut,$em) { - if ($form->get('submit')->isClicked() && $mode=="submit") { + protected function getErrorForm($id, $form, $request, $data, $mode, $idstatut, $em) + { + if ($form->get('submit')->isClicked() && 'submit' == $mode) { // Si validation par administrateur demander une motivation $appmoderegistration = $this->getParameter('appModeregistration'); - if(is_null($data->getMotivation())&&$appmoderegistration=="BYADMIN") { + if (is_null($data->getMotivation()) && 'BYADMIN' == $appmoderegistration) { // On recherche le domaine du mail dans la liste blanche - $email=explode("@",$data->getEmail()); - $domaine=end($email); - $whitelist = $em->getManager()->getRepository("App\Entity\Whitelist")->findBy(["label"=>$domaine]); - if(!$whitelist) - $form->addError(new FormError("Attention, le suffixe de votre adresse mail n’est pas dans la liste des administrations autorisées, merci de bien vouloir privilégier votre adresse professionnelle si vous en avez une.
Si ce n’est pas le cas, il faut que vous renseigniez la case motivation de votre demande")); + $email = explode('@', $data->getEmail()); + $domaine = end($email); + $whitelist = $em->getManager()->getRepository("App\Entity\Whitelist")->findBy(['label' => $domaine]); + if (!$whitelist) { + $form->addError(new FormError('Attention, le suffixe de votre adresse mail n’est pas dans la liste des administrations autorisées, merci de bien vouloir privilégier votre adresse professionnelle si vous en avez une.
Si ce n’est pas le cas, il faut que vous renseigniez la case motivation de votre demande')); + } } } if ($form->get('submit')->isClicked() && !$form->isValid()) { $errors = $form->getErrors(); - foreach( $errors as $error ) { - $request->getSession()->getFlashBag()->add("error", $error->getMessage()); - $request->getSession()->getFlashBag()->add("error", $error->getMessage()); + foreach ($errors as $error) { + $request->getSession()->getFlashBag()->add('error', $error->getMessage()); + $request->getSession()->getFlashBag()->add('error', $error->getMessage()); } } } - - } diff --git a/src/Controller/RestController.php b/src/Controller/RestController.php index f2119dd..95cf43f 100644 --- a/src/Controller/RestController.php +++ b/src/Controller/RestController.php @@ -2,22 +2,21 @@ namespace App\Controller; +use Doctrine\Persistence\ManagerRegistry; use FOS\RestBundle\Controller\AbstractFOSRestController; -use Symfony\Component\HttpFoundation\Request; use FOS\RestBundle\Controller\Annotations as FOSRest; use OpenApi\Annotations as OA; -use Doctrine\Persistence\ManagerRegistry; +use Symfony\Component\HttpFoundation\Request; class RestController extends AbstractFOSRestController { - private $output=[]; + private $output = []; private $cpt; /** - * getAllUsers + * getAllUsers. * - * - * @FOSRest\Get("/rest/getAllUsers") + * @FOSRest\Get("/rest/getAllUsers") * @OA\Response( * response=200, * description="get all users" @@ -31,35 +30,33 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - - public function getAllUsers(Request $request,ManagerRegistry $em) { + public function getAllUsers(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $users=$em->getRepository("App\Entity\User")->findAll(); - foreach($users as $user) { - array_push($output,$this->userFormat($user)); + $users = $em->getRepository("App\Entity\User")->findAll(); + foreach ($users as $user) { + array_push($output, $this->userFormat($user)); } $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } - /** - * getOneUser + * getOneUser. * - * - * @FOSRest\Get("/rest/getOneUser") + * @FOSRest\Get("/rest/getOneUser") * @OA\Response( * response=200, * description="get one user by login" @@ -80,36 +77,36 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - public function getOneUser(Request $request,ManagerRegistry $em) { + public function getOneUser(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $user=$em->getRepository("App\Entity\User")->findOneBy(["username"=>$request->headers->get("login")]); - if(!$user) { - $view = $this->view("Utilisateur inconnue", 403); - return $this->handleView($view); + $user = $em->getRepository("App\Entity\User")->findOneBy(['username' => $request->headers->get('login')]); + if (!$user) { + $view = $this->view('Utilisateur inconnue', 403); + + return $this->handleView($view); } - $output=$this->userFormat($user); + $output = $this->userFormat($user); $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } - /** - * getAllNiveau01s + * getAllNiveau01s. * - * - * @FOSRest\Get("/rest/getAllNiveau01s") + * @FOSRest\Get("/rest/getAllNiveau01s") * @OA\Response( * response=200, * description="get all niveau01" @@ -123,34 +120,33 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - - public function getAllNiveau01s(Request $request,ManagerRegistry $em) { + public function getAllNiveau01s(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $niveau01s=$em->getRepository("App\Entity\Niveau01")->findAll(); - foreach($niveau01s as $niveau01) { - array_push($output,$this->niveau01Format($niveau01,true)); + $niveau01s = $em->getRepository("App\Entity\Niveau01")->findAll(); + foreach ($niveau01s as $niveau01) { + array_push($output, $this->niveau01Format($niveau01, true)); } $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } /** - * getOneNiveau01 + * getOneNiveau01. * - * - * @FOSRest\Get("/rest/getOneNiveau01") + * @FOSRest\Get("/rest/getOneNiveau01") * @OA\Response( * response=200, * description="get one niveau01 by label" @@ -171,36 +167,36 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - public function getOneNiveau01(Request $request,ManagerRegistry $em) { + public function getOneNiveau01(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $niveau01=$em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$request->headers->get("label")]); - if(!$niveau01) { - $view = $this->view("Niveau01 inconnu", 403); - return $this->handleView($view); + $niveau01 = $em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $request->headers->get('label')]); + if (!$niveau01) { + $view = $this->view('Niveau01 inconnu', 403); + + return $this->handleView($view); } - $output=$this->niveau01Format($niveau01,true); + $output = $this->niveau01Format($niveau01, true); $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } - /** - * getAllNiveau02s + * getAllNiveau02s. * - * - * @FOSRest\Get("/rest/getAllNiveau02s") + * @FOSRest\Get("/rest/getAllNiveau02s") * @OA\Response( * response=200, * description="get all niveau02" @@ -214,34 +210,33 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - - public function getAllNiveau02s(Request $request,ManagerRegistry $em) { + public function getAllNiveau02s(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $niveau02s=$em->getRepository("App\Entity\Niveau02")->findAll(); - foreach($niveau02s as $niveau02) { - array_push($output,$this->niveau02Format($niveau02,true)); + $niveau02s = $em->getRepository("App\Entity\Niveau02")->findAll(); + foreach ($niveau02s as $niveau02) { + array_push($output, $this->niveau02Format($niveau02, true)); } $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } /** - * getOneNiveau02 + * getOneNiveau02. * - * - * @FOSRest\Get("/rest/getOneNiveau02") + * @FOSRest\Get("/rest/getOneNiveau02") * @OA\Response( * response=200, * description="get one niveau02 by label" @@ -262,36 +257,36 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - public function getOneNiveau02(Request $request,ManagerRegistry $em) { + public function getOneNiveau02(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $niveau02=$em->getRepository("App\Entity\Niveau02")->findOneBy(["label"=>$request->headers->get("label")]); - if(!$niveau02) { - $view = $this->view("Niveau02 inconnu", 403); - return $this->handleView($view); + $niveau02 = $em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $request->headers->get('label')]); + if (!$niveau02) { + $view = $this->view('Niveau02 inconnu', 403); + + return $this->handleView($view); } - $output=$this->niveau02Format($niveau02,true); + $output = $this->niveau02Format($niveau02, true); $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } - /** - * getAllGroups + * getAllGroups. * - * - * @FOSRest\Get("/rest/getAllGroups") + * @FOSRest\Get("/rest/getAllGroups") * @OA\Response( * response=200, * description="get all group" @@ -305,35 +300,36 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - - public function getAllGroups(Request $request,ManagerRegistry $em) { + public function getAllGroups(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $groups=$em->getRepository("App\Entity\Group")->findAll(); - foreach($groups as $group) { - if($group->getId()<0) continue; - array_push($output,$this->groupFormat($group,true)); + $groups = $em->getRepository("App\Entity\Group")->findAll(); + foreach ($groups as $group) { + if ($group->getId() < 0) { + continue; + } + array_push($output, $this->groupFormat($group, true)); } $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } /** - * getOneGroup + * getOneGroup. * - * - * @FOSRest\Get("/rest/getOneGroup") + * @FOSRest\Get("/rest/getOneGroup") * @OA\Response( * response=200, * description="get one group by label" @@ -354,114 +350,131 @@ class RestController extends AbstractFOSRestController * @OA\Schema(type="string") * ) */ - - - public function getOneGroup(Request $request,ManagerRegistry $em) { + public function getOneGroup(Request $request, ManagerRegistry $em) + { set_time_limit(0); ini_set('memory_limit', '1024M'); // Récupération des parametres - if(!$this->iskey($request->headers->get("key"))) { - $view = $this->view("API Key inconnue", 403); - return $this->handleView($view); + if (!$this->iskey($request->headers->get('key'))) { + $view = $this->view('API Key inconnue', 403); + + return $this->handleView($view); } $output = []; - $group=$em->getRepository("App\Entity\Group")->findOneBy(["label"=>$request->headers->get("label")]); - if(!$group) { - $view = $this->view("Group inconnu", 403); - return $this->handleView($view); + $group = $em->getRepository("App\Entity\Group")->findOneBy(['label' => $request->headers->get('label')]); + if (!$group) { + $view = $this->view('Group inconnu', 403); + + return $this->handleView($view); } - $output=$this->groupFormat($group,true); + $output = $this->groupFormat($group, true); $view = $this->view($output, 200); - return $this->handleView($view); + + return $this->handleView($view); } - - - - - - private function iskey($key) { - return ($key==$this->getParameter("appSecret")); + private function iskey($key) + { + return $key == $this->getParameter('appSecret'); } - private function userFormat($user) { - $output=[]; + private function userFormat($user) + { + $output = []; - $output["userid"]=$user->getId(); - $output["userlogin"]=$user->getUsername(); - $output["userlastname"]=$user->getLastname(); - $output["userfirstname"]=$user->getFirstname(); - $output["useremail"]=$user->getEmail(); - $output["userjob"]=$user->getJob(); - $output["userposition"]=$user->getPosition(); - $output["userpostaladress"]=$user->getPostaladress(); - $output["usertelephonenumber"]=$user->getTelephonenumber(); - $output["useravatar"]="https://".str_replace("//","/",$this->getParameter("appWeburl").$this->getParameter("appAlias").$this->generateUrl('app_minio_image',["file"=>"avatar/".$user->getAvatar()],true)); - $output["userniveau01"]=$this->niveau01Format($user->getNiveau01()); - $output["userniveau02"]=$this->niveau02Format($user->getNiveau02()); - $output["usergroups"]=[]; - foreach($user->getGroups() as $usergroup) { - $groupFormat=$this->groupFormat($usergroup->getGroup()); - if($groupFormat) array_push($output["usergroups"],$groupFormat); - } - if(empty($output["usergroups"])) $output["usergroups"]=null; - return $output; - } - - private function niveau01Format($niveau01,$withmembers=false){ - if(!$niveau01) return null; - $output=[]; - $output["niveau01id"]=$niveau01->getId(); - $output["niveau01label"]=$niveau01->getLabel(); - - if($withmembers) { - $output["niveau01users"]=[]; - foreach($niveau01->getUsers() as $user) { - array_push($output["niveau01users"],["userid"=>$user->getId(),"userlogin"=>$user->getUsername()]); + $output['userid'] = $user->getId(); + $output['userlogin'] = $user->getUsername(); + $output['userlastname'] = $user->getLastname(); + $output['userfirstname'] = $user->getFirstname(); + $output['useremail'] = $user->getEmail(); + $output['userjob'] = $user->getJob(); + $output['userposition'] = $user->getPosition(); + $output['userpostaladress'] = $user->getPostaladress(); + $output['usertelephonenumber'] = $user->getTelephonenumber(); + $output['useravatar'] = 'https://'.str_replace('//', '/', $this->getParameter('appWeburl').$this->getParameter('appAlias').$this->generateUrl('app_minio_image', ['file' => 'avatar/'.$user->getAvatar()], true)); + $output['userniveau01'] = $this->niveau01Format($user->getNiveau01()); + $output['userniveau02'] = $this->niveau02Format($user->getNiveau02()); + $output['usergroups'] = []; + foreach ($user->getGroups() as $usergroup) { + $groupFormat = $this->groupFormat($usergroup->getGroup()); + if ($groupFormat) { + array_push($output['usergroups'], $groupFormat); } - if(empty($output["niveau01users"])) $output["niveau01users"]=null; + } + if (empty($output['usergroups'])) { + $output['usergroups'] = null; } return $output; } - private function niveau02Format($niveau02,$withmembers=false){ - if(!$niveau02) return null; - $output=[]; - $output["niveau02id"]=$niveau02->getId(); - $output["niveau02label"]=$niveau02->getLabel(); + private function niveau01Format($niveau01, $withmembers = false) + { + if (!$niveau01) { + return null; + } + $output = []; + $output['niveau01id'] = $niveau01->getId(); + $output['niveau01label'] = $niveau01->getLabel(); - if($withmembers) { - $output["niveau02niveau01"]=$this->niveau01Format($niveau02->getNiveau01()); - $output["niveau02users"]=[]; - foreach($niveau02->getUsers() as $user) { - array_push($output["niveau02users"],["userid"=>$user->getId(),"userlogin"=>$user->getUsername()]); + if ($withmembers) { + $output['niveau01users'] = []; + foreach ($niveau01->getUsers() as $user) { + array_push($output['niveau01users'], ['userid' => $user->getId(), 'userlogin' => $user->getUsername()]); + } + if (empty($output['niveau01users'])) { + $output['niveau01users'] = null; } - if(empty($output["niveau02users"])) $output["niveau02users"]=null; } return $output; } - private function groupFormat($group,$withmembers=false){ - if(!$group||$group->getId()<0) return null; - $output=[]; - $output["groupid"]=$group->getId(); - $output["grouplabel"]=$group->getLabel(); + private function niveau02Format($niveau02, $withmembers = false) + { + if (!$niveau02) { + return null; + } + $output = []; + $output['niveau02id'] = $niveau02->getId(); + $output['niveau02label'] = $niveau02->getLabel(); - if($withmembers) { - $output["groupusers"]=[]; - foreach($group->getUsers() as $usergroup) { - array_push($output["groupusers"],["userid"=>$usergroup->getUser()->getId(),"userlogin"=>$usergroup->getUser()->getUsername()]); + if ($withmembers) { + $output['niveau02niveau01'] = $this->niveau01Format($niveau02->getNiveau01()); + $output['niveau02users'] = []; + foreach ($niveau02->getUsers() as $user) { + array_push($output['niveau02users'], ['userid' => $user->getId(), 'userlogin' => $user->getUsername()]); + } + if (empty($output['niveau02users'])) { + $output['niveau02users'] = null; + } + } + + return $output; + } + + private function groupFormat($group, $withmembers = false) + { + if (!$group || $group->getId() < 0) { + return null; + } + $output = []; + $output['groupid'] = $group->getId(); + $output['grouplabel'] = $group->getLabel(); + + if ($withmembers) { + $output['groupusers'] = []; + foreach ($group->getUsers() as $usergroup) { + array_push($output['groupusers'], ['userid' => $usergroup->getUser()->getId(), 'userlogin' => $usergroup->getUser()->getUsername()]); + } + if (empty($output['groupusers'])) { + $output['groupusers'] = null; } - if(empty($output["groupusers"])) $output["groupusers"]=null; } return $output; } } - - diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index d0d37dd..9c31cd6 100755 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -1,524 +1,574 @@ -appKernel = $appKernel; - $this->tokenstorage = $tokenstorage; - $this->ldapservice = $ldapservice; - $this->apiservice = $apiservice; - } - - public function noperm(Request $request) - { - return $this->render('Home/noperm.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - ]); - } - - public function login(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - switch($this->getParameter("appAuth")) { - case "SQL": - return $this->loginSQL($request,$authenticationUtils,$em); - break; - - case "CAS": - return $this->loginCAS($request,$authenticationUtils,$em); - break; - - case "LDAP": - return $this->loginLDAP($request,$authenticationUtils,$em); - break; - - case "OPENID": - return $this->loginOPENID($request,$authenticationUtils,$em); - break; - } - } - - public function loginSQL(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - return $this->render('Home/loginSQL.html.twig', array( - 'last_username' => $authenticationUtils->getLastUsername(), - 'error' => $authenticationUtils->getLastAuthenticationError(), - )); - } - - public function loginCAS(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - // Récupération de la cible de navigation - $redirect = $request->getSession()->get("_security.main.target_path"); - - // Masteridentity - $appMasteridentity=$this->getParameter("appMasteridentity"); - - // Init Client CAS - $alias=$this->getParameter('appAlias'); - \phpCAS::setDebug($this->appKernel->getProjectDir()."/var/log/cas.log"); - \phpCAS::client(CAS_VERSION_2_0, $this->getParameter('casHost'), intval($this->getParameter('casPort')), is_null($this->getParameter('casPath')) ? '' : $this->getParameter('casPath'), false); - \phpCAS::setNoCasServerValidation(); - - - // Authentification - \phpCAS::forceAuthentication(); - - // Récupération UID - $username = \phpCAS::getUser(); - - // Récupération Attribut - $attributes = \phpCAS::getAttributes(); - - // Init - $email = "$username@nomail.fr"; - $lastname = $username; - $firstname = " "; - $avatar="noavatar.png"; - - // Rechercher l'utilisateur - if(isset($attributes[$this->getParameter('casUsername')])) - $username = $attributes[$this->getParameter('casUsername')]; - - if(isset($attributes[$this->getParameter('casEmail')])) - $email = $attributes[$this->getParameter('casEmail')]; - - if(isset($attributes[$this->getParameter('casLastname')])) - $lastname = $attributes[$this->getParameter('casLastname')]; - - if(isset($attributes[$this->getParameter('casFirstname')])) - $firstname = $attributes[$this->getParameter('casFirstname')]; - - if(isset($attributes[$this->getParameter('casAvatar')])) - $avatar = $attributes[$this->getParameter('casAvatar')]; - - // Rechercher l'utilisateur - $user = $em->getRepository('App\Entity\User')->findOneBy(array("username"=>$username)); - if (!$user) { - if(!$this->getParameter("casAutosubmit")) return $this->redirect($this->generateUrl('app_noperm')); - - $this->submitSSONiveau01($attributes,$em); - $this->submitSSOGroup($attributes,$em); - $niveau01=$em->getRepository('App\Entity\Niveau01')->calculateSSONiveau01($attributes); - $user=$this->submituser($username,$firstname,$lastname,$email,$avatar,$niveau01,$em); - $user=$em->getRepository('App\Entity\Group')->calculateSSOGroup($user,$attributes); - } - elseif($this->getParameter("casAutoupdate")) { - $this->submitSSONiveau01($attributes,$em); - $this->submitSSOGroup($attributes,$em); - $this->updateuser($user,$firstname,$lastname,$email,$avatar,$em); - $user=$em->getRepository('App\Entity\Group')->calculateSSOGroup($user,$attributes); - } - - - - // Autoconnexion - return $this->autoconnexion($user,$redirect,$request); - } - - public function loginLDAP(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - // Création du formulaire - $form = $this->createForm(LoginType::class); - - // Récupération des data du formulaire - $form->handleRequest($request); - - // Affichage du formulaire - return $this->render("Home/loginLDAP.html.twig", [ - "useheader"=>false, - "usemenu"=>false, - "usesidebar"=>false, - "form"=>$form->createView(), - ]); - } - - public function loginldapcheck(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - - $username=$request->get('login')["username"]; - $password=$request->get('login')["password"]; - - // Récupération de la cible de navigation - $redirect = $request->getSession()->get("_security.main.target_path"); - - // L'utilisateur se co à l'annuaire - $userldap=$this->ldapservice->userconnect($username,$password); - if($userldap) { - $userldap=$userldap[0]; - - // Init - $email = "$username@nomail.fr"; - $lastname = $username; - $firstname = " "; - $avatar="noavatar.png"; - - // Rechercher l'utilisateur - if(isset($userldap[$this->getParameter('ldapFirstname')])) - $firstname = $userldap[$this->getParameter('ldapFirstname')]; - - if(isset($userldap[$this->getParameter('ldapLastname')])) - $lastname = $userldap[$this->getParameter('ldapLastname')]; - - if(isset($userldap[$this->getParameter('ldapEmail')])) - $email = $userldap[$this->getParameter('ldapEmail')]; - - if(isset($userldap[$this->getParameter('ldapAvatar')])) - $avatar = $userldap[$this->getParameter('ldapAvatar')]; - - $user = $em->getRepository('App\Entity\User')->findOneBy(array("username"=>$username)); - - if (!$user) { - if(!$this->getParameter("ldapAutosubmit")) return $this->redirect($this->generateUrl('app_noperm')); - $niveau01=$em->getRepository('App\Entity\Niveau01')->calculateLDAPNiveau01($username); - $user=$this->submituser($username,$firstname,$lastname,$email,$avatar,$niveau01,$em); - } - elseif($this->getParameter("ldapAutoupdate")) { - $this->updateuser($user,$firstname,$lastname,$email,$avatar,$em); - } - - // Autoconnexion - return $this->autoconnexion($user,$redirect,$request); - } - - return $this->redirect($this->generateUrl('app_login')); - } - - - public function loginOPENID(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - $state=Uuid::uuid4(); - $request->getSession()->set("oauthState",$state); - $callback=$this->generateUrl('app_loginopenidcallback', array(), UrlGeneratorInterface::ABSOLUTE_URL); - $url=$this->getParameter("oauthLoginurl")."?client_id=".$this->getParameter("oauthClientid")."&redirect_uri=".$callback."&response_type=code&state=".$state."&scope=openid"; - return $this->redirect($url); - } - - public function loginopenidcallback(Request $request, AuthenticationUtils $authenticationUtils,ManagerRegistry $em) - { - // Récupération de la cible de navigation - $redirect = $request->getSession()->get("_security.main.target_path"); - - // Masteridentity - $appMasteridentity=$this->getParameter("appMasteridentity"); - - $callback=$this->generateUrl('app_loginopenidcallback', array(), UrlGeneratorInterface::ABSOLUTE_URL); - $apiurl = $this->getParameter("oauthTokenurl"); - $query= [ - "grant_type" => "authorization_code", - "code" => $request->get("code"), - "redirect_uri" => $callback, - "client_id" => $this->getParameter("oauthClientid"), - "client_secret" => $this->getParameter("oauthClientsecret"), - ]; - $response=$this->apiservice->run("POST",$apiurl,$query,null,"form"); - - if(!$response||$response->code!="200") die("pb openid 01"); - $accesstoken=$response->body->access_token; - $accesstokentype=$response->body->token_type; - $îdtoken=$response->body->id_token; - - $request->getSession()->set("oauthAccesstoken",$accesstoken); - $request->getSession()->set("oauthIdtoken",$îdtoken); - - $apiurl = $this->getParameter("oauthUserinfo"); - - $response=$this->apiservice->run("GET",$apiurl,null,["Authorization"=>$accesstokentype." ".$accesstoken]); - if(!$response||$response->code!="200") die("pb openid 02"); - - $attributes=json_decode(json_encode($response->body), true); - - // Username - $username=""; - if(isset($attributes[$this->getParameter('oauthUsername')])) - $username = $attributes[$this->getParameter('oauthUsername')]; - - // Valeur par défaut - $email = "$username@nomail.fr"; - $lastname = $username; - $firstname = " "; - $avatar="noavatar.png"; - - // Récupérer les attributs associés - if(isset($attributes[$this->getParameter('oauthEmail')])) - $email = $attributes[$this->getParameter('oauthEmail')]; - - if(isset($attributes[$this->getParameter('oauthLastname')])) - $lastname = $attributes[$this->getParameter('oauthLastname')]; - - if(isset($attributes[$this->getParameter('oauthFirstname')])) - $firstname = $attributes[$this->getParameter('oauthFirstname')]; - - if(isset($attributes[$this->getParameter('oauthAvatar')])) - $avatar = $attributes[$this->getParameter('oauthAvatar')]; - - // Rechercher l'utilisateur - $user = $em->getRepository('App\Entity\User')->findOneBy(array("username"=>$username)); - if (!$user) { - if(!$this->getParameter("oauthAutosubmit")) return $this->redirect($this->generateUrl('app_noperm')); - - $this->submitSSONiveau01($attributes,$em); - $this->submitSSOGroup($attributes,$em); - $niveau01=$em->getRepository('App\Entity\Niveau01')->calculateSSONiveau01($attributes); - $user=$this->submituser($username,$firstname,$lastname,$email,$avatar,$niveau01,$em); - } - elseif($this->getParameter("oauthAutoupdate")) { - $this->submitSSONiveau01($attributes,$em); - $this->submitSSOGroup($attributes,$em); - $this->updateuser($user,$firstname,$lastname,$email,$avatar,$em); - $user=$em->getRepository('App\Entity\Group')->calculateSSOGroup($user,$attributes); - } - - // Autoconnexion - return $this->autoconnexion($user,$redirect,$request); - } - - public function logout(Request $request) { - $auth_mode=$this->getParameter("appAuth"); - switch($auth_mode) { - case "SQL": - return $this->logoutSQL($request); - break; - - case "CAS": - return $this->logoutCAS($request); - break; - - case "LDAP": - return $this->logoutLDAP($request); - break; - - case "OPENID": - return $this->logoutOPENID($request); - break; - } - - } - - public function logoutSQL(Request $request) { - $this->tokenstorage->setToken(null); - $request->getSession()->invalidate(); - return $this->redirect($this->generateUrl("app_home")); - } - - public function logoutCAS(Request $request) { - $this->tokenstorage->setToken(null); - $request->getSession()->invalidate(); - - // Init Client CAS - $alias=$this->getParameter('appAlias'); - \phpCAS::setDebug($this->appKernel->getProjectDir()."/var/log/cas.log"); - \phpCAS::client(CAS_VERSION_2_0, $this->getParameter('casHost'), intval($this->getParameter('casPort')), is_null($this->getParameter('casPath')) ? '' : $this->getParameter('casPath'), false); - \phpCAS::setNoCasServerValidation(); - - - // Logout - $url=$this->generateUrl('app_home', array(), UrlGeneratorInterface::ABSOLUTE_URL); - \phpCAS::logout(array("service"=>$url)); - - return true; - } - - public function logoutLDAP(Request $request) { - $this->tokenstorage->setToken(null); - $request->getSession()->invalidate(); - return $this->redirect($this->generateUrl("app_home")); - } - - - public function logoutOPENID(Request $request) { - $accesstoken=$request->getSession()->get("oauthAccesstoken"); - $idtoken=$request->getSession()->get("oauthIdtoken"); - $state=$request->getSession()->get("oauthState"); - - $this->tokenstorage->setToken(null); - $request->getSession()->invalidate(); - - $url=$this->getParameter("oauthLogouturl"); - if($url) { - $callback=($request->isSecure()?"https://":"http://").str_replace("//","/",$this->getParameter("appWeburl").$this->getParameter("appAlias").$this->generateUrl('app_home')); - $callback=substr($callback, 0, -1); - - $url.="?id_token_hint=$idtoken&scope=openid&post_logout_redirect_uri=$callback"; - return $this->redirect($url); - - } else return $this->redirect($this->generateUrl("app_home")); - } - - // Génération automatique des niveau01 provenant de l'attribut casniveau01 - private function submitSSONiveau01($attributes,ManagerRegistry $em) { - $attrNiveau01=($this->getParameter("appAuth")=="CAS"?$this->getParameter('casNiveau01'):$this->getParameter('oauthNiveau01')); - if(!$attrNiveau01) - return null; - - // Si l'utilisateur possège l'attribut niveau01 dans ses attributs - if(array_key_exists($attrNiveau01,$attributes)) { - if(!is_array($attributes[$attrNiveau01])) { - $attributes[$attrNiveau01]=[$attributes[$attrNiveau01]]; - } - - foreach($attributes[$attrNiveau01] as $ssoniveau01) { - $basedn=$this->getParameter('ldapBasedn'); - $name=$ssoniveau01; - if($basedn!="") { - // Si présence du basedn dans le nom du groupe = nous sommes en présence d'un DN = on récupere donc comme nom que son cn - if(stripos($name,$basedn)!==false) { - $tbname=explode(",",$name); - $tbname=explode("=",$tbname[0]); - $name=$tbname[1]; - } - } - - // Recherche du groupe - $niveau01=$em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$name]); - if(!$niveau01) { - $niveau01=new Niveau01(); - $niveau01->setLabel($name); - $niveau01->setApikey(Uuid::uuid4()); - } - - $niveau01->setAttributes('{"'.$attrNiveau01.'":"'.$ssoniveau01.'"}'); - $em->getManager()->persist($niveau01); - $em->getManager()->flush(); - } - } - } - - - // Génération automatique des groupes provenant de l'attribut casgroup ou oauthgroup - private function submitSSOGroup($attributes,ManagerRegistry $em) { - $attrGroup=($this->getParameter("appAuth")=="CAS"?$this->getParameter('casGroup'):$this->getParameter('oauthGroup')); - if(!$attrGroup) - return null; - - // Si l'utilisateur possège l'attribut groupe dans ses attributs - if(array_key_exists($attrGroup,$attributes)) { - if(!is_array($attributes[$attrGroup])) { - $attributes[$attrGroup]=[$attributes[$attrGroup]]; - } - - foreach($attributes[$attrGroup] as $ssogroup) { - $basedn=$this->getParameter('ldapBasedn'); - $name=$ssogroup; - if($basedn!="") { - // Si présence du basedn dans le nom du groupe = nous sommes en présence d'un DN = on récupere donc comme nom que son cn - if(stripos($name,$basedn)!==false) { - $tbname=explode(",",$name); - $tbname=explode("=",$tbname[0]); - $name=$tbname[1]; - } - } - - // Recherche du groupe - $group=$em->getRepository("App\Entity\Group")->findOneBy(["label"=>$name]); - if(!$group) { - $group=new Group(); - $group->setLabel($name); - $group->setIsopen(false); - $group->setIsworkgroup(false); - $group->setApikey(Uuid::uuid4()); - } - - $group->setAttributes('{"'.$attrGroup.'":"'.$ssogroup.'"}'); - $em->getManager()->persist($group); - $em->getManager()->flush(); - } - } - } - - private function submituser($username,$firstname,$lastname,$email,$avatar,$niveau01,$em) { - if(empty($email)) $email = $username."@nomail.com"; - if(empty($avatar)) $avatar = "noavatar.png"; - if(empty($firstname)) $firstname = " "; - if(empty($lastname)) $lastname = $username; - $uuid=Uuid::uuid4(); - $password=$this->getParameter("appAuth")."PWD-".$username."-".$uuid; - - // Si aucun niveau01 on prend par défaut le niveau system - if(!$niveau01) $niveau01=$em->getRepository('App\Entity\Niveau01')->find(-1); - - // Autogénération du user vu qu'il a pu se connecter - $user = new User(); - - $user->setUsername($username); - $user->setEmail($email); - $user->setLastname($lastname); - $user->setFirstname($firstname); - $user->setApikey(Uuid::uuid4()); - - $user->setPassword($password); - $user->setNiveau01($niveau01); - - $user->setAvatar($avatar); - $user->setIsvisible(true); - $user->setRole("ROLE_USER"); - - if(in_array($username,$this->getParameter("appAdmins"))) - $user->setRole("ROLE_ADMIN"); - - $em->getManager()->persist($user); - $em->getManager()->flush(); - - return $user; - } - - private function updateuser($user,$firstname,$lastname,$email,$avatar,$em) { - if($avatar=="noavatar.png") $avatar=$user->getAvatar(); - - if(!empty($lastname)) $user->setLastname($lastname); - if(!empty($firstname)) $user->setFirstname($firstname); - if(!empty($email)) $user->setEmail($email); - if(!empty($avatar)) $user->setAvatar($avatar); - - if(in_array($user->getUsername(),$this->getParameter("appAdmins"))) - $user->setRole("ROLE_ADMIN"); - - $em->getManager()->flush(); - } - - private function autoconnexion($user,$redirect,Request $request) - { - // Récupérer le token de l'utilisateur - $token = new UsernamePasswordToken($user, "main", $user->getRoles()); - $this->tokenstorage->setToken($token); - $request->getSession()->set('_security_main', serialize($token)); - - // Simuler l'evenement de connexion - $event = new InteractiveLoginEvent($request, $token); - $dispatcher = new EventDispatcher(); - $dispatcher->dispatch($event); - - // Redirection - if($redirect) - return $this->redirect($redirect); - else - return $this->redirect($this->generateUrl('app_home')); - } -} +appKernel = $appKernel; + $this->tokenstorage = $tokenstorage; + $this->ldapservice = $ldapservice; + $this->apiservice = $apiservice; + } + + public function noperm(Request $request) + { + return $this->render('Home/noperm.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + ]); + } + + public function login(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + switch ($this->getParameter('appAuth')) { + case 'SQL': + return $this->loginSQL($request, $authenticationUtils, $em); + break; + + case 'CAS': + return $this->loginCAS($request, $authenticationUtils, $em); + break; + + case 'LDAP': + return $this->loginLDAP($request, $authenticationUtils, $em); + break; + + case 'OPENID': + return $this->loginOPENID($request, $authenticationUtils, $em); + break; + } + } + + public function loginSQL(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + return $this->render('Home/loginSQL.html.twig', [ + 'last_username' => $authenticationUtils->getLastUsername(), + 'error' => $authenticationUtils->getLastAuthenticationError(), + ]); + } + + public function loginCAS(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + // Récupération de la cible de navigation + $redirect = $request->getSession()->get('_security.main.target_path'); + + // Masteridentity + $appMasteridentity = $this->getParameter('appMasteridentity'); + + // Init Client CAS + $alias = $this->getParameter('appAlias'); + \phpCAS::setDebug($this->appKernel->getProjectDir().'/var/log/cas.log'); + \phpCAS::client(CAS_VERSION_2_0, $this->getParameter('casHost'), intval($this->getParameter('casPort')), is_null($this->getParameter('casPath')) ? '' : $this->getParameter('casPath'), false); + \phpCAS::setNoCasServerValidation(); + + // Authentification + \phpCAS::forceAuthentication(); + + // Récupération UID + $username = \phpCAS::getUser(); + + // Récupération Attribut + $attributes = \phpCAS::getAttributes(); + + // Init + $email = "$username@nomail.fr"; + $lastname = $username; + $firstname = ' '; + $avatar = 'noavatar.png'; + + // Rechercher l'utilisateur + if (isset($attributes[$this->getParameter('casUsername')])) { + $username = $attributes[$this->getParameter('casUsername')]; + } + + if (isset($attributes[$this->getParameter('casEmail')])) { + $email = $attributes[$this->getParameter('casEmail')]; + } + + if (isset($attributes[$this->getParameter('casLastname')])) { + $lastname = $attributes[$this->getParameter('casLastname')]; + } + + if (isset($attributes[$this->getParameter('casFirstname')])) { + $firstname = $attributes[$this->getParameter('casFirstname')]; + } + + if (isset($attributes[$this->getParameter('casAvatar')])) { + $avatar = $attributes[$this->getParameter('casAvatar')]; + } + + // Rechercher l'utilisateur + $user = $em->getRepository('App\Entity\User')->findOneBy(['username' => $username]); + if (!$user) { + if (!$this->getParameter('casAutosubmit')) { + return $this->redirect($this->generateUrl('app_noperm')); + } + + $this->submitSSONiveau01($attributes, $em); + $this->submitSSOGroup($attributes, $em); + $niveau01 = $em->getRepository('App\Entity\Niveau01')->calculateSSONiveau01($attributes); + $user = $this->submituser($username, $firstname, $lastname, $email, $avatar, $niveau01, $em); + $user = $em->getRepository('App\Entity\Group')->calculateSSOGroup($user, $attributes); + } elseif ($this->getParameter('casAutoupdate')) { + $this->submitSSONiveau01($attributes, $em); + $this->submitSSOGroup($attributes, $em); + $this->updateuser($user, $firstname, $lastname, $email, $avatar, $em); + $user = $em->getRepository('App\Entity\Group')->calculateSSOGroup($user, $attributes); + } + + // Autoconnexion + return $this->autoconnexion($user, $redirect, $request); + } + + public function loginLDAP(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + // Création du formulaire + $form = $this->createForm(LoginType::class); + + // Récupération des data du formulaire + $form->handleRequest($request); + + // Affichage du formulaire + return $this->render('Home/loginLDAP.html.twig', [ + 'useheader' => false, + 'usemenu' => false, + 'usesidebar' => false, + 'form' => $form->createView(), + ]); + } + + public function loginldapcheck(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + $username = $request->get('login')['username']; + $password = $request->get('login')['password']; + + // Récupération de la cible de navigation + $redirect = $request->getSession()->get('_security.main.target_path'); + + // L'utilisateur se co à l'annuaire + $userldap = $this->ldapservice->userconnect($username, $password); + if ($userldap) { + $userldap = $userldap[0]; + + // Init + $email = "$username@nomail.fr"; + $lastname = $username; + $firstname = ' '; + $avatar = 'noavatar.png'; + + // Rechercher l'utilisateur + if (isset($userldap[$this->getParameter('ldapFirstname')])) { + $firstname = $userldap[$this->getParameter('ldapFirstname')]; + } + + if (isset($userldap[$this->getParameter('ldapLastname')])) { + $lastname = $userldap[$this->getParameter('ldapLastname')]; + } + + if (isset($userldap[$this->getParameter('ldapEmail')])) { + $email = $userldap[$this->getParameter('ldapEmail')]; + } + + if (isset($userldap[$this->getParameter('ldapAvatar')])) { + $avatar = $userldap[$this->getParameter('ldapAvatar')]; + } + + $user = $em->getRepository('App\Entity\User')->findOneBy(['username' => $username]); + + if (!$user) { + if (!$this->getParameter('ldapAutosubmit')) { + return $this->redirect($this->generateUrl('app_noperm')); + } + $niveau01 = $em->getRepository('App\Entity\Niveau01')->calculateLDAPNiveau01($username); + $user = $this->submituser($username, $firstname, $lastname, $email, $avatar, $niveau01, $em); + } elseif ($this->getParameter('ldapAutoupdate')) { + $this->updateuser($user, $firstname, $lastname, $email, $avatar, $em); + } + + // Autoconnexion + return $this->autoconnexion($user, $redirect, $request); + } + + return $this->redirect($this->generateUrl('app_login')); + } + + public function loginOPENID(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + $state = Uuid::uuid4(); + $request->getSession()->set('oauthState', $state); + $callback = $this->generateUrl('app_loginopenidcallback', [], UrlGeneratorInterface::ABSOLUTE_URL); + $url = $this->getParameter('oauthLoginurl').'?client_id='.$this->getParameter('oauthClientid').'&redirect_uri='.$callback.'&response_type=code&state='.$state.'&scope=openid'; + + return $this->redirect($url); + } + + public function loginopenidcallback(Request $request, AuthenticationUtils $authenticationUtils, ManagerRegistry $em) + { + // Récupération de la cible de navigation + $redirect = $request->getSession()->get('_security.main.target_path'); + + // Masteridentity + $appMasteridentity = $this->getParameter('appMasteridentity'); + + $callback = $this->generateUrl('app_loginopenidcallback', [], UrlGeneratorInterface::ABSOLUTE_URL); + $apiurl = $this->getParameter('oauthTokenurl'); + $query = [ + 'grant_type' => 'authorization_code', + 'code' => $request->get('code'), + 'redirect_uri' => $callback, + 'client_id' => $this->getParameter('oauthClientid'), + 'client_secret' => $this->getParameter('oauthClientsecret'), + ]; + $response = $this->apiservice->run('POST', $apiurl, $query, null, 'form'); + + if (!$response || '200' != $response->code) { + exit('pb openid 01'); + } + $accesstoken = $response->body->access_token; + $accesstokentype = $response->body->token_type; + $îdtoken = $response->body->id_token; + + $request->getSession()->set('oauthAccesstoken', $accesstoken); + $request->getSession()->set('oauthIdtoken', $îdtoken); + + $apiurl = $this->getParameter('oauthUserinfo'); + + $response = $this->apiservice->run('GET', $apiurl, null, ['Authorization' => $accesstokentype.' '.$accesstoken]); + if (!$response || '200' != $response->code) { + exit('pb openid 02'); + } + + $attributes = json_decode(json_encode($response->body), true); + + // Username + $username = ''; + if (isset($attributes[$this->getParameter('oauthUsername')])) { + $username = $attributes[$this->getParameter('oauthUsername')]; + } + + // Valeur par défaut + $email = "$username@nomail.fr"; + $lastname = $username; + $firstname = ' '; + $avatar = 'noavatar.png'; + + // Récupérer les attributs associés + if (isset($attributes[$this->getParameter('oauthEmail')])) { + $email = $attributes[$this->getParameter('oauthEmail')]; + } + + if (isset($attributes[$this->getParameter('oauthLastname')])) { + $lastname = $attributes[$this->getParameter('oauthLastname')]; + } + + if (isset($attributes[$this->getParameter('oauthFirstname')])) { + $firstname = $attributes[$this->getParameter('oauthFirstname')]; + } + + if (isset($attributes[$this->getParameter('oauthAvatar')])) { + $avatar = $attributes[$this->getParameter('oauthAvatar')]; + } + + // Rechercher l'utilisateur + $user = $em->getRepository('App\Entity\User')->findOneBy(['username' => $username]); + if (!$user) { + if (!$this->getParameter('oauthAutosubmit')) { + return $this->redirect($this->generateUrl('app_noperm')); + } + + $this->submitSSONiveau01($attributes, $em); + $this->submitSSOGroup($attributes, $em); + $niveau01 = $em->getRepository('App\Entity\Niveau01')->calculateSSONiveau01($attributes); + $user = $this->submituser($username, $firstname, $lastname, $email, $avatar, $niveau01, $em); + } elseif ($this->getParameter('oauthAutoupdate')) { + $this->submitSSONiveau01($attributes, $em); + $this->submitSSOGroup($attributes, $em); + $this->updateuser($user, $firstname, $lastname, $email, $avatar, $em); + $user = $em->getRepository('App\Entity\Group')->calculateSSOGroup($user, $attributes); + } + + // Autoconnexion + return $this->autoconnexion($user, $redirect, $request); + } + + public function logout(Request $request) + { + $auth_mode = $this->getParameter('appAuth'); + switch ($auth_mode) { + case 'SQL': + return $this->logoutSQL($request); + break; + + case 'CAS': + return $this->logoutCAS($request); + break; + + case 'LDAP': + return $this->logoutLDAP($request); + break; + + case 'OPENID': + return $this->logoutOPENID($request); + break; + } + } + + public function logoutSQL(Request $request) + { + $this->tokenstorage->setToken(null); + $request->getSession()->invalidate(); + + return $this->redirect($this->generateUrl('app_home')); + } + + public function logoutCAS(Request $request) + { + $this->tokenstorage->setToken(null); + $request->getSession()->invalidate(); + + // Init Client CAS + $alias = $this->getParameter('appAlias'); + \phpCAS::setDebug($this->appKernel->getProjectDir().'/var/log/cas.log'); + \phpCAS::client(CAS_VERSION_2_0, $this->getParameter('casHost'), intval($this->getParameter('casPort')), is_null($this->getParameter('casPath')) ? '' : $this->getParameter('casPath'), false); + \phpCAS::setNoCasServerValidation(); + + // Logout + $url = $this->generateUrl('app_home', [], UrlGeneratorInterface::ABSOLUTE_URL); + \phpCAS::logout(['service' => $url]); + + return true; + } + + public function logoutLDAP(Request $request) + { + $this->tokenstorage->setToken(null); + $request->getSession()->invalidate(); + + return $this->redirect($this->generateUrl('app_home')); + } + + public function logoutOPENID(Request $request) + { + $accesstoken = $request->getSession()->get('oauthAccesstoken'); + $idtoken = $request->getSession()->get('oauthIdtoken'); + $state = $request->getSession()->get('oauthState'); + + $this->tokenstorage->setToken(null); + $request->getSession()->invalidate(); + + $url = $this->getParameter('oauthLogouturl'); + if ($url) { + $callback = ($request->isSecure() ? 'https://' : 'http://').str_replace('//', '/', $this->getParameter('appWeburl').$this->getParameter('appAlias').$this->generateUrl('app_home')); + $callback = substr($callback, 0, -1); + + $url .= "?id_token_hint=$idtoken&scope=openid&post_logout_redirect_uri=$callback"; + + return $this->redirect($url); + } else { + return $this->redirect($this->generateUrl('app_home')); + } + } + + // Génération automatique des niveau01 provenant de l'attribut casniveau01 + private function submitSSONiveau01($attributes, ManagerRegistry $em) + { + $attrNiveau01 = ('CAS' == $this->getParameter('appAuth') ? $this->getParameter('casNiveau01') : $this->getParameter('oauthNiveau01')); + if (!$attrNiveau01) { + return null; + } + + // Si l'utilisateur possège l'attribut niveau01 dans ses attributs + if (array_key_exists($attrNiveau01, $attributes)) { + if (!is_array($attributes[$attrNiveau01])) { + $attributes[$attrNiveau01] = [$attributes[$attrNiveau01]]; + } + + foreach ($attributes[$attrNiveau01] as $ssoniveau01) { + $basedn = $this->getParameter('ldapBasedn'); + $name = $ssoniveau01; + if ('' != $basedn) { + // Si présence du basedn dans le nom du groupe = nous sommes en présence d'un DN = on récupere donc comme nom que son cn + if (false !== stripos($name, $basedn)) { + $tbname = explode(',', $name); + $tbname = explode('=', $tbname[0]); + $name = $tbname[1]; + } + } + + // Recherche du groupe + $niveau01 = $em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $name]); + if (!$niveau01) { + $niveau01 = new Niveau01(); + $niveau01->setLabel($name); + $niveau01->setApikey(Uuid::uuid4()); + } + + $niveau01->setAttributes('{"'.$attrNiveau01.'":"'.$ssoniveau01.'"}'); + $em->getManager()->persist($niveau01); + $em->getManager()->flush(); + } + } + } + + // Génération automatique des groupes provenant de l'attribut casgroup ou oauthgroup + private function submitSSOGroup($attributes, ManagerRegistry $em) + { + $attrGroup = ('CAS' == $this->getParameter('appAuth') ? $this->getParameter('casGroup') : $this->getParameter('oauthGroup')); + if (!$attrGroup) { + return null; + } + + // Si l'utilisateur possège l'attribut groupe dans ses attributs + if (array_key_exists($attrGroup, $attributes)) { + if (!is_array($attributes[$attrGroup])) { + $attributes[$attrGroup] = [$attributes[$attrGroup]]; + } + + foreach ($attributes[$attrGroup] as $ssogroup) { + $basedn = $this->getParameter('ldapBasedn'); + $name = $ssogroup; + if ('' != $basedn) { + // Si présence du basedn dans le nom du groupe = nous sommes en présence d'un DN = on récupere donc comme nom que son cn + if (false !== stripos($name, $basedn)) { + $tbname = explode(',', $name); + $tbname = explode('=', $tbname[0]); + $name = $tbname[1]; + } + } + + // Recherche du groupe + $group = $em->getRepository("App\Entity\Group")->findOneBy(['label' => $name]); + if (!$group) { + $group = new Group(); + $group->setLabel($name); + $group->setIsopen(false); + $group->setIsworkgroup(false); + $group->setApikey(Uuid::uuid4()); + } + + $group->setAttributes('{"'.$attrGroup.'":"'.$ssogroup.'"}'); + $em->getManager()->persist($group); + $em->getManager()->flush(); + } + } + } + + private function submituser($username, $firstname, $lastname, $email, $avatar, $niveau01, $em) + { + if (empty($email)) { + $email = $username.'@nomail.com'; + } + if (empty($avatar)) { + $avatar = 'noavatar.png'; + } + if (empty($firstname)) { + $firstname = ' '; + } + if (empty($lastname)) { + $lastname = $username; + } + $uuid = Uuid::uuid4(); + $password = $this->getParameter('appAuth').'PWD-'.$username.'-'.$uuid; + + // Si aucun niveau01 on prend par défaut le niveau system + if (!$niveau01) { + $niveau01 = $em->getRepository('App\Entity\Niveau01')->find(-1); + } + + // Autogénération du user vu qu'il a pu se connecter + $user = new User(); + + $user->setUsername($username); + $user->setEmail($email); + $user->setLastname($lastname); + $user->setFirstname($firstname); + $user->setApikey(Uuid::uuid4()); + + $user->setPassword($password); + $user->setNiveau01($niveau01); + + $user->setAvatar($avatar); + $user->setIsvisible(true); + $user->setRole('ROLE_USER'); + + if (in_array($username, $this->getParameter('appAdmins'))) { + $user->setRole('ROLE_ADMIN'); + } + + $em->getManager()->persist($user); + $em->getManager()->flush(); + + return $user; + } + + private function updateuser($user, $firstname, $lastname, $email, $avatar, $em) + { + if ('noavatar.png' == $avatar) { + $avatar = $user->getAvatar(); + } + + if (!empty($lastname)) { + $user->setLastname($lastname); + } + if (!empty($firstname)) { + $user->setFirstname($firstname); + } + if (!empty($email)) { + $user->setEmail($email); + } + if (!empty($avatar)) { + $user->setAvatar($avatar); + } + + if (in_array($user->getUsername(), $this->getParameter('appAdmins'))) { + $user->setRole('ROLE_ADMIN'); + } + + $em->getManager()->flush(); + } + + private function autoconnexion($user, $redirect, Request $request) + { + // Récupérer le token de l'utilisateur + $token = new UsernamePasswordToken($user, 'main', $user->getRoles()); + $this->tokenstorage->setToken($token); + $request->getSession()->set('_security_main', serialize($token)); + + // Simuler l'evenement de connexion + $event = new InteractiveLoginEvent($request, $token); + $dispatcher = new EventDispatcher(); + $dispatcher->dispatch($event); + + // Redirection + if ($redirect) { + return $this->redirect($redirect); + } else { + return $this->redirect($this->generateUrl('app_home')); + } + } +} diff --git a/src/Controller/ThemeController.php b/src/Controller/ThemeController.php index 47ad252..9229b35 100644 --- a/src/Controller/ThemeController.php +++ b/src/Controller/ThemeController.php @@ -1,11 +1,12 @@ getParameter('kernel.project_dir')."/public/themes"; - $url=$this->getParameter('appAlias')."themes"; + $dir = $this->getParameter('kernel.project_dir').'/public/themes'; + $url = $this->getParameter('appAlias').'themes'; $finder->in($dir)->directories()->depth('== 0'); - $themes=[]; - $themes[""]["dir"]=""; - $themes[""]["url"]=$url; - $themes[""]["name"]="Thème par défaut"; + $themes = []; + $themes['']['dir'] = ''; + $themes['']['url'] = $url; + $themes['']['name'] = 'Thème par défaut'; foreach ($finder as $file) { - $key=$file->getRelativePathname(); - $themes[$key]["dir"]=$key; - $themes[$key]["url"]=$url."/".$key; + $key = $file->getRelativePathname(); + $themes[$key]['dir'] = $key; + $themes[$key]['url'] = $url.'/'.$key; - $yml=Yaml::parseFile($dir.'/'.$key.'/info.yml'); - $themes[$key]["name"]=$yml["name"]; + $yml = Yaml::parseFile($dir.'/'.$key.'/info.yml'); + $themes[$key]['name'] = $yml['name']; } - - $current=$request->getSession()->get("apptheme"); - $currentheme=$themes[$current]; + + $current = $request->getSession()->get('apptheme'); + $currentheme = $themes[$current]; unset($themes[$current]); - return $this->render('Theme/list.html.twig',[ - 'useheader' => true, - 'usesidebar' => true, - 'currentheme' => $currentheme, - 'themes' => $themes + return $this->render('Theme/list.html.twig', [ + 'useheader' => true, + 'usesidebar' => true, + 'currentheme' => $currentheme, + 'themes' => $themes, ]); - } + } - public function select($name,Request $request,ManagerRegistry $em) + public function select($name, Request $request, ManagerRegistry $em) { - $config=$em->getRepository("App\Entity\Config")->findoneBy(["id"=>"apptheme"]); + $config = $em->getRepository("App\Entity\Config")->findoneBy(['id' => 'apptheme']); $config->setValue($name); - $em->getManager()->flush(); + $em->getManager()->flush(); - return $this->redirectToRoute("app_admin_theme"); + return $this->redirectToRoute('app_admin_theme'); } } diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index ab4874d..08b1e7b 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -1,358 +1,359 @@ getSession()->get("showannuaire")) - throw $this->createAccessDeniedException('Permission denied'); + private $data = 'user'; + private $entity = "App\Entity\User"; + private $twig = 'User/'; + private $route = 'app_admin_user'; - return $this->render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>($access!="user"), - "access"=>$access + public function list($access, Request $request): Response + { + if ('user' == $access && !$request->getSession()->get('showannuaire')) { + throw $this->createAccessDeniedException('Permission denied'); + } + + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('user' != $access), + 'access' => $access, ]); } - public function tablelist($access, Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; - $niveau01=null; - $niveau02=null; + public function tablelist($access, Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; + $niveau01 = null; + $niveau02 = null; // Nombre total d'enregistrement - switch($access) { - case "admin": - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); - break; + switch ($access) { + case 'admin': + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); + break; - case "modo": + case 'modo': $total = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') - ->from("App\Entity\UserModo",'usermodo') - ->where("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :user") - ->setParameter("user", $this->getUser()) - ->getQuery()->getSingleScalarResult(); - break; + ->from($this->entity, 'entity') + ->from("App\Entity\UserModo", 'usermodo') + ->where('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :user') + ->setParameter('user', $this->getUser()) + ->getQuery()->getSingleScalarResult(); + break; default: - $niveau01=$this->getUser()->getNiveau01(); - $niveau02=$this->getUser()->getNiveau02(); + $niveau01 = $this->getUser()->getNiveau01(); + $niveau02 = $this->getUser()->getNiveau02(); - $qb=$em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->where('entity.isvisible=true'); - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("entity.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; + $qb = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->where('entity.isvisible=true'); + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('entity.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; - case "SAME_NIVEAU02": - $qb->andWhere("entity.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; + case 'SAME_NIVEAU02': + $qb->andWhere('entity.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; } $total = $qb->getQuery()->getSingleScalarResult(); - break; + break; } // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - switch($access) { - case "admin": - $totalf= $em->getManager()->createQueryBuilder() + } else { + switch ($access) { + case 'admin': + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->from('App:Niveau01', 'niveau01') ->where('entity.niveau01=niveau01.id') ->andWhere('entity.username LIKE :value OR entity.firstname LIKE :value OR entity.lastname LIKE :value OR entity.email LIKE :value OR entity.roles LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); - break; + break; - case "modo": - $totalf= $em->getManager()->createQueryBuilder() + case 'modo': + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->from('App:Niveau01', 'niveau01') - ->from("App:UserModo",'usermodo') + ->from('App:UserModo', 'usermodo') ->where('entity.niveau01=niveau01.id') ->andWhere('entity.username LIKE :value OR entity.firstname LIKE :value OR entity.lastname LIKE :value OR entity.email LIKE :value OR entity.roles LIKE :value OR niveau01.label LIKE :value') - ->andWhere("usermodo.niveau01 = entity.niveau01") - ->andWhere("usermodo.user = :userid") - ->setParameter("value", "%".$search["value"]."%") - ->setParameter("userid", $this->getUser()->getId()) + ->andWhere('usermodo.niveau01 = entity.niveau01') + ->andWhere('usermodo.user = :userid') + ->setParameter('value', '%'.$search['value'].'%') + ->setParameter('userid', $this->getUser()->getId()) ->getQuery() - ->getSingleScalarResult(); - break; - + ->getSingleScalarResult(); + break; + default: - $qb = $em->getManager()->createQueryBuilder() + $qb = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->from('App:Niveau01', 'niveau01') ->where('entity.niveau01=niveau01.id') ->andWhere('entity.isvisible=true') ->andWhere('entity.username LIKE :value OR entity.firstname LIKE :value OR entity.lastname LIKE :value OR entity.email LIKE :value OR entity.roles LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + ->setParameter('value', '%'.$search['value'].'%'); - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("entity.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; - - case "SAME_NIVEAU02": - $qb->andWhere("entity.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; - } - - $totalf=$qb->getQuery()->getSingleScalarResult(); - break; + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('entity.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; + + case 'SAME_NIVEAU02': + $qb->andWhere('entity.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; + } + + $totalf = $qb->getQuery()->getSingleScalarResult(); + break; } } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - switch($access) { - case "admin": - $qb->select('entity')->from($this->entity,'entity')->from('App:Niveau01','niveau01'); + switch ($access) { + case 'admin': + $qb->select('entity')->from($this->entity, 'entity')->from('App:Niveau01', 'niveau01'); $qb->where('entity.niveau01=niveau01.id'); - break; - - case "modo": - $qb->select('entity')->from($this->entity,'entity')->from('App:Niveau01','niveau01')->from("App:UserModo",'usermodo'); + break; + + case 'modo': + $qb->select('entity')->from($this->entity, 'entity')->from('App:Niveau01', 'niveau01')->from('App:UserModo', 'usermodo'); $qb->where('entity.niveau01=niveau01.id'); - $qb->andWhere("usermodo.niveau01 = entity.niveau01"); - $qb->andWhere("usermodo.user = :userid"); - $qb->setParameter("userid", $this->getUser()->getId()); - break; + $qb->andWhere('usermodo.niveau01 = entity.niveau01'); + $qb->andWhere('usermodo.user = :userid'); + $qb->setParameter('userid', $this->getUser()->getId()); + break; default: - $qb->select('entity')->from($this->entity,'entity')->from('App:Niveau01','niveau01'); + $qb->select('entity')->from($this->entity, 'entity')->from('App:Niveau01', 'niveau01'); $qb->where('entity.niveau01=niveau01.id'); $qb->andWhere('entity.isvisible=true'); - switch($request->getSession()->get("scopeannu")) { - case "SAME_NIVEAU01": - $qb->andWhere("entity.niveau01 = :niveau01")->setParameter("niveau01",$niveau01); - break; + switch ($request->getSession()->get('scopeannu')) { + case 'SAME_NIVEAU01': + $qb->andWhere('entity.niveau01 = :niveau01')->setParameter('niveau01', $niveau01); + break; - case "SAME_NIVEAU02": - $qb->andWhere("entity.niveau02 = :niveau02")->setParameter("niveau02",$niveau02); - break; - } - break; - } - - if($search&&$search["value"]!="") { - $qb ->andWhere('entity.username LIKE :value OR entity.firstname LIKE :value OR entity.lastname LIKE :value OR entity.email LIKE :value OR entity.roles LIKE :value OR niveau01.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + case 'SAME_NIVEAU02': + $qb->andWhere('entity.niveau02 = :niveau02')->setParameter('niveau02', $niveau02); + break; + } + break; } - if($ordercolumn) { - if($access=="admin"||$access=="modo") { - $ordercolumn=$ordercolumn-1; + if ($search && '' != $search['value']) { + $qb->andWhere('entity.username LIKE :value OR entity.firstname LIKE :value OR entity.lastname LIKE :value OR entity.email LIKE :value OR entity.roles LIKE :value OR niveau01.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); + } + + if ($ordercolumn) { + if ('admin' == $access || 'modo' == $access) { + $ordercolumn = $ordercolumn - 1; } - - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.username',$orderdir); - break; - case 2 : - $qb->orderBy('entity.lastname',$orderdir); - break; + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.username', $orderdir); + break; - case 3 : - $qb->orderBy('entity.firstname',$orderdir); - break; + case 2: + $qb->orderBy('entity.lastname', $orderdir); + break; - case 4 : - $qb->orderBy('entity.email',$orderdir); - break; + case 3: + $qb->orderBy('entity.firstname', $orderdir); + break; - case 5 : - $qb->orderBy('entity.telephonenumber',$orderdir); - break; + case 4: + $qb->orderBy('entity.email', $orderdir); + break; - case 6 : - $qb->orderBy('niveau01.label',$orderdir); - break; + case 5: + $qb->orderBy('entity.telephonenumber', $orderdir); + break; - case 8 : - $qb->orderBy('entity.visitedate',$orderdir); - break; + case 6: + $qb->orderBy('niveau01.label', $orderdir); + break; - case 9 : - $qb->orderBy('entity.roles',$orderdir); - break; + case 8: + $qb->orderBy('entity.visitedate', $orderdir); + break; + + case 9: + $qb->orderBy('entity.roles', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - switch($access) { - case "admin": - $action.="$data->getId()))."'>"; - break; - case "modo": - $action.="$data->getId()))."'>"; - break; + $action = ''; + switch ($access) { + case 'admin': + $action .= " $data->getId()])."'>"; + break; + case 'modo': + $action .= "route).'_update', ['id' => $data->getId()])."'>"; + break; } // Groupes - $groups=""; - foreach($data->getGroups() as $usergroup) { - $groups.=$usergroup->getGroup()->getLabel()."
"; + $groups = ''; + foreach ($data->getGroups() as $usergroup) { + $groups .= $usergroup->getGroup()->getLabel().'
'; } // Roles - $roles=""; - foreach($data->getRoles() as $role) { - $roles.=$role."
"; + $roles = ''; + foreach ($data->getRoles() as $role) { + $roles .= $role.'
'; } - $tmp=array(); - if($access=="admin"||$access=="modo") array_push($tmp,$action); + $tmp = []; + if ('admin' == $access || 'modo' == $access) { + array_push($tmp, $action); + } - array_push($tmp,""avatar/".$data->getAvatar()])."' class='avatar'>"); + array_push($tmp, " 'avatar/'.$data->getAvatar()])."' class='avatar'>"); - array_push($tmp,$data->getUsername()); - array_push($tmp,$data->getLastname()); - array_push($tmp,$data->getFirstname()); - array_push($tmp,"".$data->getEmail().""); - array_push($tmp,$data->getTelephonenumber()); - array_push($tmp,$data->getNiveau01()->getLabel()); - array_push($tmp,($data->getNiveau02()?$data->getNiveau02()->getLabel():"")); - array_push($tmp,($data->getVisitedate()?$data->getVisitedate()->format("d/m/Y H:i")."
nb = ".$data->getVisitecpt():"")); - array_push($tmp,$roles); - array_push($tmp,$groups); + array_push($tmp, $data->getUsername()); + array_push($tmp, $data->getLastname()); + array_push($tmp, $data->getFirstname()); + array_push($tmp, "".$data->getEmail().''); + array_push($tmp, $data->getTelephonenumber()); + array_push($tmp, $data->getNiveau01()->getLabel()); + array_push($tmp, $data->getNiveau02() ? $data->getNiveau02()->getLabel() : ''); + array_push($tmp, $data->getVisitedate() ? $data->getVisitedate()->format('d/m/Y H:i').'
nb = '.$data->getVisitecpt() : ''); + array_push($tmp, $roles); + array_push($tmp, $groups); - array_push($output["data"],$tmp); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - public function selectlist($access, Request $request,ManagerRegistry $em): Response + public function selectlist($access, Request $request, ManagerRegistry $em): Response { - $output=array(); - $page_limit=$request->query->get('page_limit'); - $q=$request->query->get('q'); - + $output = []; + $page_limit = $request->query->get('page_limit'); + $q = $request->query->get('q'); + $qb = $em->getManager()->createQueryBuilder(); - $qb->select('entity')->from($this->entity,'entity') + $qb->select('entity')->from($this->entity, 'entity') ->where('entity.username LIKE :value') - ->setParameter("value", "%".$q."%") + ->setParameter('value', '%'.$q.'%') ->orderBy('entity.username'); - - $datas=$qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult(); - foreach($datas as $data) { - array_push($output,array("id"=>$data->getId(),"text"=>$data->getUsername())); + + $datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult(); + foreach ($datas as $data) { + array_push($output, ['id' => $data->getId(), 'text' => $data->getUsername()]); } - $ret_string["results"]=$output; - $response = new JsonResponse($ret_string); + $ret_string['results'] = $output; + $response = new JsonResponse($ret_string); + return $response; } - public function submit($access, Request $request,ManagerRegistry $em): Response + public function submit($access, Request $request, ManagerRegistry $em): Response { // Vérifier que l'on puisse créer - if($this->getParameter("appMasteridentity")!="SQL" && $this->getParameter("appSynchroPurgeUser")) + if ('SQL' != $this->getParameter('appMasteridentity') && $this->getParameter('appSynchroPurgeUser')) { throw $this->createNotFoundException('Permission denied'); + } // Controler les permissions - $this->cansubmit($access,$em); + $this->cansubmit($access, $em); // Initialisation de l'enregistrement $data = new Entity(); - $data->setAvatar("noavatar.png"); + $data->setAvatar('noavatar.png'); $data->setIsvisible(true); $data->setApikey(Uuid::uuid4()); // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"submit", - "access"=>$access, - "userid"=>$this->getUser()->getId(), - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'submit', + 'access' => $access, + 'userid' => $this->getUser()->getId(), + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); // S'assurer que les modos ne donne pas des ROLE_ADMIN ou ROLE_USER au user qu'il submit - if($access=="modo") { - $roles=$data->getRoles(); - $roles=array_diff($roles,["ROLE_ADMIN","ROLE_MODO"]); + if ('modo' == $access) { + $roles = $data->getRoles(); + $roles = array_diff($roles, ['ROLE_ADMIN', 'ROLE_MODO']); $data->setRoles($roles); } - - // On récupère les groupes et on cacule ceux à ajouter ou à supprimer - $lstgroups=array_filter(explode(",",$form->get("linkgroups")->getData())); - $lstmodos=array_filter(explode(",",$form->get("linkmodos")->getData())); + $lstgroups = array_filter(explode(',', $form->get('linkgroups')->getData())); + $lstmodos = array_filter(explode(',', $form->get('linkmodos')->getData())); // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); // Ajout des groupes - foreach($lstgroups as $idgroup) { - $group=$em->getRepository("App\Entity\Group")->find($idgroup); - $usergroup=$em->getRepository('App\Entity\UserGroup')->findBy(["user"=>$data,"group"=>$group]); - if(!$usergroup) { - $usergroup= new UserGroup(); + foreach ($lstgroups as $idgroup) { + $group = $em->getRepository("App\Entity\Group")->find($idgroup); + $usergroup = $em->getRepository('App\Entity\UserGroup')->findBy(['user' => $data, 'group' => $group]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($data); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); @@ -364,11 +365,11 @@ class UserController extends AbstractController } // Ajout des modos - foreach($lstmodos as $idmodo) { - $niveau01=$em->getRepository("App\Entity\Niveau01")->find($idmodo); - $usermodo=$em->getRepository('App\Entity\UserModo')->findBy(["user"=>$data,"niveau01"=>$niveau01]); - if(!$usermodo) { - $usermodo= new UserModo(); + foreach ($lstmodos as $idmodo) { + $niveau01 = $em->getRepository("App\Entity\Niveau01")->find($idmodo); + $usermodo = $em->getRepository('App\Entity\UserModo')->findBy(['user' => $data, 'niveau01' => $niveau01]); + if (!$usermodo) { + $usermodo = new UserModo(); $usermodo->setUser($data); $usermodo->setNiveau01($niveau01); @@ -378,100 +379,103 @@ class UserController extends AbstractController } // Retour à la liste - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, - "mode"=>"submit", - "form"=>$form->createView(), - $this->data=>$data, - "listgroups"=>$this->getListGroups("admin",$em), - "listmodos"=> $this->getListModos($em) + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, + 'mode' => 'submit', + 'form' => $form->createView(), + $this->data => $data, + 'listgroups' => $this->getListGroups('admin', $em), + 'listmodos' => $this->getListModos($em), ]); } - public function profil($access,Request $request,ManagerRegistry $em): Response + public function profil($access, Request $request, ManagerRegistry $em): Response { - $id=$this->getUser()->getId(); - return $this->update($access,$id,$request,$em); + $id = $this->getUser()->getId(); + + return $this->update($access, $id, $request, $em); } - public function update($access,$id,Request $request,ManagerRegistry $em): Response + public function update($access, $id, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->canupdate($access,$data,$em); + $this->canupdate($access, $data, $em); // Récupération de l'ancien password - $oldpassword=$data->getPassword(); + $oldpassword = $data->getPassword(); // Récuparation des groupes associés - $oldlstgroups=[]; - foreach($data->getGroups() as $group){ + $oldlstgroups = []; + foreach ($data->getGroups() as $group) { $oldlstgroups[] = $group->getGroup()->getId(); } // Récuparation des modos associés - $oldlstmodos=[]; - foreach($data->getModos() as $modo){ + $oldlstmodos = []; + foreach ($data->getModos() as $modo) { $oldlstmodos[] = $modo->getNiveau01()->getId(); - } + } // Création du formulaire - $form = $this->createForm(Form::class,$data,array( - "mode"=>"update", - "access"=>$access, - "userid"=>$this->getUser()->getId(), - "appMasteridentity"=>$this->GetParameter("appMasteridentity"), - "appNiveau01label"=>$this->GetParameter("appNiveau01label"), - "appNiveau02label"=>$this->GetParameter("appNiveau02label"), - )); - + $form = $this->createForm(Form::class, $data, [ + 'mode' => 'update', + 'access' => $access, + 'userid' => $this->getUser()->getId(), + 'appMasteridentity' => $this->GetParameter('appMasteridentity'), + 'appNiveau01label' => $this->GetParameter('appNiveau01label'), + 'appNiveau02label' => $this->GetParameter('appNiveau02label'), + ]); + // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); - + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); + // S'assurer que les modos ne donne pas des ROLE_ADMIN ou ROLE_USER au user qu'il update - if($access=="modo") { - $roles=$data->getRoles(); - $roles=array_diff($roles,["ROLE_ADMIN","ROLE_MODO"]); + if ('modo' == $access) { + $roles = $data->getRoles(); + $roles = array_diff($roles, ['ROLE_ADMIN', 'ROLE_MODO']); $data->setRoles($roles); } // Si pas de changement de password on replace l'ancien - if($data->getPassword()=="") { - $data->setPassword($oldpassword); + if ('' == $data->getPassword()) { + $data->setPassword($oldpassword); } // Sinon on encode le nouveau else { $data->setPassword($data->getPassword()); } - + // Sauvegarde $em->getManager()->flush(); - + // On récupère les groupes et on cacule ceux à ajouter ou à supprimer - $lstgroups=array_filter(explode(",",$form->get("linkgroups")->getData())); - $removegroups=array_diff($oldlstgroups,$lstgroups); - $addgroups=array_diff($lstgroups,$oldlstgroups); - + $lstgroups = array_filter(explode(',', $form->get('linkgroups')->getData())); + $removegroups = array_diff($oldlstgroups, $lstgroups); + $addgroups = array_diff($lstgroups, $oldlstgroups); + // Ajout des nouveaux groupes - foreach($addgroups as $idgroup) { - $group=$em->getRepository("App\Entity\Group")->find($idgroup); - $usergroup=$em->getRepository('App\Entity\UserGroup')->findOneBy(["user"=>$data,"group"=>$group]); - if(!$usergroup) { - $usergroup= new UserGroup(); + foreach ($addgroups as $idgroup) { + $group = $em->getRepository("App\Entity\Group")->find($idgroup); + $usergroup = $em->getRepository('App\Entity\UserGroup')->findOneBy(['user' => $data, 'group' => $group]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($data); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); @@ -482,27 +486,26 @@ class UserController extends AbstractController } // Suppression des groupes obsolètes - foreach($removegroups as $idgroup) { - $group=$em->getRepository("App\Entity\Group")->find($idgroup); - $usergroup=$em->getRepository('App\Entity\UserGroup')->findOneBy(["user"=>$data,"group"=>$group]); - if($usergroup) { + foreach ($removegroups as $idgroup) { + $group = $em->getRepository("App\Entity\Group")->find($idgroup); + $usergroup = $em->getRepository('App\Entity\UserGroup')->findOneBy(['user' => $data, 'group' => $group]); + if ($usergroup) { $em->getManager()->remove($usergroup); $em->getManager()->flush(); } } // On récupère les modos et on cacule ceux à ajouter ou à supprimer - $linkmodos=array_filter(explode(",",$form->get("linkmodos")->getData())); - $removemodos=array_diff($oldlstmodos,$linkmodos); - $addmodos=array_diff($linkmodos,$oldlstmodos); - + $linkmodos = array_filter(explode(',', $form->get('linkmodos')->getData())); + $removemodos = array_diff($oldlstmodos, $linkmodos); + $addmodos = array_diff($linkmodos, $oldlstmodos); // Ajout des nouveaux modos - foreach($addmodos as $idmodo) { - $niveau01=$em->getRepository("App\Entity\Niveau01")->find($idmodo); - $usermodo=$em->getRepository('App\Entity\UserModo')->findOneBy(["user"=>$data,"niveau01"=>$niveau01]); - if(!$usermodo) { - $usermodo= new UserModo(); + foreach ($addmodos as $idmodo) { + $niveau01 = $em->getRepository("App\Entity\Niveau01")->find($idmodo); + $usermodo = $em->getRepository('App\Entity\UserModo')->findOneBy(['user' => $data, 'niveau01' => $niveau01]); + if (!$usermodo) { + $usermodo = new UserModo(); $usermodo->setUser($data); $usermodo->setNiveau01($niveau01); $em->getManager()->persist($usermodo); @@ -511,158 +514,184 @@ class UserController extends AbstractController } // Suppression des modos obsolètes - foreach($removemodos as $idmodo) { - $niveau01=$em->getRepository("App\Entity\Niveau01")->find($idmodo); - $usermodo=$em->getRepository('App\Entity\UserModo')->findOneBy(["user"=>$data,"niveau01"=>$niveau01]); - if($usermodo) { + foreach ($removemodos as $idmodo) { + $niveau01 = $em->getRepository("App\Entity\Niveau01")->find($idmodo); + $usermodo = $em->getRepository('App\Entity\UserModo')->findOneBy(['user' => $data, 'niveau01' => $niveau01]); + if ($usermodo) { $em->getManager()->remove($usermodo); $em->getManager()->flush(); } } // Retour à la liste - if($access=="user") - return $this->redirectToRoute("app_home"); - else - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); + if ('user' == $access) { + return $this->redirectToRoute('app_home'); + } else { + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); + } } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>($access=="admin"), - "access"=>$access, - "mode"=>"update", - "form"=>$form->createView(), - $this->data=>$data, - "listgroups"=>$this->getListGroups($access,$em), - "listmodos"=> $this->getListModos($em), - "maxsize"=>($access=="user"?1200:null), + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => ('admin' == $access), + 'access' => $access, + 'mode' => 'update', + 'form' => $form->createView(), + $this->data => $data, + 'listgroups' => $this->getListGroups($access, $em), + 'listmodos' => $this->getListModos($em), + 'maxsize' => ('user' == $access ? 1200 : null), ]); } - public function delete($access,$id,Request $request,ManagerRegistry $em): Response + public function delete($access, $id, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Controler les permissions - $this->candelete($access,$data,$em); + $this->candelete($access, $data, $em); // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); - } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)."_update",["id"=>$id]); - } - - return $this->redirectToRoute(str_replace("_admin_","_".$access."_",$this->route)); - } + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); - protected function getListGroups($access,$em) + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route).'_update', ['id' => $id]); + } + + return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route)); + } + + protected function getListGroups($access, $em) { - $qb=$em->getManager()->createQueryBuilder(); - $qb->select('b')->from('App:Group','b'); - if($access!="admin") $qb->where("b.isopen=true AND b.isworkgroup=true"); - $qb->andWhere("b.ldapfilter IS NULL"); - $qb->andWhere("b.attributes IS NULL"); - $qb->andWhere("b.id>0"); - $datas=$qb->getQuery()->getResult(); + $qb = $em->getManager()->createQueryBuilder(); + $qb->select('b')->from('App:Group', 'b'); + if ('admin' != $access) { + $qb->where('b.isopen=true AND b.isworkgroup=true'); + } + $qb->andWhere('b.ldapfilter IS NULL'); + $qb->andWhere('b.attributes IS NULL'); + $qb->andWhere('b.id>0'); + $datas = $qb->getQuery()->getResult(); + return $datas; - } - + } + protected function getListModos($em) { - $qb=$em->getManager()->createQueryBuilder(); - $qb->select('b')->from('App:Niveau01','b'); - $datas=$qb->getQuery()->getResult(); + $qb = $em->getManager()->createQueryBuilder(); + $qb->select('b')->from('App:Niveau01', 'b'); + $datas = $qb->getQuery()->getResult(); + return $datas; - } + } - - private function cansubmit($access,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : return true; break; + private function cansubmit($access, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': return true; + break; } throw $this->createAccessDeniedException('Permission denied'); } - - private function canupdate($access,$entity,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : - $usermodo=$em->getRepository("App\Entity\UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$entity->getNiveau01()]); - if(!$usermodo) throw $this->createAccessDeniedException('Permission denied'); - return true; - break; - case "user" : - if($this->getUser()->getId()!=$entity->getId()) throw $this->createAccessDeniedException('Permission denied'); - return true; - break; - } - throw $this->createAccessDeniedException('Permission denied'); - } - - private function candelete($access,$entity,$em) { - switch($access) { - case "admin" : return true; break; - case "modo" : - $usermodo=$em->getRepository("App\Entity\UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$entity->getNiveau01()]); - if(!$usermodo) throw $this->createAccessDeniedException('Permission denied'); - - if($entity->hasRole("ROLE_ADMIN")||$entity->hasRole("ROLE_MODO")) throw $this->createAccessDeniedException('Permission denied'); - return true; - break; - case "user" : - if($this->getUser()->getId()!=$entity->getId()) throw $this->createAccessDeniedException('Permission denied'); - return true; - break; - } - throw $this->createAccessDeniedException('Permission denied'); - } - - public function preference($access,Request $request,ManagerRegistry $em): Response + private function canupdate($access, $entity, $em) { - $key=$request->request->get('key'); - $id=$request->request->get('id'); - $value=$request->request->get('value'); - + switch ($access) { + case 'admin': return true; + break; + case 'modo': + $usermodo = $em->getRepository("App\Entity\UserModo")->findOneBy(['user' => $this->getUser(), 'niveau01' => $entity->getNiveau01()]); + if (!$usermodo) { + throw $this->createAccessDeniedException('Permission denied'); + } + + return true; + break; + case 'user': + if ($this->getUser()->getId() != $entity->getId()) { + throw $this->createAccessDeniedException('Permission denied'); + } + + return true; + break; + } + throw $this->createAccessDeniedException('Permission denied'); + } + + private function candelete($access, $entity, $em) + { + switch ($access) { + case 'admin': return true; + break; + case 'modo': + $usermodo = $em->getRepository("App\Entity\UserModo")->findOneBy(['user' => $this->getUser(), 'niveau01' => $entity->getNiveau01()]); + if (!$usermodo) { + throw $this->createAccessDeniedException('Permission denied'); + } + + if ($entity->hasRole('ROLE_ADMIN') || $entity->hasRole('ROLE_MODO')) { + throw $this->createAccessDeniedException('Permission denied'); + } + + return true; + break; + case 'user': + if ($this->getUser()->getId() != $entity->getId()) { + throw $this->createAccessDeniedException('Permission denied'); + } + + return true; + break; + } + throw $this->createAccessDeniedException('Permission denied'); + } + + public function preference($access, Request $request, ManagerRegistry $em): Response + { + $key = $request->request->get('key'); + $id = $request->request->get('id'); + $value = $request->request->get('value'); + // Récupérer les préférences de l'utilisateur - $preference=$this->getUser()->getPreference(); + $preference = $this->getUser()->getPreference(); // Mise à jour de la préférence - $toupdate=false; - if(!is_array($preference)) { - $toupdate=true; - $preference=[]; + $toupdate = false; + if (!is_array($preference)) { + $toupdate = true; + $preference = []; } - if(!array_key_exists($key,$preference)) { - $toupdate=true; - $preference[$key]=[]; + if (!array_key_exists($key, $preference)) { + $toupdate = true; + $preference[$key] = []; } - if((!array_key_exists($id,$preference[$key]))) { - $toupdate=true; - $preference[$key][$id]=$value; + if (!array_key_exists($id, $preference[$key])) { + $toupdate = true; + $preference[$key][$id] = $value; + } + if ($preference[$key][$id] != $value) { + $toupdate = true; + $preference[$key][$id] = $value; } - if($preference[$key][$id]!=$value) { - $toupdate=true; - $preference[$key][$id]=$value; - } // Mise à jour des préferences - if($toupdate) { + if ($toupdate) { $this->getUser()->setPreference($preference); - $em->getManager()->flush(); + $em->getManager()->flush(); } - + return new Response(); } -} \ No newline at end of file +} diff --git a/src/Controller/WhitelistController.php b/src/Controller/WhitelistController.php index 735419b..0d3c9b9 100644 --- a/src/Controller/WhitelistController.php +++ b/src/Controller/WhitelistController.php @@ -2,118 +2,121 @@ namespace App\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\JsonResponse; -use Doctrine\Persistence\ManagerRegistry; - use App\Entity\Whitelist as Entity; use App\Form\WhitelistType as Form; +use Doctrine\Persistence\ManagerRegistry; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; class WhitelistController extends AbstractController { - private $data="whitelist"; - private $entity="App\Entity\Whitelist"; - private $twig="Whitelist/"; - private $route="app_admin_whitelist"; + private $data = 'whitelist'; + private $entity = "App\Entity\Whitelist"; + private $twig = 'Whitelist/'; + private $route = 'app_admin_whitelist'; public function list($access): Response - { - return $this->render($this->twig.'list.html.twig',[ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "access"=>$access, + { + return $this->render($this->twig.'list.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'access' => $access, ]); } - public function tablelist(Request $request,ManagerRegistry $em): Response - { - $query=$request->query->all(); - $start=$query['start']; - $length=$query['length']; - $search=$query['search']; - $draw= $query['draw']; - $ordercolumn=$query['order'][0]['column']; - $orderdir=$query['order'][0]['dir']; + public function tablelist(Request $request, ManagerRegistry $em): Response + { + $query = $request->query->all(); + $start = $query['start']; + $length = $query['length']; + $search = $query['search']; + $draw = $query['draw']; + $ordercolumn = $query['order'][0]['column']; + $orderdir = $query['order'][0]['dir']; // Nombre total d'enregistrement - $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity,'entity')->getQuery()->getSingleScalarResult(); + $total = $em->getManager()->createQueryBuilder()->select('COUNT(entity)')->from($this->entity, 'entity')->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré - if(!$search||$search["value"]=="") + if (!$search || '' == $search['value']) { $totalf = $total; - else { - $totalf= $em->getManager()->createQueryBuilder() + } else { + $totalf = $em->getManager()->createQueryBuilder() ->select('COUNT(entity)') - ->from($this->entity,'entity') + ->from($this->entity, 'entity') ->where('entity.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%") + ->setParameter('value', '%'.$search['value'].'%') ->getQuery() ->getSingleScalarResult(); } // Construction du tableau de retour - $output = array( + $output = [ 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, - 'data' => array(), - ); + 'data' => [], + ]; // Parcours des Enregistrement $qb = $em->getManager()->createQueryBuilder(); - $qb->select('entity')->from($this->entity,'entity'); - if($search&&$search["value"]!="") { - $qb ->andWhere('entity.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%"); + $qb->select('entity')->from($this->entity, 'entity'); + if ($search && '' != $search['value']) { + $qb->andWhere('entity.label LIKE :value') + ->setParameter('value', '%'.$search['value'].'%'); } - if($ordercolumn) { - switch($ordercolumn) { - case 1 : - $qb->orderBy('entity.label',$orderdir); - break; + if ($ordercolumn) { + switch ($ordercolumn) { + case 1: + $qb->orderBy('entity.label', $orderdir); + break; } } - $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); + $datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); - foreach($datas as $data) { + foreach ($datas as $data) { // Action - $action = ""; - $action.="$data->getId()))."'>"; + $action = ''; + $action .= " $data->getId()])."'>"; - $tmp=array(); - array_push($tmp,$action); - array_push($tmp,$data->getLabel()); + $tmp = []; + array_push($tmp, $action); + array_push($tmp, $data->getLabel()); - if($this->getParameter("appMasteridentity")=="LDAP"||$this->getParameter("appSynchro")=="LDAP2NINE") array_push($tmp,$data->getLdapfilter()); - if($this->getParameter("appMasteridentity")=="SSO") array_push($tmp,$data->getAttributes()); + if ('LDAP' == $this->getParameter('appMasteridentity') || 'LDAP2NINE' == $this->getParameter('appSynchro')) { + array_push($tmp, $data->getLdapfilter()); + } + if ('SSO' == $this->getParameter('appMasteridentity')) { + array_push($tmp, $data->getAttributes()); + } - array_push($output["data"],$tmp); + array_push($output['data'], $tmp); } // Retour return new JsonResponse($output); - } + } - public function submit($access,Request $request,ManagerRegistry $em): Response + public function submit($access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement $data = new Entity(); - + // Création du formulaire - $form = $this->createForm(Form::class,$data,array("mode"=>"submit")); + $form = $this->createForm(Form::class, $data, ['mode' => 'submit']); // Récupération des data du formulaire $form->handleRequest($request); - + // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); - + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); + // Sauvegarde $em->getManager()->persist($data); $em->getManager()->flush(); @@ -121,82 +124,87 @@ class WhitelistController extends AbstractController // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - "useheader"=>true, - "usemenu"=>false, - "usesidebar"=>true, - "mode"=>"submit", - "form"=>$form->createView(), - $this->data=>$data, - "access"=>$access, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'mode' => 'submit', + 'form' => $form->createView(), + $this->data => $data, + 'access' => $access, ]); - } + } - public function update($id,$access,Request $request,ManagerRegistry $em): Response + public function update($id, $access, Request $request, ManagerRegistry $em): Response { // Initialisation de l'enregistrement - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); - + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } + // Création du formulaire - $form = $this->createForm(Form::class,$data,array("mode"=>"update")); + $form = $this->createForm(Form::class, $data, ['mode' => 'update']); // Récupération des data du formulaire $form->handleRequest($request); // Sur validation - if ($form->get('submit')->isClicked() && $form->isValid()) { - $data = $form->getData(); + if ($form->get('submit')->isClicked() && $form->isValid()) { + $data = $form->getData(); $em->getManager()->flush(); // Retour à la liste return $this->redirectToRoute($this->route); } - + // Affichage du formulaire return $this->render($this->twig.'edit.html.twig', [ - 'useheader' => true, - 'usemenu' => false, - 'usesidebar' => true, - $this->data => $data, - 'mode' => 'update', - 'form' => $form->createView(), - "access"=>$access, + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + $this->data => $data, + 'mode' => 'update', + 'form' => $form->createView(), + 'access' => $access, ]); } - public function delete($id,$access,Request $request,ManagerRegistry $em): Response + public function delete($id, $access, Request $request, ManagerRegistry $em): Response { // Récupération de l'enregistrement courant - $data=$em->getRepository($this->entity)->find($id); - if (!$data) throw $this->createNotFoundException('Unable to find entity.'); + $data = $em->getRepository($this->entity)->find($id); + if (!$data) { + throw $this->createNotFoundException('Unable to find entity.'); + } // Tentative de suppression - try{ + try { $em->getManager()->remove($data); $em->getManager()->flush(); + } catch (\Exception $e) { + $request->getSession()->getFlashBag()->add('error', $e->getMessage()); + + return $this->redirectToRoute($this->route.'_update', ['id' => $id]); } - catch (\Exception $e) { - $request->getSession()->getFlashBag()->add("error", $e->getMessage()); - return $this->redirectToRoute($this->route."_update",["id"=>$id]); - } - - return $this->redirectToRoute($this->route); + + return $this->redirectToRoute($this->route); } - public function is(Request $request,ManagerRegistry $em) + public function is(Request $request, ManagerRegistry $em) { - $email=$request->request->get('email'); - $email=explode("@",$email); - $domaine=end($email); + $email = $request->request->get('email'); + $email = explode('@', $email); + $domaine = end($email); // Rechercher le mail dans la liste blanche - $whitelist=$em->getRepository($this->entity)->findOneBy(["label"=>$domaine]); - if($whitelist) - return new Response("OK", 200); - else - return new Response("KO", 200); - } + $whitelist = $em->getRepository($this->entity)->findOneBy(['label' => $domaine]); + if ($whitelist) { + return new Response('OK', 200); + } else { + return new Response('KO', 200); + } + } } diff --git a/src/Entity/Audit.php b/src/Entity/Audit.php index 1f79860..6a3e46b 100644 --- a/src/Entity/Audit.php +++ b/src/Entity/Audit.php @@ -2,12 +2,10 @@ namespace App\Entity; -use App\Repository\AuditRepository; -use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; /** - * Cron + * Cron. * * @ORM\Table(name="audit",indexes={@ORM\Index(name="search_idx", columns={"entityname", "entityid", "datesubmit"})}) * @ORM\Entity(repositoryClass="App\Repository\AuditRepository") @@ -33,8 +31,7 @@ class Audit /** * @ORM\Column(type="datetime") */ - private $datesubmit; - + private $datesubmit; /** * @ORM\Column(type="string", length=250, nullable=false) @@ -49,7 +46,7 @@ class Audit /** * @ORM\Column(type="array", nullable=true) */ - private $detail = array(); + private $detail = []; public function getId(): ?int { @@ -127,6 +124,4 @@ class Audit return $this; } - -} - +} diff --git a/src/Entity/Config.php b/src/Entity/Config.php index 1701cd8..3dae3f8 100644 --- a/src/Entity/Config.php +++ b/src/Entity/Config.php @@ -2,12 +2,10 @@ namespace App\Entity; -use App\Repository\ConfigRepository; -use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; /** - * Cron + * Cron. * * @ORM\Table(name="config") * @ORM\HasLifecycleCallbacks() @@ -75,8 +73,8 @@ class Config */ private $help; - //== CODE A NE PAS REGENERER - + // == CODE A NE PAS REGENERER + public function setId(string $id): self { $this->id = $id; @@ -86,18 +84,20 @@ class Config public function getValue(): ?string { - if($this->value=="") return $this->default; - else return $this->value; + if ('' == $this->value) { + return $this->default; + } else { + return $this->value; + } } - //== FIN DU CODE A NE PAS REGENERER + // == FIN DU CODE A NE PAS REGENERER public function getId(): ?string { return $this->id; } - public function getTitle(): ?string { return $this->title; diff --git a/src/Entity/Cron.php b/src/Entity/Cron.php index 805ae8d..68f4f80 100644 --- a/src/Entity/Cron.php +++ b/src/Entity/Cron.php @@ -2,12 +2,11 @@ namespace App\Entity; -use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; /** - * Cron + * Cron. * * @ORM\Table(name="cron") * @ORM\Entity(repositoryClass="App\Repository\CronRepository") @@ -15,7 +14,7 @@ use Symfony\Component\Validator\Constraints as Assert; class Cron { /** - * @var integer + * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id @@ -28,70 +27,72 @@ class Cron * * @ORM\Column(name="command", type="string", nullable=false) * @Assert\NotBlank() - * */ private $command; /** * @ORM\Column(type="text", nullable=true) */ - private $description; + private $description; /** * @ORM\Column(type="integer", nullable=true) */ - private $statut; + private $statut; /** * @ORM\Column(type="datetime", nullable=false) */ - private $submitdate; + private $submitdate; /** * @ORM\Column(type="datetime", nullable=true) */ - private $startexecdate; + private $startexecdate; /** * @ORM\Column(type="datetime", nullable=true) */ - private $endexecdate; + private $endexecdate; /** * @ORM\Column(type="datetime", nullable=true) */ - private $nextexecdate; + private $nextexecdate; /** * @ORM\Column(type="integer", nullable=true) */ - private $repeatinterval; + private $repeatinterval; /** * @ORM\Column(type="text", nullable=true) */ - private $jsonargument; - + private $jsonargument; // A garder pour forcer l'id en init public function setId($id) { $this->id = $id; + return $this; } - + public function __construct() { - $this->submitdate = new \DateTime(); - } + $this->submitdate = new \DateTime(); + } // A garder pour récupérer le label du statut public function getStatutLabel() { - switch($this->statut) { - case -1: return "Désactivé"; break; - case 0: return "KO"; break; - case 1: return "OK"; break; + switch ($this->statut) { + case -1: return 'Désactivé'; + break; + case 0: return 'KO'; + break; + case 1: return 'OK'; + break; } } diff --git a/src/Entity/Group.php b/src/Entity/Group.php index beb10f6..e0f9542 100644 --- a/src/Entity/Group.php +++ b/src/Entity/Group.php @@ -1,11 +1,10 @@ users = new ArrayCollection(); } - //== CODE A NE PAS REGENERER + // == CODE A NE PAS REGENERER public function setId(int $id): self { $this->id = $id; + return $this; } - //== FIN DU CODE A NE PAS REGENERER + // == FIN DU CODE A NE PAS REGENERER public function getId(): ?int { diff --git a/src/Entity/Niveau01.php b/src/Entity/Niveau01.php index 2ea4982..00d55cb 100644 --- a/src/Entity/Niveau01.php +++ b/src/Entity/Niveau01.php @@ -1,20 +1,19 @@ modos = new ArrayCollection(); } - - //== CODE A NE PAS REGENERER + // == CODE A NE PAS REGENERER public function setId(int $id): self { $this->id = $id; + return $this; } - //== FIN DU CODE A NE PAS REGENERER + // == FIN DU CODE A NE PAS REGENERER public function getId(): ?int { @@ -287,6 +285,4 @@ class Niveau01 return $this; } - - } diff --git a/src/Entity/Niveau02.php b/src/Entity/Niveau02.php index 0755bf5..346085c 100644 --- a/src/Entity/Niveau02.php +++ b/src/Entity/Niveau02.php @@ -1,12 +1,12 @@ username; } - public function setPasswordDirect($password) { // Permet de setter le password généré lors de l'inscription $this->password = $password; - + return $this; - } + } /** * @see PasswordAuthenticatedUserInterface */ public function getPassword(): string { - return $this->password; + return $this->password; } public function setPassword($password): self { - if($password!=$this->password&&$password!=""){ + if ($password != $this->password && '' != $password) { // Placer le password non encodé dans une variable tempo sur laquel on va appliquer la contraite de form $this->passwordplain = $password; - // Password encrypté format openldap + // Password encrypté format openldap $this->salt = uniqid(mt_rand(), true); - $hash = "{SSHA}" . base64_encode(pack("H*", sha1($password . $this->salt)) . $this->salt); + $hash = '{SSHA}'.base64_encode(pack('H*', sha1($password.$this->salt)).$this->salt); - $this->password = $hash; + $this->password = $hash; } - + return $this; } @@ -194,22 +188,24 @@ class Registration implements UserInterface, LegacyPasswordAuthenticatedUserInte public function hasRole(string $role): ?bool { - return in_array($role,$this->getRoles()); + return in_array($role, $this->getRoles()); } public function setRole(string $role): self { - if(!$this->hasRole($role)) - array_push($this->roles,$role); + if (!$this->hasRole($role)) { + array_push($this->roles, $role); + } return $this; } - public function getDisplayname() { - return $this->firstname." ".$this->lastname; + public function getDisplayname() + { + return $this->firstname.' '.$this->lastname; } - //== FIN DU CODE A NE PAS REGENERER + // == FIN DU CODE A NE PAS REGENERER public function getId(): ?int { @@ -414,5 +410,4 @@ class Registration implements UserInterface, LegacyPasswordAuthenticatedUserInte return $this; } - } diff --git a/src/Entity/User.php b/src/Entity/User.php index e027b24..1a21be3 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -1,23 +1,21 @@ modos = new ArrayCollection(); } - //== CODE A NE PAS REGENERER + // == CODE A NE PAS REGENERER public function setId(int $id): self { $this->id = $id; + return $this; } - public function getUserIdentifier(): string { return $this->username; } - public function setPasswordDirect($password) { // Permet de setter le password généré lors de l'inscription $this->password = $password; - + return $this; - } + } /** * @see PasswordAuthenticatedUserInterface */ public function getPassword(): string { - return $this->password; + return $this->password; } public function setPassword($password): self { - if($password!=$this->password&&$password!=""){ + if ($password != $this->password && '' != $password) { // Placer le password non encodé dans une variable tempo sur laquel on va appliquer la contraite de form $this->passwordplain = $password; - // Password encrypté format openldap + // Password encrypté format openldap $this->salt = uniqid(mt_rand(), true); - $hash = "{SSHA}" . base64_encode(pack("H*", sha1($password . $this->salt)) . $this->salt); + $hash = '{SSHA}'.base64_encode(pack('H*', sha1($password.$this->salt)).$this->salt); - $this->password = $hash; + $this->password = $hash; } - + return $this; } @@ -257,22 +254,24 @@ class User implements UserInterface, LegacyPasswordAuthenticatedUserInterface public function hasRole(string $role): ?bool { - return in_array($role,$this->getRoles()); + return in_array($role, $this->getRoles()); } public function setRole(string $role): self { - if(!$this->hasRole($role)) - array_push($this->roles,$role); + if (!$this->hasRole($role)) { + array_push($this->roles, $role); + } return $this; } - public function getDisplayname() { - return $this->firstname." ".$this->lastname; + public function getDisplayname() + { + return $this->firstname.' '.$this->lastname; } - //== FIN DU CODE A NE PAS REGENERER + // == FIN DU CODE A NE PAS REGENERER public function getId(): ?int { @@ -622,5 +621,4 @@ class User implements UserInterface, LegacyPasswordAuthenticatedUserInterface return $this; } - } diff --git a/src/Entity/UserGroup.php b/src/Entity/UserGroup.php index fd77b1a..4ddec36 100644 --- a/src/Entity/UserGroup.php +++ b/src/Entity/UserGroup.php @@ -1,7 +1,7 @@ em = $em; $this->token = $token; @@ -40,49 +38,58 @@ class AllSubscriber implements EventSubscriberInterface $this->entity = $args->getObject(); // Les enregistrements négatifs sont des enregistrements systeme indispensable - if($this->entity->getId()<0) + if ($this->entity->getId() < 0) { throw new \Exception("Impossible de supprimer cet enregistrement. C'est un enregistrement système"); + } } public function onFlush(OnFlushEventArgs $eventArgs): void - { + { $this->entity = $eventArgs->getEntityManager(); - if ($this->entity instanceof Audit||!$this->params->get("auditUse")) return; + if ($this->entity instanceof Audit || !$this->params->get('auditUse')) { + return; + } $this->audit(); } - private function audit() { + private function audit() + { $token = $this->token->getToken(); - if(!$token)$user="job"; - else { - $user=$token->getUser(); - if($user!="anon.") $user = $user->getUsername(); - else $user="job"; + if (!$token) { + $user = 'job'; + } else { + $user = $token->getUser(); + if ('anon.' != $user) { + $user = $user->getUsername(); + } else { + $user = 'job'; + } } - $uow = $this->em->getUnitOfWork(); + $uow = $this->em->getUnitOfWork(); $uow->computeChangeSets(); - + foreach ($uow->getScheduledEntityInsertions() as $entity) { $metaCar = $this->em->getClassMetadata(get_class($entity)); - $className=str_replace("App\\Entity\\","",$metaCar->getName()); + $className = str_replace('App\\Entity\\', '', $metaCar->getName()); - $nameold=""; - if($metaCar->hasField("name")) - $nameold=" = ".$entity->getName(); - elseif($metaCar->hasField("label")) - $nameold=" = ".$entity->getLabel(); - elseif($metaCar->hasField("username")) - $nameold=" = ".$entity->getUsername(); + $nameold = ''; + if ($metaCar->hasField('name')) { + $nameold = ' = '.$entity->getName(); + } elseif ($metaCar->hasField('label')) { + $nameold = ' = '.$entity->getLabel(); + } elseif ($metaCar->hasField('username')) { + $nameold = ' = '.$entity->getUsername(); + } - $audit=new Audit(); - $audit->setDatesubmit(new \DateTime("now")); + $audit = new Audit(); + $audit->setDatesubmit(new \DateTime('now')); $audit->setEntityname($className); $audit->setEntityid($entity->getId()); $audit->setUsername($user); - $audit->setDescription("SUBMIT"); - $audit->setDetail(["id"=>$entity->getId().$nameold]); + $audit->setDescription('SUBMIT'); + $audit->setDetail(['id' => $entity->getId().$nameold]); $this->em->persist($audit); $uow->computeChangeSet($this->em->getClassMetadata(get_class($audit)), $audit); @@ -90,23 +97,24 @@ class AllSubscriber implements EventSubscriberInterface foreach ($uow->getScheduledEntityDeletions() as $entity) { $metaCar = $this->em->getClassMetadata(get_class($entity)); - $className=str_replace("App\\Entity\\","",$metaCar->getName()); + $className = str_replace('App\\Entity\\', '', $metaCar->getName()); - $nameold=""; - if($metaCar->hasField("name")) - $nameold=" = ".$entity->getName(); - elseif($metaCar->hasField("label")) - $nameold=" = ".$entity->getLabel(); - elseif($metaCar->hasField("username")) - $nameold=" = ".$entity->getUsername(); + $nameold = ''; + if ($metaCar->hasField('name')) { + $nameold = ' = '.$entity->getName(); + } elseif ($metaCar->hasField('label')) { + $nameold = ' = '.$entity->getLabel(); + } elseif ($metaCar->hasField('username')) { + $nameold = ' = '.$entity->getUsername(); + } - $audit=new Audit(); - $audit->setDatesubmit(new \DateTime("now")); + $audit = new Audit(); + $audit->setDatesubmit(new \DateTime('now')); $audit->setEntityname($className); $audit->setEntityid($entity->getId()); $audit->setUsername($user); - $audit->setDescription("DELETE"); - $audit->setDetail(["id"=>$entity->getId().$nameold]); + $audit->setDescription('DELETE'); + $audit->setDetail(['id' => $entity->getId().$nameold]); $this->em->persist($audit); $uow->computeChangeSet($this->em->getClassMetadata(get_class($audit)), $audit); @@ -116,76 +124,76 @@ class AllSubscriber implements EventSubscriberInterface $changeSet = $uow->getEntityChangeSet($entity); // Unaudit field - $className = str_replace("App\\Entity\\","",$this->em->getClassMetadata(get_class($entity))->getName()); - switch($className) { - case "Audit": - $changeSet=null; - break; - - case "User": - unset($changeSet["visitecpt"]); - unset($changeSet["visitedate"]); - unset($changeSet["preference"]); - unset($changeSet["keyvalue"]); - unset($changeSet["keyexpire"]); - unset($changeSet["apikey"]); - unset($changeSet["password"]); - unset($changeSet["passwordplain"]); - unset($changeSet["salt"]); - break; + $className = str_replace('App\\Entity\\', '', $this->em->getClassMetadata(get_class($entity))->getName()); + switch ($className) { + case 'Audit': + $changeSet = null; + break; + case 'User': + unset($changeSet['visitecpt']); + unset($changeSet['visitedate']); + unset($changeSet['preference']); + unset($changeSet['keyvalue']); + unset($changeSet['keyexpire']); + unset($changeSet['apikey']); + unset($changeSet['password']); + unset($changeSet['passwordplain']); + unset($changeSet['salt']); + break; default: - unset($changeSet["apikey"]); - break; + unset($changeSet['apikey']); + break; } if ($changeSet) { - $mychange=[]; - foreach($changeSet as $key => $value) { + $mychange = []; + foreach ($changeSet as $key => $value) { // Le champs modifié est-il une entité - $isentity0=($value[0]&&is_object($value[0])&&get_class($value[0])&&get_class($value[0])!="DateTime"); - $isentity1=($value[1]&&is_object($value[1])&&get_class($value[1])&&get_class($value[1])!="DateTime"); + $isentity0 = ($value[0] && is_object($value[0]) && get_class($value[0]) && 'DateTime' != get_class($value[0])); + $isentity1 = ($value[1] && is_object($value[1]) && get_class($value[1]) && 'DateTime' != get_class($value[1])); - if($isentity0||$isentity1) { - $nameold=""; - if($isentity0) { + if ($isentity0 || $isentity1) { + $nameold = ''; + if ($isentity0) { $metaCar = $this->em->getClassMetadata(get_class($value[0])); - if($metaCar->hasField("name")) - $nameold=" = ".$value[0]->getName(); - elseif($metaCar->hasField("label")) - $nameold=" = ".$value[0]->getLabel(); - elseif($metaCar->hasField("username")) - $nameold=" = ".$value[0]->getUsername(); - - $nameold= $value[0]->getId().$nameold; + if ($metaCar->hasField('name')) { + $nameold = ' = '.$value[0]->getName(); + } elseif ($metaCar->hasField('label')) { + $nameold = ' = '.$value[0]->getLabel(); + } elseif ($metaCar->hasField('username')) { + $nameold = ' = '.$value[0]->getUsername(); + } + + $nameold = $value[0]->getId().$nameold; } - - $namenew=""; - if($isentity1) { + $namenew = ''; + if ($isentity1) { $metaCar = $this->em->getClassMetadata(get_class($value[1])); - if($metaCar->hasField("name")) - $namenew=" = ".$value[1]->getName(); - elseif($metaCar->hasField("label")) - $namenew=" = ".$value[1]->getLabel(); - elseif($metaCar->hasField("username")) - $namenew=" = ".$value[1]->getUsername(); + if ($metaCar->hasField('name')) { + $namenew = ' = '.$value[1]->getName(); + } elseif ($metaCar->hasField('label')) { + $namenew = ' = '.$value[1]->getLabel(); + } elseif ($metaCar->hasField('username')) { + $namenew = ' = '.$value[1]->getUsername(); + } - $namenew= $value[1]->getId().$namenew; + $namenew = $value[1]->getId().$namenew; } - $mychange[$key]=[$nameold,$namenew]; + $mychange[$key] = [$nameold, $namenew]; + } else { + $mychange[$key] = $value; } - else $mychange[$key]=$value; - } - $audit=new Audit(); - $audit->setDatesubmit(new \DateTime("now")); + $audit = new Audit(); + $audit->setDatesubmit(new \DateTime('now')); $audit->setEntityname($className); $audit->setEntityid($entity->getId()); $audit->setUsername($user); - $audit->setDescription("UPDATE"); + $audit->setDescription('UPDATE'); $audit->setDetail($mychange); $this->em->persist($audit); @@ -193,6 +201,4 @@ class AllSubscriber implements EventSubscriberInterface } } } - - } diff --git a/src/EventListener/GroupSubscriber.php b/src/EventListener/GroupSubscriber.php index 45594dc..de9dfd3 100644 --- a/src/EventListener/GroupSubscriber.php +++ b/src/EventListener/GroupSubscriber.php @@ -2,29 +2,27 @@ namespace App\EventListener; -use Doctrine\ORM\EntityManagerInterface; use App\Entity\Group as Entity; -use App\Entity\UserGroup as UserGroup; +use App\Entity\UserGroup; +use App\Service\LdapService; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; use Ramsey\Uuid\Uuid; -use App\Service\LdapService; - class GroupSubscriber implements EventSubscriberInterface { private $em; private $entity; private $ldap; - public function __construct(EntityManagerInterface $em,LdapService $ldap) + public function __construct(EntityManagerInterface $em, LdapService $ldap) { $this->em = $em; $this->ldap = $ldap; } - public function getSubscribedEvents(): array { return [ @@ -39,7 +37,9 @@ class GroupSubscriber implements EventSubscriberInterface public function postPersist(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap $this->nine2ldap(); @@ -51,13 +51,17 @@ class GroupSubscriber implements EventSubscriberInterface public function preUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } } public function postUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap $this->nine2ldap(); @@ -69,75 +73,79 @@ class GroupSubscriber implements EventSubscriberInterface public function preRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldapremove(); + $this->nine2ldapremove(); } public function postRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; - } - - private function nine2ldap() { - if($this->ldap->isNine2Ldap()) { - // On s'assure que la structure organisationnelle est présente - $this->ldap->addOrganisations(); - - // Ajout / Modification group dans annuaire - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesGroup(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("basegroup")); - if(empty($ldapentrys)) { - $this->ldap->addGroup($this->entity); - } - elseif($this->ldap->ismodifyGroup($this->entity,$ldapentrys[0])) { - $this->ldap->modifyGroup($this->entity,$ldapentrys[0]["cn"]); - } + if (!$this->entity instanceof Entity) { + return; } } + private function nine2ldap() + { + if ($this->ldap->isNine2Ldap()) { + // On s'assure que la structure organisationnelle est présente + $this->ldap->addOrganisations(); - private function nine2ldapremove() { - if($this->ldap->isNine2Ldap()) { - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesGroup(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("basegroup")); - if(!empty($ldapentrys)) { + // Ajout / Modification group dans annuaire + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesGroup(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('basegroup')); + if (empty($ldapentrys)) { + $this->ldap->addGroup($this->entity); + } elseif ($this->ldap->ismodifyGroup($this->entity, $ldapentrys[0])) { + $this->ldap->modifyGroup($this->entity, $ldapentrys[0]['cn']); + } + } + } + + private function nine2ldapremove() + { + if ($this->ldap->isNine2Ldap()) { + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesGroup(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('basegroup')); + if (!empty($ldapentrys)) { $this->ldap->deleteGroup($this->entity); } } } - private function ctrlOwner() { - $group=$this->entity; + private function ctrlOwner() + { + $group = $this->entity; // Le propriétaire passe manager - $usergroups=$this->em->getRepository("App\Entity\UserGroup")->findBy(["group"=>$group,"rolegroup"=>"100"]); - foreach($usergroups as $usergroup) { - if($usergroup->getUser()!=$group->getOwner()) { + $usergroups = $this->em->getRepository("App\Entity\UserGroup")->findBy(['group' => $group, 'rolegroup' => '100']); + foreach ($usergroups as $usergroup) { + if ($usergroup->getUser() != $group->getOwner()) { $usergroup->setRolegroup(90); - $this->em->flush(); + $this->em->flush(); } } // Le propriétaire prend son role dans le groupe - if($group->getOwner()) { - $usergroup=$this->em->getRepository("App\Entity\UserGroup")->findOneBy(["group"=>$group,"user"=>$group->getOwner()]); - if(!$usergroup) { - $usergroup=new UserGroup(); + if ($group->getOwner()) { + $usergroup = $this->em->getRepository("App\Entity\UserGroup")->findOneBy(['group' => $group, 'user' => $group->getOwner()]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($group->getOwner()); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); $usergroup->setRolegroup(100); $this->em->persist($usergroup); - $this->em->flush(); - } - elseif($usergroup->getRolegroup()!=100) { + $this->em->flush(); + } elseif (100 != $usergroup->getRolegroup()) { $usergroup->setRolegroup(100); - $this->em->flush(); + $this->em->flush(); } } } diff --git a/src/EventListener/Niveau01Subscriber.php b/src/EventListener/Niveau01Subscriber.php index 844fa90..90903a8 100644 --- a/src/EventListener/Niveau01Subscriber.php +++ b/src/EventListener/Niveau01Subscriber.php @@ -2,28 +2,25 @@ namespace App\EventListener; -use Doctrine\ORM\EntityManagerInterface; use App\Entity\Niveau01 as Entity; +use App\Service\LdapService; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; -use App\Service\LdapService; - - class Niveau01Subscriber implements EventSubscriberInterface { private $em; private $entity; private $ldap; - public function __construct(EntityManagerInterface $em,LdapService $ldap) + public function __construct(EntityManagerInterface $em, LdapService $ldap) { $this->em = $em; $this->ldap = $ldap; } - public function getSubscribedEvents(): array { return [ @@ -38,79 +35,92 @@ class Niveau01Subscriber implements EventSubscriberInterface public function postPersist(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); } public function preUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } } public function postUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); } public function preRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Impossible de supprimer si présence de niveau02 rattaché - if(!$this->entity->getNiveau02s()->isEmpty()) - throw new \Exception("Impossible de supprimer cet enregistrement. Il est lié à des niveaux de rang 02"); + if (!$this->entity->getNiveau02s()->isEmpty()) { + throw new \Exception('Impossible de supprimer cet enregistrement. Il est lié à des niveaux de rang 02'); + } // Impossible de supprimer si présence de registration rattaché - if(!$this->entity->getRegistrations()->isEmpty()) - throw new \Exception("Impossible de supprimer cet enregistrement. Il est lié à des inscriptions"); + if (!$this->entity->getRegistrations()->isEmpty()) { + throw new \Exception('Impossible de supprimer cet enregistrement. Il est lié à des inscriptions'); + } // Impossible de supprimer si présence de user rattaché - if(!$this->entity->getUsers()->isEmpty()) - throw new \Exception("Impossible de supprimer cet enregistrement. Il est lié à des utilisateurs"); + if (!$this->entity->getUsers()->isEmpty()) { + throw new \Exception('Impossible de supprimer cet enregistrement. Il est lié à des utilisateurs'); + } // Synchronisation nine2ldap - $this->nine2ldapremove(); + $this->nine2ldapremove(); } public function postRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } } - - private function nine2ldap() { - if($this->ldap->isNine2Ldap()) { + private function nine2ldap() + { + if ($this->ldap->isNine2Ldap()) { // On s'assure que la structure organisationnelle est présente $this->ldap->addOrganisations(); - - // Ajout / Modification dans annuaire - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesNiveau01(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseniveau01")); - if(empty($ldapentrys)) { - $this->ldap->addNiveau01($this->entity); - } - elseif($this->ldap->ismodifyNiveau01($this->entity,$ldapentrys[0])) { - $this->ldap->modifyNiveau01($this->entity,$ldapentrys[0]["cn"]); - } - } - } - private function nine2ldapremove() { - if($this->ldap->isNine2Ldap()) { - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesNiveau01(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseniveau01")); - if(!empty($ldapentrys)) { + // Ajout / Modification dans annuaire + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesNiveau01(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseniveau01')); + if (empty($ldapentrys)) { + $this->ldap->addNiveau01($this->entity); + } elseif ($this->ldap->ismodifyNiveau01($this->entity, $ldapentrys[0])) { + $this->ldap->modifyNiveau01($this->entity, $ldapentrys[0]['cn']); + } + } + } + + private function nine2ldapremove() + { + if ($this->ldap->isNine2Ldap()) { + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesNiveau01(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseniveau01')); + if (!empty($ldapentrys)) { $this->ldap->deleteNiveau01($this->entity); } } diff --git a/src/EventListener/Niveau02Subscriber.php b/src/EventListener/Niveau02Subscriber.php index 5223918..472750d 100644 --- a/src/EventListener/Niveau02Subscriber.php +++ b/src/EventListener/Niveau02Subscriber.php @@ -2,21 +2,20 @@ namespace App\EventListener; -use Doctrine\ORM\EntityManagerInterface; use App\Entity\Niveau02 as Entity; +use App\Service\LdapService; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; -use App\Service\LdapService; - class Niveau02Subscriber implements EventSubscriberInterface { private $em; private $entity; private $ldap; - public function __construct(EntityManagerInterface $em,LdapService $ldap) + public function __construct(EntityManagerInterface $em, LdapService $ldap) { $this->em = $em; $this->ldap = $ldap; @@ -36,40 +35,49 @@ class Niveau02Subscriber implements EventSubscriberInterface public function postPersist(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; - + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); } public function preUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } } public function postUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); } public function preRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Impossible de supprimer si présence de registration rattaché - if(!$this->entity->getRegistrations()->isEmpty()) - throw new \Exception("Impossible de supprimer cet enregistrement. Il est lié à des inscriptions"); + if (!$this->entity->getRegistrations()->isEmpty()) { + throw new \Exception('Impossible de supprimer cet enregistrement. Il est lié à des inscriptions'); + } // Impossible de supprimer si présence de user rattaché - if(!$this->entity->getUsers()->isEmpty()) - throw new \Exception("Impossible de supprimer cet enregistrement. Il est lié à des utilisateurs"); + if (!$this->entity->getUsers()->isEmpty()) { + throw new \Exception('Impossible de supprimer cet enregistrement. Il est lié à des utilisateurs'); + } // Synchronisation nine2ldap $this->nine2ldapremove(); @@ -78,33 +86,36 @@ class Niveau02Subscriber implements EventSubscriberInterface public function postRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return;; + if (!$this->entity instanceof Entity) { + return; + } } - private function nine2ldap() { - if($this->ldap->isNine2Ldap()) { + private function nine2ldap() + { + if ($this->ldap->isNine2Ldap()) { // On s'assure que la structure organisationnelle est présente $this->ldap->addOrganisations(); - - // Ajout / Modification dans annuaire - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesNiveau02(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseniveau02")); - if(empty($ldapentrys)) { - $this->ldap->addNiveau02($this->entity); - } - elseif($this->ldap->ismodifyNiveau02($this->entity,$ldapentrys[0])) { - $this->ldap->modifyNiveau02($this->entity,$ldapentrys[0]["cn"]); - } - } - } - private function nine2ldapremove() { - if($this->ldap->isNine2Ldap()) { - $filter="gidnumber=".$this->entity->getId(); - $attributes=$this->ldap->listAttributesNiveau02(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseniveau02")); - if(!empty($ldapentrys)) { + // Ajout / Modification dans annuaire + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesNiveau02(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseniveau02')); + if (empty($ldapentrys)) { + $this->ldap->addNiveau02($this->entity); + } elseif ($this->ldap->ismodifyNiveau02($this->entity, $ldapentrys[0])) { + $this->ldap->modifyNiveau02($this->entity, $ldapentrys[0]['cn']); + } + } + } + + private function nine2ldapremove() + { + if ($this->ldap->isNine2Ldap()) { + $filter = 'gidnumber='.$this->entity->getId(); + $attributes = $this->ldap->listAttributesNiveau02(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseniveau02')); + if (!empty($ldapentrys)) { $this->ldap->deleteNiveau02($this->entity); } } diff --git a/src/EventListener/UserGroupSubscriber.php b/src/EventListener/UserGroupSubscriber.php index 8ecaac1..3b58b01 100644 --- a/src/EventListener/UserGroupSubscriber.php +++ b/src/EventListener/UserGroupSubscriber.php @@ -2,21 +2,20 @@ namespace App\EventListener; -use Doctrine\ORM\EntityManagerInterface; use App\Entity\UserGroup as Entity; +use App\Service\LdapService; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; -use App\Service\LdapService; - class UserGroupSubscriber implements EventSubscriberInterface { private $em; private $entity; private $ldap; - public function __construct(EntityManagerInterface $em,LdapService $ldap) + public function __construct(EntityManagerInterface $em, LdapService $ldap) { $this->em = $em; $this->ldap = $ldap; @@ -33,34 +32,39 @@ class UserGroupSubscriber implements EventSubscriberInterface public function postPersist(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; - + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); } public function preRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap $this->nine2ldapremove(); } - private function nine2ldap() { - if($this->ldap->isNine2Ldap()) { + private function nine2ldap() + { + if ($this->ldap->isNine2Ldap()) { // On s'assure que la structure organisationnelle est présente $this->ldap->addOrganisations(); - + // Ajout / Modification dans annuaire $this->ldap->addUserGroup($this->entity); } - } + } - private function nine2ldapremove() { - if($this->ldap->isNine2Ldap()) { + private function nine2ldapremove() + { + if ($this->ldap->isNine2Ldap()) { $this->ldap->delUserGroup($this->entity); } } diff --git a/src/EventListener/UserSubscriber.php b/src/EventListener/UserSubscriber.php index 7e399e7..c86d9c2 100644 --- a/src/EventListener/UserSubscriber.php +++ b/src/EventListener/UserSubscriber.php @@ -2,29 +2,27 @@ namespace App\EventListener; -use Doctrine\ORM\EntityManagerInterface; use App\Entity\User as Entity; -use App\Entity\UserGroup as UserGroup; +use App\Entity\UserGroup; +use App\Service\LdapService; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; use Ramsey\Uuid\Uuid; -use App\Service\LdapService; - class UserSubscriber implements EventSubscriberInterface { private $em; private $entity; private $ldap; - public function __construct(EntityManagerInterface $em,LdapService $ldap) + public function __construct(EntityManagerInterface $em, LdapService $ldap) { $this->em = $em; $this->ldap = $ldap; } - public function getSubscribedEvents(): array { return [ @@ -39,20 +37,21 @@ class UserSubscriber implements EventSubscriberInterface public function postPersist(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; - + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldap(); + $this->nine2ldap(); // Recherche du group tout le monde - $group=$this->em->getRepository("App\Entity\Group")->find(-1); - $usergroup=new UserGroup(); + $group = $this->em->getRepository("App\Entity\Group")->find(-1); + $usergroup = new UserGroup(); $usergroup->setUser($this->entity); $usergroup->setGroup($group); $usergroup->setApikey(Uuid::uuid4()); $usergroup->setRolegroup(0); - + $this->em->persist($usergroup); $this->em->flush(); } @@ -60,67 +59,78 @@ class UserSubscriber implements EventSubscriberInterface public function preUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } } public function postUpdate(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; - - // Synchronisation nine2ldap - $this->nine2ldap(); + if (!$this->entity instanceof Entity) { + return; + } - if (!$this->entity instanceof Entity) return; + // Synchronisation nine2ldap + $this->nine2ldap(); + + if (!$this->entity instanceof Entity) { + return; + } } public function preRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return; + if (!$this->entity instanceof Entity) { + return; + } // Synchronisation nine2ldap - $this->nine2ldapremove(); + $this->nine2ldapremove(); } public function postRemove(LifecycleEventArgs $args): void { $this->entity = $args->getObject(); - if (!$this->entity instanceof Entity) return;; + if (!$this->entity instanceof Entity) { + return; + } } - private function nine2ldap() { - if($this->ldap->isNine2Ldap()) { + private function nine2ldap() + { + if ($this->ldap->isNine2Ldap()) { // On s'assure que la structure organisationnelle est présente $this->ldap->addOrganisations(); - + // Ajout / Modification dans annuaire - $filter=str_replace("*",$this->entity->getUsername(),$this->ldap->getParameter("filteruser")); - $attributes=$this->ldap->listAttributesNiveau02(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseuser")); - if(empty($ldapentrys)) { + $filter = str_replace('*', $this->entity->getUsername(), $this->ldap->getParameter('filteruser')); + $attributes = $this->ldap->listAttributesNiveau02(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseuser')); + if (empty($ldapentrys)) { $this->ldap->addUser($this->entity); + } elseif ($this->ldap->ismodifyUser($this->entity, $ldapentrys[0])) { + $this->ldap->modifyUser($this->entity, $ldapentrys[0]['cn']); } - elseif($this->ldap->ismodifyUser($this->entity,$ldapentrys[0])) { - $this->ldap->modifyUser($this->entity,$ldapentrys[0]["cn"]); - } - + // Mise à jour des niveaux du user $this->ldap->updateNiveauUser($this->entity); } - } + } - private function nine2ldapremove() { - if($this->ldap->isNine2Ldap()) { - $filter=str_replace("*",$this->entity->getUsername(),$this->ldap->getParameter("filteruser")); - $attributes=$this->ldap->listAttributesNiveau02(); - $ldapentrys=$this->ldap->search($filter,$attributes,$this->ldap->getParameter("baseuser")); - if(!empty($ldapentrys)) { + private function nine2ldapremove() + { + if ($this->ldap->isNine2Ldap()) { + $filter = str_replace('*', $this->entity->getUsername(), $this->ldap->getParameter('filteruser')); + $attributes = $this->ldap->listAttributesNiveau02(); + $ldapentrys = $this->ldap->search($filter, $attributes, $this->ldap->getParameter('baseuser')); + if (!empty($ldapentrys)) { $this->ldap->deleteUser($this->entity); } // Mise à jour des niveaux du user en forçant le détachement - $this->ldap->updateNiveauUser($this->entity,true); + $this->ldap->updateNiveauUser($this->entity, true); } } } diff --git a/src/Form/ConfigType.php b/src/Form/ConfigType.php index e8f1bd2..562e553 100644 --- a/src/Form/ConfigType.php +++ b/src/Form/ConfigType.php @@ -1,189 +1,188 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); $builder->add('id', TextType::class, - array("label" =>"Clé", - 'disabled' => true)); + ['label' => 'Clé', + 'disabled' => true, ]); - switch($options["type"]) { - case "string": + switch ($options['type']) { + case 'string': $builder->add('value', TextType::class, - array("label" => "Valeur", - 'required' => ($options["required"]==0?false:true))); + ['label' => 'Valeur', + 'required' => (0 == $options['required'] ? false : true), ]); break; - case "boolean": - $choices=["oui" => "1","non" => "0"]; - $builder->add("value", ChoiceType::class, - array("label" =>"Valeur", - 'required' => ($options["required"]==0?false:true), - "choices" => $choices)); + case 'boolean': + $choices = ['oui' => '1', 'non' => '0']; + $builder->add('value', ChoiceType::class, + ['label' => 'Valeur', + 'required' => (0 == $options['required'] ? false : true), + 'choices' => $choices, ]); break; - case "integer": - $builder->add("value", + case 'integer': + $builder->add('value', IntegerType::class, [ - "label" =>"Valeur", - "attr" => ["min" => "0"], - "required" => ($options["required"]==0?false:true), + 'label' => 'Valeur', + 'attr' => ['min' => '0'], + 'required' => (0 == $options['required'] ? false : true), ] ); - break; + break; - case "pourcentage": - $builder->add("value", + case 'pourcentage': + $builder->add('value', IntegerType::class, [ - "label" =>"Valeur", - "attr" => ["min" => "0", "max"=>"100"], - "required" => ($options["required"]==0?false:true), + 'label' => 'Valeur', + 'attr' => ['min' => '0', 'max' => '100'], + 'required' => (0 == $options['required'] ? false : true), ] ); - break; + break; - case "font": - $choices=[ - "ABeeZee-Regular" => "ABeeZee-Regular", - "Acme-Regular" => "Acme-Regular", - "AlfaSlabOne-Regular" => "AlfaSlabOne-Regular", - "Anton-Regular" => "Anton-Regular", - "Baloo-Regular" => "Baloo-Regular", - "CarterOne-Regular" => "CarterOne-Regular", - "Chewy-Regular" => "Chewy-Regular", - "Courgette-Regular" => "Courgette-Regular", - "FredokaOne-Regular" => "FredokaOne-Regular", - "Grandstander" => "Grandstander", - "Helvetica" => "Helvetica", - "Justanotherhand-Regular" => "Justanotherhand-Regular", - "Lato-Regular" => "Lato-Regular", - "LexendDeca-Regular" => "LexendDeca-Regular", - "LuckiestGuy-Regular" => "LuckiestGuy-Regular", - "Overpass-Black" => "Overpass-Black", - "PassionOne" => "PassionOne", - "Peacesans" => "Peacesans", - "Redressed" => "Redressed", - "Righteous-Regular" => "Righteous-Regular", - "Roboto-Regular" => "Roboto-Regular", - "RubikMonoOne-Regular" => "RubikMonoOne-Regular", - "SigmarOne-Regular" => "SigmarOne-Regular", - "Signika-Regular" => "Signika-Regular", - "Teko-Bold" => "Teko-Bold", - "Theboldfont" => "Theboldfont", - "Viga-Regular" => "Viga-Regular", + case 'font': + $choices = [ + 'ABeeZee-Regular' => 'ABeeZee-Regular', + 'Acme-Regular' => 'Acme-Regular', + 'AlfaSlabOne-Regular' => 'AlfaSlabOne-Regular', + 'Anton-Regular' => 'Anton-Regular', + 'Baloo-Regular' => 'Baloo-Regular', + 'CarterOne-Regular' => 'CarterOne-Regular', + 'Chewy-Regular' => 'Chewy-Regular', + 'Courgette-Regular' => 'Courgette-Regular', + 'FredokaOne-Regular' => 'FredokaOne-Regular', + 'Grandstander' => 'Grandstander', + 'Helvetica' => 'Helvetica', + 'Justanotherhand-Regular' => 'Justanotherhand-Regular', + 'Lato-Regular' => 'Lato-Regular', + 'LexendDeca-Regular' => 'LexendDeca-Regular', + 'LuckiestGuy-Regular' => 'LuckiestGuy-Regular', + 'Overpass-Black' => 'Overpass-Black', + 'PassionOne' => 'PassionOne', + 'Peacesans' => 'Peacesans', + 'Redressed' => 'Redressed', + 'Righteous-Regular' => 'Righteous-Regular', + 'Roboto-Regular' => 'Roboto-Regular', + 'RubikMonoOne-Regular' => 'RubikMonoOne-Regular', + 'SigmarOne-Regular' => 'SigmarOne-Regular', + 'Signika-Regular' => 'Signika-Regular', + 'Teko-Bold' => 'Teko-Bold', + 'Theboldfont' => 'Theboldfont', + 'Viga-Regular' => 'Viga-Regular', ]; - $builder->add("value", ChoiceType::class, - array("label" =>"Valeur", - 'required' => ($options["required"]==0?false:true), - "choices" => $choices)); + $builder->add('value', ChoiceType::class, + ['label' => 'Valeur', + 'required' => (0 == $options['required'] ? false : true), + 'choices' => $choices, ]); break; - - case "editor": + + case 'editor': $builder->add('value', - CKEditorType::class,[ - "required" => ($options["required"]==0?false:true), - "config_name" => "full_config", - "config" => [ + CKEditorType::class, [ + 'required' => (0 == $options['required'] ? false : true), + 'config_name' => 'full_config', + 'config' => [ 'height' => 600, 'filebrowserUploadRoute' => 'app_ckeditor_upload', - ] + ], ] ); - break; + break; + case 'role': + $choices = [ + 'NO_BODY' => 'NO_BODY', + 'ROLE_USER' => 'ROLE_USER', + 'ROLE_MASTER' => 'ROLE_MASTER', + 'ROLE_MODO' => 'ROLE_MODO', + ]; - case "role": - $choices=array( - "NO_BODY" => "NO_BODY", - "ROLE_USER" => "ROLE_USER", - "ROLE_MASTER" => "ROLE_MASTER", - "ROLE_MODO" => "ROLE_MODO", - ); + $builder->add('value', ChoiceType::class, + ['label' => 'Valeur', + 'label_attr' => ['style' => 'margin-top:15px;'], + 'attr' => ['class' => 'form-control'], + 'required' => (0 == $options['required'] ? false : true), + 'choices' => $choices, ]); + break; - $builder->add("value", ChoiceType::class, - array("label" =>"Valeur", - "label_attr" => array("style" => 'margin-top:15px;'), - "attr" => array("class" => "form-control"), - 'required' => ($options["required"]==0?false:true), - "choices" => $choices)); - break; + case 'scopeannu': + $choices = [ + 'ALL' => 'ALL', + 'SAME_NIVEAU01' => 'SAME_NIVEAU01', + 'SAME_NIVEAU02' => 'SAME_NIVEAU02', + ]; + $builder->add('value', ChoiceType::class, + ['label' => 'Valeur', + 'label_attr' => ['style' => 'margin-top:15px;'], + 'attr' => ['class' => 'form-control'], + 'required' => (0 == $options['required'] ? false : true), + 'choices' => $choices, ]); + break; - case "scopeannu": - $choices=array( - "ALL" => "ALL", - "SAME_NIVEAU01" => "SAME_NIVEAU01", - "SAME_NIVEAU02" => "SAME_NIVEAU02", - ); + case 'logo': + $builder->add('value', HiddenType::class); + break; - $builder->add("value", ChoiceType::class, - array("label" =>"Valeur", - "label_attr" => array("style" => 'margin-top:15px;'), - "attr" => array("class" => "form-control"), - 'required' => ($options["required"]==0?false:true), - "choices" => $choices)); - break; + case 'header': + $builder->add('value', HiddenType::class); + break; - case "logo": - $builder->add('value',HiddenType::class); - break; + case 'image': + $builder->add('value', HiddenType::class); + break; - case "header": - $builder->add('value',HiddenType::class); - break; - - case "image": - $builder->add('value',HiddenType::class); - break; - - case "color": + case 'color': $builder->add('value', TextType::class, - array("label" => "Valeur", - "attr" => ["class" => "pick-a-color"], - 'required' => ($options["required"]==0?false:true))); - break; + ['label' => 'Valeur', + 'attr' => ['class' => 'pick-a-color'], + 'required' => (0 == $options['required'] ? false : true), ]); + break; } $builder->add('help', TextareaType::class, - array("label" =>"Aide", - "attr" => ["style" => "height: 200px;"], - 'required' => false, - 'disabled' => true)); + ['label' => 'Aide', + 'attr' => ['style' => 'height: 200px;'], + 'required' => false, + 'disabled' => true, ]); } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( - 'data_class' => 'App\Entity\Config', - 'mode' => "string", - 'id' => "string", - 'type' => "string", - 'required' => "string", - )); + $resolver->setDefaults([ + 'data_class' => 'App\Entity\Config', + 'mode' => 'string', + 'id' => 'string', + 'type' => 'string', + 'required' => 'string', + ]); } } diff --git a/src/Form/CronType.php b/src/Form/CronType.php index 6429767..ff2a645 100644 --- a/src/Form/CronType.php +++ b/src/Form/CronType.php @@ -3,64 +3,57 @@ namespace App\Form; use Symfony\Component\Form\AbstractType; -use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Component\OptionsResolver\OptionsResolver; -use Symfony\Component\Form\Extension\Core\Type\TextType; -use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\DateTimeType; +use Symfony\Component\Form\Extension\Core\Type\IntegerType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class CronType extends AbstractType { - /** - * @param FormBuilderInterface $builder - * @param array $options - */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('submit', SubmitType::class, [ - "label" => "Valider", - "attr" => array("class" => "btn btn-success") + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ]) - + ->add('command', TextType::class, [ - 'label' => 'Commande', - "disabled" => true, + 'label' => 'Commande', + 'disabled' => true, ]) ->add('jsonargument', TextType::class, [ - 'label' => 'Argument Commande au format json', - "disabled" => true, - ]) + 'label' => 'Argument Commande au format json', + 'disabled' => true, + ]) ->add('statut', ChoiceType::class, [ - 'label' => "Statut", - 'choices' => array("Désactivé" => -1,"KO" => "0","OK" => "1") + 'label' => 'Statut', + 'choices' => ['Désactivé' => -1, 'KO' => '0', 'OK' => '1'], ]) ->add('repeatinterval', IntegerType::class, [ - 'label' => "Interval en seconde entre deux éxécution" + 'label' => 'Interval en seconde entre deux éxécution', ]) - + ->add('nextexecdate', DatetimeType::class, [ - 'label' => "Prochaine exécution", + 'label' => 'Prochaine exécution', 'widget' => 'single_text', - "html5"=>true, - 'input_format' => "d/m/Y H:i" + 'html5' => true, + 'input_format' => 'd/m/Y H:i', ]) - ; + ; } - /** - * @param OptionsResolver $resolver - */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => 'App\Entity\Cron', - 'mode' => 'string' + 'mode' => 'string', ]); } } diff --git a/src/Form/GroupType.php b/src/Form/GroupType.php index a86caf5..ecead96 100644 --- a/src/Form/GroupType.php +++ b/src/Form/GroupType.php @@ -1,142 +1,135 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); - if($options["access"]=="admin") { + if ('admin' == $options['access']) { $builder->add('isworkgroup', - ChoiceType::class,[ - "label" =>"Groupe de Travail", - "choices" => ["non" => "0","oui" => "1"], - ] - ); - } - - if($options["access"]=="admin" || $options["mode"] == "update") { - $builder->add('owner', - Select2EntityType::class, [ - "label" => "Propriétaire", - "required" => false, - "multiple" => false, - "remote_route" => 'app_'.$options["access"].'_user_selectlist', - "class" => 'App\Entity\User', - "primary_key" => 'id', - "text_property" => 'username', - "minimum_input_length" => 2, - "page_limit" => 10, - "allow_clear" => true, - "delay" => 250, - "cache" => false, - "cache_timeout" => 60000, // if 'cache' is true - "language" => 'fr', - "placeholder" => 'Selectionner un propriétaire', + ChoiceType::class, [ + 'label' => 'Groupe de Travail', + 'choices' => ['non' => '0', 'oui' => '1'], ] ); } - if($options["access"]=="admin") { - $builder->add('email', - EmailType::class, [ - "label" => "Mail", - "required" => false, + if ('admin' == $options['access'] || 'update' == $options['mode']) { + $builder->add('owner', + Select2EntityType::class, [ + 'label' => 'Propriétaire', + 'required' => false, + 'multiple' => false, + 'remote_route' => 'app_'.$options['access'].'_user_selectlist', + 'class' => 'App\Entity\User', + 'primary_key' => 'id', + 'text_property' => 'username', + 'minimum_input_length' => 2, + 'page_limit' => 10, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, // if 'cache' is true + 'language' => 'fr', + 'placeholder' => 'Selectionner un propriétaire', ] ); - } - - $builder->add("description", + } + + if ('admin' == $options['access']) { + $builder->add('email', + EmailType::class, [ + 'label' => 'Mail', + 'required' => false, + ] + ); + } + + $builder->add('description', TextareaType::class, [ - "label" => 'Description', - "required" => false, - "attr" => ["rows" => '4'], + 'label' => 'Description', + 'required' => false, + 'attr' => ['rows' => '4'], ] - ); + ); $builder->add('label', TextType::class, [ - "label" =>"Label", + 'label' => 'Label', ] - ); - - $builder->add("isopen", - ChoiceType::class,array( - "label" =>"Groupe Ouvert (inscription possible par les utilisateurs)", - "choices" => ["non" => "0","oui" => "1"], - ) - ); + ); + + $builder->add('isopen', + ChoiceType::class, [ + 'label' => 'Groupe Ouvert (inscription possible par les utilisateurs)', + 'choices' => ['non' => '0', 'oui' => '1'], + ] + ); // Si masteridentity = LDAP alors on demande le filtre des utilisateurs qui appartiennent à ce groupe - if($options["appMasteridentity"]=="LDAP"&&$options["access"]=="admin") - { - $builder->add("fgassoc", - ChoiceType::class,[ - "mapped" => false, - "label" => "Groupe associé à l'annuaire ?", - "choices" => ["non" => "0","oui" => "1"], + if ('LDAP' == $options['appMasteridentity'] && 'admin' == $options['access']) { + $builder->add('fgassoc', + ChoiceType::class, [ + 'mapped' => false, + 'label' => "Groupe associé à l'annuaire ?", + 'choices' => ['non' => '0', 'oui' => '1'], ] - ); + ); $builder->add('ldapfilter', TextType::class, [ - "label" => "Filtre LDAP des utilisateurs", - "label_attr" => ["id" => "label_group_ldapfilter"], - "required" => false, + 'label' => 'Filtre LDAP des utilisateurs', + 'label_attr' => ['id' => 'label_group_ldapfilter'], + 'required' => false, ] - ); - } + ); + } - if($options["appMasteridentity"]=="SSO"&&$options["access"]=="admin") - { - $builder->add("fgassoc", - ChoiceType::class,[ - "mapped" => false, - "label" => "Groupe associé à des attributs SSO ?", - "choices" => ["non" => "0","oui" => "1"], + if ('SSO' == $options['appMasteridentity'] && 'admin' == $options['access']) { + $builder->add('fgassoc', + ChoiceType::class, [ + 'mapped' => false, + 'label' => 'Groupe associé à des attributs SSO ?', + 'choices' => ['non' => '0', 'oui' => '1'], ] - ); + ); $builder->add('attributes', TextareaType::class, [ - "label" => "Attributs SSO des utilisateurs", - "label_attr" => ["id" => "label_group_attributes"], - "required" => false, - "attr" => ["rows" => 10] + 'label' => 'Attributs SSO des utilisateurs', + 'label_attr' => ['id' => 'label_group_attributes'], + 'required' => false, + 'attr' => ['rows' => 10], ] - ); + ); } } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\Group', - 'mode' => "string", - 'access' => "string", - 'appMasteridentity' => "string", - )); + 'mode' => 'string', + 'access' => 'string', + 'appMasteridentity' => 'string', + ]); } } diff --git a/src/Form/LoginType.php b/src/Form/LoginType.php index 9467ad8..217ebb8 100644 --- a/src/Form/LoginType.php +++ b/src/Form/LoginType.php @@ -1,37 +1,37 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success mt-4 float-end"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success mt-4 float-end'], ] ); $builder->add('username', - TextType::class,[ - "label" =>"Login", - "attr" => ["autocomplete" => "new-password"] + TextType::class, [ + 'label' => 'Login', + 'attr' => ['autocomplete' => 'new-password'], ] ); $builder->add('password', PasswordType::class, [ - "always_empty" => true, - "label" => "Mot de Passe", - "attr" => ["autocomplete" => "new-password"] + 'always_empty' => true, + 'label' => 'Mot de Passe', + 'attr' => ['autocomplete' => 'new-password'], ] ); - } } diff --git a/src/Form/Niveau01Type.php b/src/Form/Niveau01Type.php index 0b27ddb..fff6a71 100644 --- a/src/Form/Niveau01Type.php +++ b/src/Form/Niveau01Type.php @@ -1,81 +1,79 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); $builder->add('label', TextType::class, [ - "label" =>"Label", + 'label' => 'Label', ] ); // Si masteridentity = LDAP alors on demande le filtre des utilisateurs qui appartiennent à ce groupe - if($options["appMasteridentity"]=="LDAP"||$options["appSynchro"]=="LDAP2NINE") - { - $builder->add("fgassocldap", - ChoiceType::class,[ - "mapped" => false, - "label" => $options["appNiveau01label"]." associé à l'annuaire ?", - "choices" => ["non" => "0","oui" => "1"], + if ('LDAP' == $options['appMasteridentity'] || 'LDAP2NINE' == $options['appSynchro']) { + $builder->add('fgassocldap', + ChoiceType::class, [ + 'mapped' => false, + 'label' => $options['appNiveau01label']." associé à l'annuaire ?", + 'choices' => ['non' => '0', 'oui' => '1'], ] - ); + ); $builder->add('ldapfilter', TextType::class, [ - "label" => "Filtre LDAP du ".$options["appNiveau01label"], - "label_attr" => ["id" => "label_group_ldapfilter"], - "required" => false, + 'label' => 'Filtre LDAP du '.$options['appNiveau01label'], + 'label_attr' => ['id' => 'label_group_ldapfilter'], + 'required' => false, ] - ); - } + ); + } - if($options["appMasteridentity"]=="SSO") - { - $builder->add("fgassocsso", - ChoiceType::class,[ - "mapped" => false, - "label" => $options["appNiveau01label"]." associé à des attributs SSO ?", - "choices" => ["non" => "0","oui" => "1"], + if ('SSO' == $options['appMasteridentity']) { + $builder->add('fgassocsso', + ChoiceType::class, [ + 'mapped' => false, + 'label' => $options['appNiveau01label'].' associé à des attributs SSO ?', + 'choices' => ['non' => '0', 'oui' => '1'], ] - ); + ); $builder->add('attributes', TextareaType::class, [ - "label" => "Attributs SSO du ".$options["appNiveau01label"], - "label_attr" => ["id" => "label_group_attributes"], - "required" => false, - "attr" => ["rows" => 10] + 'label' => 'Attributs SSO du '.$options['appNiveau01label'], + 'label_attr' => ['id' => 'label_group_attributes'], + 'required' => false, + 'attr' => ['rows' => 10], ] - ); - } - + ); + } } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\Niveau01', - 'mode' => "string", - 'appMasteridentity' => "string", - "appSynchro" => "string", - 'appNiveau01label' => "string" - )); + 'mode' => 'string', + 'appMasteridentity' => 'string', + 'appSynchro' => 'string', + 'appNiveau01label' => 'string', + ]); } } diff --git a/src/Form/Niveau02Type.php b/src/Form/Niveau02Type.php index fcd904c..548cf58 100644 --- a/src/Form/Niveau02Type.php +++ b/src/Form/Niveau02Type.php @@ -1,70 +1,71 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); - $access=$options["access"]; - $userid=$options["userid"]; + $access = $options['access']; + $userid = $options['userid']; $builder->add('niveau01', EntityType::class, [ - "class" => "App\Entity\Niveau01", - "label" => $options["appNiveau01label"], - "placeholder" => "== Choisir ".$options["appNiveau01label"]." ==", - "choice_label" => "label", - "disabled" => ($options["mode"]!="submit"), - "query_builder"=> function (EntityRepository $er) use($access,$userid) { - switch($access) { - case "admin": - return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC'); - break; + 'class' => "App\Entity\Niveau01", + 'label' => $options['appNiveau01label'], + 'placeholder' => '== Choisir '.$options['appNiveau01label'].' ==', + 'choice_label' => 'label', + 'disabled' => ('submit' != $options['mode']), + 'query_builder' => function (EntityRepository $er) use ($access, $userid) { + switch ($access) { + case 'admin': + return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label', 'ASC'); + break; - case "modo": - $result=$er->createQueryBuilder("table")->innerJoin("App:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01")->orderBy('table.label','ASC'); - $result->andWhere("usermodo.user = :user"); + case 'modo': + $result = $er->createQueryBuilder('table')->innerJoin('App:UserModo', 'usermodo', Join::WITH, 'table.id = usermodo.niveau01')->orderBy('table.label', 'ASC'); + $result->andWhere('usermodo.user = :user'); $result->setParameter('user', $userid); + return $result; - break; + break; } - }, + }, ] ); $builder->add('label', TextType::class, [ - "label" =>"Label", + 'label' => 'Label', ] - ); + ); } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\Niveau02', - 'mode' => "string", - 'access' => "string", - 'userid' => "string", - 'appMasteridentity' => "string", - 'appNiveau01label' => "string", - 'appNiveau02label' => "string" - )); + 'mode' => 'string', + 'access' => 'string', + 'userid' => 'string', + 'appMasteridentity' => 'string', + 'appNiveau01label' => 'string', + 'appNiveau02label' => 'string', + ]); } } diff --git a/src/Form/RegistrationType.php b/src/Form/RegistrationType.php index 079b0ce..adda64b 100644 --- a/src/Form/RegistrationType.php +++ b/src/Form/RegistrationType.php @@ -1,212 +1,210 @@ add('submit', - SubmitType::class,[ - "label" => ($options["mode"]=="submit"?"Confirmer":"Enregistrer et envoyer le mail de confirmation"), - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => ('submit' == $options['mode'] ? 'Confirmer' : 'Enregistrer et envoyer le mail de confirmation'), + 'attr' => ['class' => 'btn btn-success'], ] ); - if($options["mode"]=="update") { + if ('update' == $options['mode']) { $builder->add('save', - SubmitType::class, array( - "label" => "Enregistrer sans envoyer le mail de confirmation", - "attr" => array("class" => "btn btn-success") - ) + SubmitType::class, [ + 'label' => 'Enregistrer sans envoyer le mail de confirmation', + 'attr' => ['class' => 'btn btn-success'], + ] ); $builder->add('note', - TextareaType::class, array( - "label" => "Notes Administrateur", - "required" => false, - "disabled" => ($options["mode"]=="delete"?true:false), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 130px") - ) - ); + TextareaType::class, [ + 'label' => 'Notes Administrateur', + 'required' => false, + 'disabled' => ('delete' == $options['mode'] ? true : false), + 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px; height: 130px'], + ] + ); } $builder->add('username', - TextType::class,[ - "label" =>"Login", - "disabled" => ($options["mode"]!="submit"), - "attr" => ["autocomplete" => "new-password"] + TextType::class, [ + 'label' => 'Login', + 'disabled' => ('submit' != $options['mode']), + 'attr' => ['autocomplete' => 'new-password'], ] ); $builder->add('lastname', TextType::class, [ - "label" =>"Nom", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), + 'label' => 'Nom', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), ] ); $builder->add('firstname', TextType::class, [ - "label" =>"Prénom", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), + 'label' => 'Prénom', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), ] ); $builder->add('email', - EmailType::class, array( - "label" =>"Mail", - "disabled" => ($options["appMasteridentity"]!="SQL")&&$options["mode"]!="submit", - ) + EmailType::class, [ + 'label' => 'Mail', + 'disabled' => ('SQL' != $options['appMasteridentity']) && 'submit' != $options['mode'], + ] ); - $access=$options["access"]; - $userid=$options["userid"]; + $access = $options['access']; + $userid = $options['userid']; $builder->add('niveau01', EntityType::class, [ - "class" => "App\Entity\Niveau01", - "label" => $options["appNiveau01label"], - "placeholder" => "== Choisir ".$options["appNiveau01label"]." ==", - "choice_label" => "label", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), - "query_builder"=> function (EntityRepository $er) use($access,$userid) { - switch($access) { - case "admin": - return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC'); - break; + 'class' => "App\Entity\Niveau01", + 'label' => $options['appNiveau01label'], + 'placeholder' => '== Choisir '.$options['appNiveau01label'].' ==', + 'choice_label' => 'label', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), + 'query_builder' => function (EntityRepository $er) use ($access, $userid) { + switch ($access) { + case 'admin': + return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label', 'ASC'); + break; - case "modo": - $result=$er->createQueryBuilder("table")->innerJoin("App:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01")->orderBy('table.label','ASC'); - $result->andWhere("usermodo.user = :user"); + case 'modo': + $result = $er->createQueryBuilder('table')->innerJoin('App:UserModo', 'usermodo', Join::WITH, 'table.id = usermodo.niveau01')->orderBy('table.label', 'ASC'); + $result->andWhere('usermodo.user = :user'); $result->setParameter('user', $userid); + return $result; - break; + break; default: - return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC'); - break; + return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label', 'ASC'); + break; } - }, + }, ] ); $builder->add('niveau02', Select2EntityType::class, [ - "label" => $options["appNiveau02label"], - "required" => false, - "remote_route" => "app_niveau02_selectlist", - "class" => "App\Entity\Niveau02", - //"req_params" => ["niveau01" => "parent.children[niveau01]"], - "primary_key" => "id", - "text_property" => "label", - "minimum_input_length" => 0, - "page_limit" => 10, - "allow_clear" => true, - "delay" => 250, - "cache" => false, - "cache_timeout" => 60000, - "language" => "fr", - "placeholder" => "== Choisir ".$options["appNiveau02label"]." ==", + 'label' => $options['appNiveau02label'], + 'required' => false, + 'remote_route' => 'app_niveau02_selectlist', + 'class' => "App\Entity\Niveau02", + // "req_params" => ["niveau01" => "parent.children[niveau01]"], + 'primary_key' => 'id', + 'text_property' => 'label', + 'minimum_input_length' => 0, + 'page_limit' => 10, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => '== Choisir '.$options['appNiveau02label'].' ==', ] ); - # Password - if($options["mode"]=="submit") { + // Password + if ('submit' == $options['mode']) { $builder->add('password', - RepeatedType::class, array( - "type" => PasswordType::class, - "required" => ($options["mode"]=="submit"?true:false), - "first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")), - "second_options" => array('label' => 'Confirmer Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")), - "invalid_message" => "Mot de passe non valide" - ) + RepeatedType::class, [ + 'type' => PasswordType::class, + 'required' => ('submit' == $options['mode'] ? true : false), + 'first_options' => ['label' => 'Mot de Passe', 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px', 'autocomplete' => 'new-password']], + 'second_options' => ['label' => 'Confirmer Mot de Passe', 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px']], + 'invalid_message' => 'Mot de passe non valide', + ] ); - $builder->add('passwordplain',PasswordType::class,["mapped"=>false,"required"=>false]); - + $builder->add('passwordplain', PasswordType::class, ['mapped' => false, 'required' => false]); + $builder->add('captcha', - CaptchaType::class,array( - "width" => 200, - "height" => 50, - "length" => 6, - ) + CaptchaType::class, [ + 'width' => 200, + 'height' => 50, + 'length' => 6, + ] ); - } + } - - $choices=array("oui" => "1","non" => "0"); - $builder->add("isvisible", - ChoiceType::class,array( - "label" =>"Visible", - "choices" => $choices - ) + $choices = ['oui' => '1', 'non' => '0']; + $builder->add('isvisible', + ChoiceType::class, [ + 'label' => 'Visible', + 'choices' => $choices, + ] ); $builder->add('postaladress', TextareaType::class, [ - "label" => "Adresse", - "required" => false, - "attr" => ["style" => "height:90px"] + 'label' => 'Adresse', + 'required' => false, + 'attr' => ['style' => 'height:90px'], ] - ); + ); $builder->add('telephonenumber', TextType::class, [ - "label" => "Téléphone", - "required" => false, + 'label' => 'Téléphone', + 'required' => false, ] - ); + ); $builder->add('job', TextType::class, [ - "label" => "Métier", - "required" => false, + 'label' => 'Métier', + 'required' => false, ] - ); + ); $builder->add('position', TextType::class, [ - "label" => "Fonction", - "required" => false, + 'label' => 'Fonction', + 'required' => false, ] - ); - + ); + $builder->add('motivation', TextareaType::class, [ - "label" => "Motivation", - "required" => false, - "attr" => ["style" => "height: 90px"], + 'label' => 'Motivation', + 'required' => false, + 'attr' => ['style' => 'height: 90px'], ] - ); + ); } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\Registration', - 'mode' => "string", - 'access' => "string", - 'userid' => "string", - 'appMasteridentity' => "string", - 'appNiveau01label' => "string", - 'appNiveau02label' => "string", - )); + 'mode' => 'string', + 'access' => 'string', + 'userid' => 'string', + 'appMasteridentity' => 'string', + 'appNiveau01label' => 'string', + 'appNiveau02label' => 'string', + ]); } } diff --git a/src/Form/ResetpwdType.php b/src/Form/ResetpwdType.php index 1f46953..e8d3728 100644 --- a/src/Form/ResetpwdType.php +++ b/src/Form/ResetpwdType.php @@ -1,55 +1,54 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); - if($options["mode"]=="resetpwd01") { + if ('resetpwd01' == $options['mode']) { $builder->add('email', - TextType::class, array( - "label" =>"Votre Mail", - "disabled" => ($options["mode"]=="delete"?true:false), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px") - ) - ); - } - else { + TextType::class, [ + 'label' => 'Votre Mail', + 'disabled' => ('delete' == $options['mode'] ? true : false), + 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px'], + ] + ); + } else { $builder->add('password', - RepeatedType::class, array( - "type" => PasswordType::class, - "required" => ($options["mode"]=="submit"?true:false), - "options" => array("always_empty" => true), - "first_options" => array("label" => "Votre nouveau Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px")), - "second_options" => array('label' => 'Confirmer votre nouveau Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")), - "invalid_message" => "Mot de passe non valide" - ) - ); - $builder->add('passwordplain',PasswordType::class,["mapped"=>false,"required"=>false]); + RepeatedType::class, [ + 'type' => PasswordType::class, + 'required' => ('submit' == $options['mode'] ? true : false), + 'options' => ['always_empty' => true], + 'first_options' => ['label' => 'Votre nouveau Mot de Passe', 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px']], + 'second_options' => ['label' => 'Confirmer votre nouveau Mot de Passe', 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px']], + 'invalid_message' => 'Mot de passe non valide', + ] + ); + $builder->add('passwordplain', PasswordType::class, ['mapped' => false, 'required' => false]); } } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\User', - 'mode' => "string" - )); + 'mode' => 'string', + ]); } } diff --git a/src/Form/UserType.php b/src/Form/UserType.php index fb789e2..3b32ffa 100644 --- a/src/Form/UserType.php +++ b/src/Form/UserType.php @@ -1,232 +1,228 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); $builder->add('username', - TextType::class,[ - "label" =>"Login", - "disabled" => ($options["mode"]!="submit"), - "attr" => ["autocomplete" => "new-password"] + TextType::class, [ + 'label' => 'Login', + 'disabled' => ('submit' != $options['mode']), + 'attr' => ['autocomplete' => 'new-password'], ] ); - if($options["appMasteridentity"]=="SQL"||$options["mode"]=="submit") { + if ('SQL' == $options['appMasteridentity'] || 'submit' == $options['mode']) { $builder->add('password', RepeatedType::class, [ - "type" => PasswordType::class, - "required" => ($options["mode"]=="submit"), - "options" => ["always_empty" => true], - "first_options" => ["label" => "Mot de Passe","attr" => ["autocomplete" => "new-password"]], - "second_options" => ["label" => 'Confirmer Mot de Passe'], - "invalid_message" => "Mot de passe non valide" + 'type' => PasswordType::class, + 'required' => ('submit' == $options['mode']), + 'options' => ['always_empty' => true], + 'first_options' => ['label' => 'Mot de Passe', 'attr' => ['autocomplete' => 'new-password']], + 'second_options' => ['label' => 'Confirmer Mot de Passe'], + 'invalid_message' => 'Mot de passe non valide', ] ); - $builder->add('passwordplain',PasswordType::class,["mapped"=>false,"required"=>false]); + $builder->add('passwordplain', PasswordType::class, ['mapped' => false, 'required' => false]); } - + $builder->add('lastname', TextType::class, [ - "label" =>"Nom", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), + 'label' => 'Nom', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), ] ); $builder->add('firstname', TextType::class, [ - "label" =>"Prénom", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), + 'label' => 'Prénom', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), ] ); $builder->add('email', - EmailType::class, array( - "label" =>"Mail", - "disabled" => ($options["appMasteridentity"]!="SQL")&&$options["mode"]!="submit", - ) + EmailType::class, [ + 'label' => 'Mail', + 'disabled' => ('SQL' != $options['appMasteridentity']) && 'submit' != $options['mode'], + ] ); - $access=$options["access"]; - $userid=$options["userid"]; + $access = $options['access']; + $userid = $options['userid']; $builder->add('niveau01', EntityType::class, [ - "class" => "App\Entity\Niveau01", - "label" => $options["appNiveau01label"], - "placeholder" => "== Choisir ".$options["appNiveau01label"]." ==", - "choice_label" => "label", - "disabled" => ($options["appMasteridentity"]!="SQL"&&$options["mode"]!="submit"), - "query_builder"=> function (EntityRepository $er) use($access,$userid) { - switch($access) { - case "admin": - return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC'); - break; + 'class' => "App\Entity\Niveau01", + 'label' => $options['appNiveau01label'], + 'placeholder' => '== Choisir '.$options['appNiveau01label'].' ==', + 'choice_label' => 'label', + 'disabled' => ('SQL' != $options['appMasteridentity'] && 'submit' != $options['mode']), + 'query_builder' => function (EntityRepository $er) use ($access, $userid) { + switch ($access) { + case 'admin': + return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label', 'ASC'); + break; - case "modo": - $result=$er->createQueryBuilder("table")->innerJoin("App:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01")->orderBy('table.label','ASC'); - $result->andWhere("usermodo.user = :user"); + case 'modo': + $result = $er->createQueryBuilder('table')->innerJoin('App:UserModo', 'usermodo', Join::WITH, 'table.id = usermodo.niveau01')->orderBy('table.label', 'ASC'); + $result->andWhere('usermodo.user = :user'); $result->setParameter('user', $userid); + return $result; - break; + break; default: - return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC'); - break; + return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label', 'ASC'); + break; } - }, + }, ] ); $builder->add('niveau02', Select2EntityType::class, [ - "label" => $options["appNiveau02label"], - "required" => false, - "remote_route" => "app_niveau02_selectlist", - "class" => "App\Entity\Niveau02", - //"req_params" => ["niveau01" => "parent.children[niveau01]"], - "primary_key" => "id", - "text_property" => "label", - "minimum_input_length" => 0, - "page_limit" => 10, - "allow_clear" => true, - "delay" => 250, - "cache" => false, - "cache_timeout" => 60000, - "language" => "fr", - "placeholder" => "== Choisir ".$options["appNiveau02label"]." ==", + 'label' => $options['appNiveau02label'], + 'required' => false, + 'remote_route' => 'app_niveau02_selectlist', + 'class' => "App\Entity\Niveau02", + // "req_params" => ["niveau01" => "parent.children[niveau01]"], + 'primary_key' => 'id', + 'text_property' => 'label', + 'minimum_input_length' => 0, + 'page_limit' => 10, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => '== Choisir '.$options['appNiveau02label'].' ==', ] - ); + ); - $choices=array("oui" => "1","non" => "0"); - $builder->add("isvisible", - ChoiceType::class,array( - "label" =>"Visible", - "choices" => $choices - ) + $choices = ['oui' => '1', 'non' => '0']; + $builder->add('isvisible', + ChoiceType::class, [ + 'label' => 'Visible', + 'choices' => $choices, + ] ); $builder->add('postaladress', TextareaType::class, [ - "label" => "Adresse", - "required" => false, - "attr" => ["style" => "height:90px"] + 'label' => 'Adresse', + 'required' => false, + 'attr' => ['style' => 'height:90px'], ] - ); + ); $builder->add('telephonenumber', TextType::class, [ - "label" => "Téléphone", - "required" => false, + 'label' => 'Téléphone', + 'required' => false, ] - ); + ); $builder->add('job', TextType::class, [ - "label" => "Métier", - "required" => false, + 'label' => 'Métier', + 'required' => false, ] - ); + ); $builder->add('position', TextType::class, [ - "label" => "Fonction", - "required" => false, + 'label' => 'Fonction', + 'required' => false, ] - ); + ); - $builder->add('visitedate', DateTimeType::class, [ - "label" => "Date de dernière visite", - "disabled" => true, - "required" => false, - "widget" => 'single_text', + 'label' => 'Date de dernière visite', + 'disabled' => true, + 'required' => false, + 'widget' => 'single_text', ] ); $builder->add('visitecpt', IntegerType::class, [ - "label" => "Nombre de visites", - "disabled" => true, - "required" => false, + 'label' => 'Nombre de visites', + 'disabled' => true, + 'required' => false, ] ); - + $builder->add('motivation', TextareaType::class, [ - "label" => "Motivation", - "required" => false, - "attr" => ["style" => "height: 90px"], + 'label' => 'Motivation', + 'required' => false, + 'attr' => ['style' => 'height: 90px'], ] - ); + ); - $builder->add('avatar',HiddenType::class); - $builder->add('linkgroups',HiddenType::class, array("mapped" => false)); - $builder->add('linkmodos',HiddenType::class, array("mapped" => false)); - - if($options["access"]=="admin" || $options["access"]=="modo") { - $choices=array("ROLE_ADMIN" => "ROLE_ADMIN","ROLE_MODO" => "ROLE_MODO","ROLE_MASTER" => "ROLE_MASTER","ROLE_USER" => "ROLE_USER"); - $builder->add("roles", - ChoiceType::class,[ - "label" =>"Rôle", - "required" => true, - "multiple" => true, - "expanded" => true, - "choices" => $choices + $builder->add('avatar', HiddenType::class); + $builder->add('linkgroups', HiddenType::class, ['mapped' => false]); + $builder->add('linkmodos', HiddenType::class, ['mapped' => false]); + + if ('admin' == $options['access'] || 'modo' == $options['access']) { + $choices = ['ROLE_ADMIN' => 'ROLE_ADMIN', 'ROLE_MODO' => 'ROLE_MODO', 'ROLE_MASTER' => 'ROLE_MASTER', 'ROLE_USER' => 'ROLE_USER']; + $builder->add('roles', + ChoiceType::class, [ + 'label' => 'Rôle', + 'required' => true, + 'multiple' => true, + 'expanded' => true, + 'choices' => $choices, ] ); $builder->add('note', TextareaType::class, [ - "label" => "Notes Administrateur", - "required" => false, - "attr" => ["style" => "height: 130px"] + 'label' => 'Notes Administrateur', + 'required' => false, + 'attr' => ['style' => 'height: 130px'], ] - ); + ); } - } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\User', - 'mode' => "string", - 'access' => "string", - 'userid' => "string", - 'appMasteridentity' => "string", - 'appNiveau01label' => "string", - 'appNiveau02label' => "string", - )); + 'mode' => 'string', + 'access' => 'string', + 'userid' => 'string', + 'appMasteridentity' => 'string', + 'appNiveau01label' => 'string', + 'appNiveau02label' => 'string', + ]); } } - diff --git a/src/Form/WhitelistType.php b/src/Form/WhitelistType.php index 7ecc1af..2fdfe05 100644 --- a/src/Form/WhitelistType.php +++ b/src/Form/WhitelistType.php @@ -1,35 +1,36 @@ add('submit', - SubmitType::class,[ - "label" => "Valider", - "attr" => ["class" => "btn btn-success"], + SubmitType::class, [ + 'label' => 'Valider', + 'attr' => ['class' => 'btn btn-success'], ] ); $builder->add('label', TextType::class, [ - "label" =>"Label", + 'label' => 'Label', ] ); } public function configureOptions(OptionsResolver $resolver) { - $resolver->setDefaults(array( + $resolver->setDefaults([ 'data_class' => 'App\Entity\Whitelist', - 'mode' => "string" - )); + 'mode' => 'string', + ]); } } diff --git a/src/Repository/CronRepository.php b/src/Repository/CronRepository.php index 4b57177..a71c589 100644 --- a/src/Repository/CronRepository.php +++ b/src/Repository/CronRepository.php @@ -30,7 +30,7 @@ class CronRepository extends ServiceEntityRepository $this->getEntityManager()->flush(); } } - + public function toExec() { // Les commandes à executer @@ -38,13 +38,12 @@ class CronRepository extends ServiceEntityRepository // = statut = 2 (OK) et derniere execution + interval > now et nombre d'appel = 0 // = statut = 3 (KO) et derniere execution + interval > now et nombre d'appel = 0 // = statut = 3 (KO) et nombre d'execution < nombre d'appel - - $now=new \DateTime(); + $now = new \DateTime(); $qb = $this->createQueryBuilder('cron') ->Where('(cron.statut=0 OR cron.statut=1) AND cron.nextexecdate<:now'); - return $qb->getQuery()->setParameter('now',$now->format("Y-m-d H:i:s"))->getResult(); + return $qb->getQuery()->setParameter('now', $now->format('Y-m-d H:i:s'))->getResult(); } } diff --git a/src/Repository/GroupRepository.php b/src/Repository/GroupRepository.php index 82da0ba..1a4590d 100644 --- a/src/Repository/GroupRepository.php +++ b/src/Repository/GroupRepository.php @@ -3,10 +3,10 @@ namespace App\Repository; use App\Entity\Group; -use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Persistence\ManagerRegistry; -use Doctrine\Common\Collections\ArrayCollection; use App\Entity\UserGroup; +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Persistence\ManagerRegistry; use Ramsey\Uuid\Uuid; class GroupRepository extends ServiceEntityRepository @@ -35,29 +35,30 @@ class GroupRepository extends ServiceEntityRepository } /* Déterminer les groupes d'un user SSO en fonction de ses attributs */ - public function calculateSSOGroup($user,$attruser) + public function calculateSSOGroup($user, $attruser) { $groups = $this->_em->getRepository('App\Entity\Group')->findAll(); - $retgroups= new ArrayCollection(); - foreach($groups as $group) { - if($group->getAttributes()) { - $attgroup=json_decode($group->getAttributes(),true); + $retgroups = new ArrayCollection(); + foreach ($groups as $group) { + if ($group->getAttributes()) { + $attgroup = json_decode($group->getAttributes(), true); - foreach($attgroup as $key => $value) { - if(array_key_exists($key,$attruser)) { - if(is_array($attruser[$key])) { - foreach($attruser[$key] as $val) { - if($value=="*") + foreach ($attgroup as $key => $value) { + if (array_key_exists($key, $attruser)) { + if (is_array($attruser[$key])) { + foreach ($attruser[$key] as $val) { + if ('*' == $value) { $retgroups->add($group); - elseif($val==$value) + } elseif ($val == $value) { $retgroups->add($group); + } } - } - else { - if($value=="*") + } else { + if ('*' == $value) { $retgroups->add($group); - elseif($value==$attruser[$key]) + } elseif ($value == $attruser[$key]) { $retgroups->add($group); + } } } } @@ -65,34 +66,34 @@ class GroupRepository extends ServiceEntityRepository } // Pour chaque groupe de l'utilisateur - $usergroups=$user->getGroups(); + $usergroups = $user->getGroups(); // On le détache des groupes auxquelles il n'appartient plus - if($usergroups) { - foreach($usergroups as $usergroup) { - if($usergroup->getGroup()->getAttributes()!="") { - if(!$retgroups->contains($usergroup->getGroup())) { + if ($usergroups) { + foreach ($usergroups as $usergroup) { + if ('' != $usergroup->getGroup()->getAttributes()) { + if (!$retgroups->contains($usergroup->getGroup())) { $user->removeGroup($usergroup); } } } } - + // On attache le user aux groupes - foreach($retgroups as $retgroup) { - $usergroup=$this->_em->getRepository('App\Entity\UserGroup')->findBy(["user"=>$user,"group"=>$retgroup]); - if(!$usergroup) { - $usergroup=new UserGroup(); + foreach ($retgroups as $retgroup) { + $usergroup = $this->_em->getRepository('App\Entity\UserGroup')->findBy(['user' => $user, 'group' => $retgroup]); + if (!$usergroup) { + $usergroup = new UserGroup(); $usergroup->setUser($user); $usergroup->setGroup($retgroup); $usergroup->setApikey(Uuid::uuid4()); $usergroup->setRolegroup(0); $this->_em->persist($usergroup); - $this->_em->flush(); + $this->_em->flush(); } } return $user; - } + } } diff --git a/src/Repository/Niveau01Repository.php b/src/Repository/Niveau01Repository.php index d54448d..aa64b40 100644 --- a/src/Repository/Niveau01Repository.php +++ b/src/Repository/Niveau01Repository.php @@ -2,21 +2,19 @@ namespace App\Repository; -use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Persistence\ManagerRegistry; - use App\Entity\Niveau01; use App\Service\LdapService; - +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Persistence\ManagerRegistry; class Niveau01Repository extends ServiceEntityRepository { private $ldapservice; - + public function __construct(ManagerRegistry $registry, LdapService $ldapservice) { parent::__construct($registry, Niveau01::class); - $this->ldapservice=$ldapservice; + $this->ldapservice = $ldapservice; } public function add(Niveau01 $entity, bool $flush = false): void @@ -41,25 +39,26 @@ class Niveau01Repository extends ServiceEntityRepository public function calculateSSONiveau01($attruser) { $niveau01s = $this->_em->getRepository('App\Entity\Niveau01')->findAll(); - foreach($niveau01s as $niveau01) { - if($niveau01->getAttributes()) { - $attniveau=json_decode($niveau01->getAttributes(),true); + foreach ($niveau01s as $niveau01) { + if ($niveau01->getAttributes()) { + $attniveau = json_decode($niveau01->getAttributes(), true); - foreach($attniveau as $key => $value) { - if(array_key_exists($key,$attruser)) { - if(is_array($attruser[$key])) { - foreach($attruser[$key] as $val) { - if($value=="*") + foreach ($attniveau as $key => $value) { + if (array_key_exists($key, $attruser)) { + if (is_array($attruser[$key])) { + foreach ($attruser[$key] as $val) { + if ('*' == $value) { return $niveau01; - elseif($val==$value) + } elseif ($val == $value) { return $niveau01; + } } - } - else { - if($value=="*") + } else { + if ('*' == $value) { return $niveau01; - elseif($value==$attruser[$key]) + } elseif ($value == $attruser[$key]) { return $niveau01; + } } } } @@ -67,19 +66,21 @@ class Niveau01Repository extends ServiceEntityRepository } return false; - } - + } + /* Déterminer le niveau01 d'un user LDAP */ public function calculateLDAPNiveau01($username) { $niveau01s = $this->_em->getRepository('App\Entity\Niveau01')->findAll(); - foreach($niveau01s as $niveau01) { - if($niveau01->getLdapfilter()) { - $ismember=$this->ldapservice->findNiveau01ismember($niveau01->getLdapfilter(),$username); - if($ismember) return $niveau01; + foreach ($niveau01s as $niveau01) { + if ($niveau01->getLdapfilter()) { + $ismember = $this->ldapservice->findNiveau01ismember($niveau01->getLdapfilter(), $username); + if ($ismember) { + return $niveau01; + } } } return false; - } + } } diff --git a/src/Service/ApiService.php b/src/Service/ApiService.php index 3af8b91..e017956 100644 --- a/src/Service/ApiService.php +++ b/src/Service/ApiService.php @@ -3,46 +3,52 @@ namespace App\Service; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; class ApiService { private $params; - + public function __construct(ParameterBagInterface $params) { $this->params = $params; } - public function setbody(Array $array) + public function setbody(array $array) { return \Unirest\Request\Body::json($array); } - public function run($method,$url,$query,$header=null,$content="json") { - + public function run($method, $url, $query, $header = null, $content = 'json') + { // Entete - $headerini=null; - switch($content) { - case "json": + $headerini = null; + switch ($content) { + case 'json': $headerini = [ 'Accept' => 'application/json', 'Content-Type' => 'application/json', ]; - if($query) $query = \Unirest\Request\Body::json($query); - break; + if ($query) { + $query = \Unirest\Request\Body::json($query); + } + break; - case "form": + case 'form': $headerini = [ 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', - ]; - if($query) $query = \Unirest\Request\Body::form($query); - break; + ]; + if ($query) { + $query = \Unirest\Request\Body::form($query); + } + break; } - if($header) $header=array_merge($headerini,$header); - else $header=$headerini; + if ($header) { + $header = array_merge($headerini, $header); + } else { + $header = $headerini; + } // Paramétrage unirest \Unirest\Request::verifyPeer(false); @@ -50,60 +56,56 @@ class ApiService \Unirest\Request::timeout(5); // Déclaration du proxy - $proxyUse = $this->params->get("proxyUse"); - if($proxyUse) { - $proxyHost = $this->params->get("proxyHost"); - $proxyPort = $this->params->get("proxyPort"); + $proxyUse = $this->params->get('proxyUse'); + if ($proxyUse) { + $proxyHost = $this->params->get('proxyHost'); + $proxyPort = $this->params->get('proxyPort'); \Unirest\Request::proxy($proxyHost, $proxyPort, CURLPROXY_HTTP, true); } $response = false; - switch($method) { - case "POST": - try{ - $response = \Unirest\Request::post($url,$header,$query); - } - catch (\Exception $e) { + switch ($method) { + case 'POST': + try { + $response = \Unirest\Request::post($url, $header, $query); + } catch (\Exception $e) { return false; } break; - case "GET": - try{ - $response = @\Unirest\Request::get($url,$header,$query); - } - catch (\Exception $e) { + case 'GET': + try { + $response = @\Unirest\Request::get($url, $header, $query); + } catch (\Exception $e) { return false; } break; - case "PUT": - try{ - $response = \Unirest\Request::put($url,$header,$query); - } - catch (\Exception $e) { + case 'PUT': + try { + $response = \Unirest\Request::put($url, $header, $query); + } catch (\Exception $e) { return false; } - break; + break; - case "DELETE": - try{ - $response = \Unirest\Request::delete($url,$header,$query); - } - catch (\Exception $e) { + case 'DELETE': + try { + $response = \Unirest\Request::delete($url, $header, $query); + } catch (\Exception $e) { return false; } - break; - - case "PATCH": - try{ - $response = \Unirest\Request::patch($url,$header,$query); - } - catch (\Exception $e) { + break; + + case 'PATCH': + try { + $response = \Unirest\Request::patch($url, $header, $query); + } catch (\Exception $e) { return false; } - break; + break; } + return $response; } } diff --git a/src/Service/AppSession.php b/src/Service/AppSession.php index 41eeaeb..900c2bc 100644 --- a/src/Service/AppSession.php +++ b/src/Service/AppSession.php @@ -1,14 +1,15 @@ token = $token; } - public function onDomainParse(RequestEvent $event) { + public function onDomainParse(RequestEvent $event) + { $session = $this->requeststack->getSession(); $configs = $this->em->getRepository("App\Entity\Config")->findAll(); - foreach($configs as $config) { + foreach ($configs as $config) { $session->set($config->getId(), strval($config->getValue())); } - $session->set("headerimage","header/".$session->get("headerimage")); + $session->set('headerimage', 'header/'.$session->get('headerimage')); // Calcul couleur - $session->set("colorbgbodylight-darker", $this->adjustBrightness($session->get("colorbgbodylight"),-10)); - $session->set("colorfttitlelight-darker", $this->adjustBrightness($session->get("colorfttitlelight"),-50)); + $session->set('colorbgbodylight-darker', $this->adjustBrightness($session->get('colorbgbodylight'), -10)); + $session->set('colorfttitlelight-darker', $this->adjustBrightness($session->get('colorfttitlelight'), -50)); - $session->set("colorbgbodydark-darker", $this->adjustBrightness($session->get("colorbgbodydark"),-50)); - $session->set("colorbgbodydark-lighter", $this->adjustBrightness($session->get("colorbgbodydark"),+50)); + $session->set('colorbgbodydark-darker', $this->adjustBrightness($session->get('colorbgbodydark'), -50)); + $session->set('colorbgbodydark-lighter', $this->adjustBrightness($session->get('colorbgbodydark'), +50)); + + $session->set('colorbgbodydark-rgb', $this->hexToRgb($session->get('colorbgbodydark'))); + $session->set('colorbgbodydark-darkrgb', $this->hexToRgb($session->get('colorbgbodydark-darker'))); + $session->set('colorbgbodydark-lightrgb', $this->hexToRgb($session->get('colorbgbodydark-lighter'))); - $session->set("colorbgbodydark-rgb", $this->hexToRgb($session->get("colorbgbodydark"))); - $session->set("colorbgbodydark-darkrgb", $this->hexToRgb($session->get("colorbgbodydark-darker"))); - $session->set("colorbgbodydark-lightrgb", $this->hexToRgb($session->get("colorbgbodydark-lighter"))); - // Current user $token = $this->token->getToken(); - if(!$token) return; - $curentuser=$token->getUser(); - - // Préférence par défaut - $session->set("fgheader", true); - $session->set("fgaudit", false); + if (!$token) { + return; + } + $curentuser = $token->getUser(); + + // Préférence par défaut + $session->set('fgheader', true); + $session->set('fgaudit', false); // Préférence - if($curentuser!="anon.") { - $preference=$curentuser->getPreference(); - if(is_array($preference)) { + if ('anon.' != $curentuser) { + $preference = $curentuser->getPreference(); + if (is_array($preference)) { // Préférence header - if(array_key_exists("fgheader",$preference)) { - $fgheader=($preference["fgheader"][0]=="true"); - $session->set("fgheader", $fgheader); + if (array_key_exists('fgheader', $preference)) { + $fgheader = ('true' == $preference['fgheader'][0]); + $session->set('fgheader', $fgheader); } // Préférence audit - if(array_key_exists("fgaudit",$preference)) { - $fgaudit=($preference["fgaudit"][0]=="true"); - $session->set("fgaudit", $fgaudit); - } + if (array_key_exists('fgaudit', $preference)) { + $fgaudit = ('true' == $preference['fgaudit'][0]); + $session->set('fgaudit', $fgaudit); + } } } // Permissions - $showannuaire=false; - $submitgroup=false; - if($curentuser!="anon.") { - switch($session->get("permannu")) { - case "ROLE_USER" : - $showannuaire=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")||$curentuser->hasRole("ROLE_MASTER")||$curentuser->hasRole("ROLE_USER")); - break; + $showannuaire = false; + $submitgroup = false; + if ('anon.' != $curentuser) { + switch ($session->get('permannu')) { + case 'ROLE_USER': + $showannuaire = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO') || $curentuser->hasRole('ROLE_MASTER') || $curentuser->hasRole('ROLE_USER')); + break; - case "ROLE_MASTER" : - $showannuaire=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")||$curentuser->hasRole("ROLE_MASTER")); - break; + case 'ROLE_MASTER': + $showannuaire = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO') || $curentuser->hasRole('ROLE_MASTER')); + break; - case "ROLE_MODO" : - $showannuaire=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")); - break; + case 'ROLE_MODO': + $showannuaire = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO')); + break; } - switch($session->get("permgroup")) { - case "ROLE_USER" : - $submitgroup=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")||$curentuser->hasRole("ROLE_MASTER")||$curentuser->hasRole("ROLE_USER")); - break; + switch ($session->get('permgroup')) { + case 'ROLE_USER': + $submitgroup = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO') || $curentuser->hasRole('ROLE_MASTER') || $curentuser->hasRole('ROLE_USER')); + break; - case "ROLE_MASTER" : - $submitgroup=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")||$curentuser->hasRole("ROLE_MASTER")); - break; + case 'ROLE_MASTER': + $submitgroup = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO') || $curentuser->hasRole('ROLE_MASTER')); + break; - case "ROLE_MODO" : - $submitgroup=($curentuser->hasRole("ROLE_ADMIN")||$curentuser->hasRole("ROLE_MODO")); - break; + case 'ROLE_MODO': + $submitgroup = ($curentuser->hasRole('ROLE_ADMIN') || $curentuser->hasRole('ROLE_MODO')); + break; } } - $session->set("showannuaire", $showannuaire); - $session->set("submitgroup", $submitgroup); + $session->set('showannuaire', $showannuaire); + $session->set('submitgroup', $submitgroup); - // Visite - if($curentuser!="anon.") { - $now=new \DateTime(); - if(!$curentuser->getVisitedate()) { + // Visite + if ('anon.' != $curentuser) { + $now = new \DateTime(); + if (!$curentuser->getVisitedate()) { $curentuser->setVisitedate($now); - $curentuser->setVisitecpt($curentuser->getVisitecpt()+1); + $curentuser->setVisitecpt($curentuser->getVisitecpt() + 1); $this->em->persist($curentuser); - $this->em->flush(); - } - else { - $visitedate=clone $curentuser->getVisitedate(); - $visitedate->add(new \DateInterval("PT1H")); - if($visitedate<$now) { + $this->em->flush(); + } else { + $visitedate = clone $curentuser->getVisitedate(); + $visitedate->add(new \DateInterval('PT1H')); + if ($visitedate < $now) { $curentuser->setVisitedate($now); - $curentuser->setVisitecpt($curentuser->getVisitecpt()+1); + $curentuser->setVisitecpt($curentuser->getVisitecpt() + 1); $this->em->persist($curentuser); - $this->em->flush(); + $this->em->flush(); } } } } - - private function adjustBrightness($hex, $steps) { + private function adjustBrightness($hex, $steps) + { // Steps should be between -255 and 255. Negative = darker, positive = lighter $steps = max(-255, min(255, $steps)); - + // Normalize into a six character long hex string $hex = str_replace('#', '', $hex); - if (strlen($hex) == 3) { - $hex = str_repeat(substr($hex,0,1), 2).str_repeat(substr($hex,1,1), 2).str_repeat(substr($hex,2,1), 2); + if (3 == strlen($hex)) { + $hex = str_repeat(substr($hex, 0, 1), 2).str_repeat(substr($hex, 1, 1), 2).str_repeat(substr($hex, 2, 1), 2); } - + // Split into three parts: R, G and B $color_parts = str_split($hex, 2); $return = ''; - + foreach ($color_parts as $color) { - $color = hexdec($color); // Convert to decimal - $color = max(0,min(255,$color + $steps)); // Adjust color + $color = hexdec($color); // Convert to decimal + $color = max(0, min(255, $color + $steps)); // Adjust color $return .= str_pad(dechex($color), 2, '0', STR_PAD_LEFT); // Make two char hex code } - + return '#'.$return; - } - - public function hexToRgb($hex) { - $hex = str_replace('#', '', $hex); - $length = strlen($hex); - $rgb['r'] = hexdec($length == 6 ? substr($hex, 0, 2) : ($length == 3 ? str_repeat(substr($hex, 0, 1), 2) : 0)); - $rgb['g'] = hexdec($length == 6 ? substr($hex, 2, 2) : ($length == 3 ? str_repeat(substr($hex, 1, 1), 2) : 0)); - $rgb['b'] = hexdec($length == 6 ? substr($hex, 4, 2) : ($length == 3 ? str_repeat(substr($hex, 2, 1), 2) : 0)); - - return $rgb['r'].",".$rgb['g'].",".$rgb['b']; - } + } + + public function hexToRgb($hex) + { + $hex = str_replace('#', '', $hex); + $length = strlen($hex); + $rgb['r'] = hexdec(6 == $length ? substr($hex, 0, 2) : (3 == $length ? str_repeat(substr($hex, 0, 1), 2) : 0)); + $rgb['g'] = hexdec(6 == $length ? substr($hex, 2, 2) : (3 == $length ? str_repeat(substr($hex, 1, 1), 2) : 0)); + $rgb['b'] = hexdec(6 == $length ? substr($hex, 4, 2) : (3 == $length ? str_repeat(substr($hex, 2, 1), 2) : 0)); + + return $rgb['r'].','.$rgb['g'].','.$rgb['b']; + } } diff --git a/src/Service/LdapService.php b/src/Service/LdapService.php index e8f6d93..580f719 100644 --- a/src/Service/LdapService.php +++ b/src/Service/LdapService.php @@ -2,13 +2,12 @@ namespace App\Service; -use Symfony\Component\DependencyInjection\ContainerInterface; - -use App\Entity\User; +use App\Entity\Group; use App\Entity\Niveau01; use App\Entity\Niveau02; -use App\Entity\Group; +use App\Entity\User; use App\Entity\UserGroup; +use Symfony\Component\DependencyInjection\ContainerInterface; class LdapService { @@ -44,157 +43,181 @@ class LdapService public function __construct(ContainerInterface $container) { - - $this->appMasteridentity = $container->getParameter("appMasteridentity"); - $this->synchro = $container->getParameter("appSynchro"); - $this->host = $container->getParameter("ldapHost"); - $this->port = $container->getParameter("ldapPort"); - $this->usetls = $container->getParameter("ldapUsetls"); - $this->userwriter = $container->getParameter("ldapUserwriter"); - $this->user = $container->getParameter("ldapUser"); - $this->password = $container->getParameter("ldapPassword"); - $this->basedn = $container->getParameter("ldapBasedn"); - $this->baseorganisation = $container->getParameter("ldapBaseorganisation"); - $this->baseniveau01 = $container->getParameter("ldapBaseniveau01"); - $this->baseniveau02 = $container->getParameter("ldapBaseniveau02"); - $this->basegroup = $container->getParameter("ldapBasegroup"); - $this->baseuser = $container->getParameter("ldapBaseuser"); - $this->username = $container->getParameter("ldapUsername"); - $this->firstname = $container->getParameter("ldapFirstname"); - $this->lastname = $container->getParameter("ldapLastname"); - $this->email = $container->getParameter("ldapEmail"); - $this->avatar = $container->getParameter("ldapAvatar"); - $this->memberof = $container->getParameter("ldapMemberof"); - $this->groupgid = $container->getParameter("ldapGroupgid"); - $this->groupname = $container->getParameter("ldapGroupname"); - $this->groupmember = $container->getParameter("ldapGroupmember"); - $this->groupmemberisdn = $container->getParameter("ldapGroupmemberisdn"); - $this->filtergroup = $container->getParameter("ldapFiltergroup"); - $this->filteruser = $container->getParameter("ldapFilteruser"); + $this->appMasteridentity = $container->getParameter('appMasteridentity'); + $this->synchro = $container->getParameter('appSynchro'); + $this->host = $container->getParameter('ldapHost'); + $this->port = $container->getParameter('ldapPort'); + $this->usetls = $container->getParameter('ldapUsetls'); + $this->userwriter = $container->getParameter('ldapUserwriter'); + $this->user = $container->getParameter('ldapUser'); + $this->password = $container->getParameter('ldapPassword'); + $this->basedn = $container->getParameter('ldapBasedn'); + $this->baseorganisation = $container->getParameter('ldapBaseorganisation'); + $this->baseniveau01 = $container->getParameter('ldapBaseniveau01'); + $this->baseniveau02 = $container->getParameter('ldapBaseniveau02'); + $this->basegroup = $container->getParameter('ldapBasegroup'); + $this->baseuser = $container->getParameter('ldapBaseuser'); + $this->username = $container->getParameter('ldapUsername'); + $this->firstname = $container->getParameter('ldapFirstname'); + $this->lastname = $container->getParameter('ldapLastname'); + $this->email = $container->getParameter('ldapEmail'); + $this->avatar = $container->getParameter('ldapAvatar'); + $this->memberof = $container->getParameter('ldapMemberof'); + $this->groupgid = $container->getParameter('ldapGroupgid'); + $this->groupname = $container->getParameter('ldapGroupname'); + $this->groupmember = $container->getParameter('ldapGroupmember'); + $this->groupmemberisdn = $container->getParameter('ldapGroupmemberisdn'); + $this->filtergroup = $container->getParameter('ldapFiltergroup'); + $this->filteruser = $container->getParameter('ldapFilteruser'); - $this->userattributes = [$this->username,$this->firstname,$this->lastname,$this->email,$this->avatar,$this->memberof]; - + $this->userattributes = [$this->username, $this->firstname, $this->lastname, $this->email, $this->avatar, $this->memberof]; } - public function isNine2Ldap() { - return ($this->appMasteridentity=="SQL"&&$this->synchro=="NINE2LDAP"&&$this->userwriter&&$this->baseorganisation&&$this->baseniveau01&&$this->baseniveau02&&$this->basegroup&&$this->baseuser&&$this->connect()); + public function isNine2Ldap() + { + return 'SQL' == $this->appMasteridentity && 'NINE2LDAP' == $this->synchro && $this->userwriter && $this->baseorganisation && $this->baseniveau01 && $this->baseniveau02 && $this->basegroup && $this->baseuser && $this->connect(); } - public function connect() { + public function connect() + { // Si on est déjà co = on rebind pour gérer le cas d'un timeout de connection - if($this->connection){ - if(!@ldap_bind($this->connection, $this->user, $this->password)){ + if ($this->connection) { + if (!@ldap_bind($this->connection, $this->user, $this->password)) { $this->disconnect(); } } - if($this->connection){ + if ($this->connection) { return $this->connection; } else { $ldapConn = ldap_connect($this->host, $this->port); - if($ldapConn){ + if ($ldapConn) { ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); - if($this->usetls) ldap_start_tls($ldapConn); + if ($this->usetls) { + ldap_start_tls($ldapConn); + } - if(@ldap_bind( $ldapConn, $this->user, $this->password)){ + if (@ldap_bind($ldapConn, $this->user, $this->password)) { $this->connection = $ldapConn; + return $this->connection; } } } + return false; } - public function userconnect($username,$userpassword) { + public function userconnect($username, $userpassword) + { $ldapConn = ldap_connect($this->host, $this->port); $this->connection = $ldapConn; - if($this->connection){ + if ($this->connection) { ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); - if($this->usetls) ldap_start_tls($ldapConn); + if ($this->usetls) { + ldap_start_tls($ldapConn); + } $dn = $this->getUserDN($username); - if(@ldap_bind( $ldapConn, $dn, $userpassword)){ - $res = $this->search(str_replace("*",$username,$this->filteruser),$this->userattributes, $this->baseuser); - $this->disconnect(); + if (@ldap_bind($ldapConn, $dn, $userpassword)) { + $res = $this->search(str_replace('*', $username, $this->filteruser), $this->userattributes, $this->baseuser); + $this->disconnect(); + return $res; } } $this->disconnect(); + return false; } - public function getParameter($key) { - switch($key) { - case "baseuser" : return $this->baseuser; break; - case "basegroup" : return $this->basegroup; break; - case "baseniveau01" : return $this->baseniveau01; break; - case "baseniveau02" : return $this->baseniveau02; break; - case "basedn" : return $this->basedn; break; - case "filteruser" : return $this->filteruser; break; + public function getParameter($key) + { + switch ($key) { + case 'baseuser': return $this->baseuser; + break; + case 'basegroup': return $this->basegroup; + break; + case 'baseniveau01': return $this->baseniveau01; + break; + case 'baseniveau02': return $this->baseniveau02; + break; + case 'basedn': return $this->basedn; + break; + case 'filteruser': return $this->filteruser; + break; } } - public function search($filter, $attributes = array(), $subBranch = '') { + public function search($filter, $attributes = [], $subBranch = '') + { $connection = $this->connect(); $branch = ($subBranch ? $subBranch : $this->basedn); - $result = ldap_search($connection, $branch, $filter, $attributes,0,0,0); - if(!$result) { + $result = ldap_search($connection, $branch, $filter, $attributes, 0, 0, 0); + if (!$result) { $this->ldapError(); } + return $this->resultToArray($result); } - public function searchdn($dn, $subBranch = '') { + public function searchdn($dn, $subBranch = '') + { $connection = $this->connect(); - $tbdn=ldap_explode_dn($dn,0); + $tbdn = ldap_explode_dn($dn, 0); $branch = ($subBranch ? $subBranch : $this->basedn); - $result = ldap_search($connection, $branch, "(".$tbdn[0].")", [],0,0,0); - if(!$result) { + $result = ldap_search($connection, $branch, '('.$tbdn[0].')', [], 0, 0, 0); + if (!$result) { $this->ldapError(); } + return $this->resultToArray($result); } - public function deleteByDN($dn){ + public function deleteByDN($dn) + { $connection = $this->connect(); $removed = ldap_delete($connection, $dn); - if(!$removed){ + if (!$removed) { $this->ldapError(); } } - public function rename($oldDN, $newDN, $parentDN = '', $deleteOldDN = true){ + public function rename($oldDN, $newDN, $parentDN = '', $deleteOldDN = true) + { $connection = $this->connect(); $result = ldap_rename($connection, $oldDN, $newDN, $parentDN, $deleteOldDN); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } + return $result; } - - private function resultToArray($result){ - + private function resultToArray($result) + { $connection = $this->connect(); - $resultArray = array(); + $resultArray = []; - if($result){ + if ($result) { $entry = ldap_first_entry($connection, $result); - while ($entry){ - $row = array(); + while ($entry) { + $row = []; $attr = ldap_first_attribute($connection, $entry); - while ($attr){ + while ($attr) { $val = ldap_get_values_len($connection, $entry, $attr); - if(array_key_exists('count', $val) AND $val['count'] == 1){ + if (array_key_exists('count', $val) and 1 == $val['count']) { $row[strtolower($attr)] = $val[0]; } else { $row[strtolower($attr)] = $val; } - if(is_array($row[strtolower($attr)])) { - unset($row[strtolower($attr)]["count"]); + if (is_array($row[strtolower($attr)])) { + unset($row[strtolower($attr)]['count']); } $attr = ldap_next_attribute($connection, $entry); @@ -207,143 +230,161 @@ class LdapService return $resultArray; } - public function in_array_r($item , $array){ - return preg_match('/"'.$item.'"/i' , json_encode($array)); + public function in_array_r($item, $array) + { + return preg_match('/"'.$item.'"/i', json_encode($array)); } - public function disconnect(){ - if($this->connection) { + public function disconnect() + { + if ($this->connection) { ldap_unbind($this->connection); - $this->connection=null; + $this->connection = null; } } - public function ldapError(){ + public function ldapError() + { $connection = $this->connect(); - throw new \Exception( - 'Error: ('. ldap_errno($connection) .') '. ldap_error($connection) - ); + throw new \Exception('Error: ('.ldap_errno($connection).') '.ldap_error($connection)); } - public function ldapModify($dn,$attrs) { + public function ldapModify($dn, $attrs) + { $connection = $this->connect(); $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } -//================================================================================================================================================================== -//== Function Organisation========================================================================================================================================== -//================================================================================================================================================================== + // ================================================================================================================================================================== + // == Function Organisation========================================================================================================================================== + // ================================================================================================================================================================== - public function addOrganisations() { - $ldapentrys=$this->searchdn($this->baseorganisation); - if(empty($ldapentrys)) { + public function addOrganisations() + { + $ldapentrys = $this->searchdn($this->baseorganisation); + if (empty($ldapentrys)) { $this->addOrganisation($this->baseorganisation); } - $ldapentrys=$this->searchdn($this->baseniveau01,$this->baseorganisation); - if(empty($ldapentrys)) { + $ldapentrys = $this->searchdn($this->baseniveau01, $this->baseorganisation); + if (empty($ldapentrys)) { $this->addOrganisation($this->baseniveau01); } - $ldapentrys=$this->searchdn($this->baseniveau02,$this->baseorganisation); - if(empty($ldapentrys)) { + $ldapentrys = $this->searchdn($this->baseniveau02, $this->baseorganisation); + if (empty($ldapentrys)) { $this->addOrganisation($this->baseniveau02); } - $ldapentrys=$this->searchdn($this->basegroup,$this->baseorganisation); - if(empty($ldapentrys)) { + $ldapentrys = $this->searchdn($this->basegroup, $this->baseorganisation); + if (empty($ldapentrys)) { $this->addOrganisation($this->basegroup); } - $ldapentrys=$this->searchdn($this->baseuser,$this->baseorganisation); - if(empty($ldapentrys)) { + $ldapentrys = $this->searchdn($this->baseuser, $this->baseorganisation); + if (empty($ldapentrys)) { $this->addOrganisation($this->baseuser); - } + } } - public function addOrganisation($dn) { - + public function addOrganisation($dn) + { $connection = $this->connect(); - $attrs = array(); - $attrs['objectclass'] = ["top","organizationalUnit"]; + $attrs = []; + $attrs['objectclass'] = ['top', 'organizationalUnit']; $result = ldap_add($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } return $result; } -//================================================================================================================================================================== -//== Function User================================================================================================================================================== -//================================================================================================================================================================== - - public function addUser(User $user) { + // ================================================================================================================================================================== + // == Function User================================================================================================================================================== + // ================================================================================================================================================================== + public function addUser(User $user) + { $connection = $this->connect(); $dn = $this->getUserDN($user->getUsername()); - $attrs = array(); + $attrs = []; $attrs['objectclass'] = $this->getObjectClassesUser(); $this->fillAttributesUser($user, $attrs); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { unset($attrs[$key]); } } - $result = ldap_add($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } return $result; } - public function ismodifyUser(User $user,$entry){ + public function ismodifyUser(User $user, $entry) + { $attrs = []; $this->fillAttributesUser($user, $attrs); - foreach($attrs as $key => $value) { - if(!array_key_exists($key,$entry)&&!empty($value)) return true; - elseif(array_key_exists($key,$entry)&&$value!=$entry[$key]) return true; + foreach ($attrs as $key => $value) { + if (!array_key_exists($key, $entry) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $entry) && $value != $entry[$key]) { + return true; + } } - foreach($entry as $key => $value) { - if(!array_key_exists($key,$attrs)&&!empty($value)) return true; - elseif(array_key_exists($key,$attrs)&&$value!=$attrs[$key]) return true; + foreach ($entry as $key => $value) { + if (!array_key_exists($key, $attrs) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $attrs) && $value != $attrs[$key]) { + return true; + } } return false; } - public function modifyUser(User $user){ + public function modifyUser(User $user) + { $dn = $this->basedn; $connection = $this->connect(); - $attrs = array(); + $attrs = []; $this->fillAttributesUser($user, $attrs); - + // Rechercher le DN du user $dn = $this->getUserDN($user->getUsername()); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { // Bien mettre un @ car si l'attribut est déjà vide cela crache une erreur car l'attribut n'existe déjà plus - @ldap_mod_del($connection, $dn, array($key => array())); + @ldap_mod_del($connection, $dn, [$key => []]); unset($attrs[$key]); } } $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } - - public function modifyUserpwd(User $user){ + public function modifyUserpwd(User $user) + { $dn = $this->basedn; $connection = $this->connect(); - $attrs = array(); + $attrs = []; // Attributs associés au password $attrs['userpassword'] = $user->getPassword(); @@ -351,516 +392,601 @@ class LdapService // Rechercher le DN du user $dn = $this->getUserDN($user->getUsername()); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { // Bien mettre un @ car si l'attribut est déjà vide cela crache une erreur car l'attribut n'existe déjà plus - @ldap_mod_del($connection, $dn, array($key => array())); + @ldap_mod_del($connection, $dn, [$key => []]); unset($attrs[$key]); } } - $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } - public function updateNiveauUser(User $user,$todel=false) { + public function updateNiveauUser(User $user, $todel = false) + { $dn = $this->basedn; - $connection = $this->connect(); - $result=null; - + $connection = $this->connect(); + $result = null; + // NIVEAU01 // On recherche le Niveau01 actuellement asscocié à l'utilisateur $criteria = '(&(cn=*)(memberUid='.$user->getUsername().'))'; - $subbranch=$this->baseniveau01; - $results = $this->search($criteria, array('cn'), $subbranch); - foreach($results as $result) { + $subbranch = $this->baseniveau01; + $results = $this->search($criteria, ['cn'], $subbranch); + foreach ($results as $result) { // Si Niveau01 différent de celui en cours on le détache de ce Niveau01 - if($result["cn"]!=$user->getNiveau01()->getLabel()||$todel) { - $dn = $this->getNiveau01DN($result["cn"]); - $entry['memberuid'] = $user->getUsername(); - $result = ldap_mod_del($connection, $dn, $entry); - if(!$result) $this->ldapError(); + if ($result['cn'] != $user->getNiveau01()->getLabel() || $todel) { + $dn = $this->getNiveau01DN($result['cn']); + $entry['memberuid'] = $user->getUsername(); + $result = ldap_mod_del($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); + } } } // On recherche le Niveau01 en cours - if(!$todel) { + if (!$todel) { $criteria = '(cn='.$user->getNiveau01()->getLabel().')'; - $subbranch=$this->baseniveau01; - $result = $this->search($criteria, array('memberuid'), $subbranch); + $subbranch = $this->baseniveau01; + $result = $this->search($criteria, ['memberuid'], $subbranch); // S'il n'est pas membre du Niveau01 on le rattache - if(!$this->in_array_r($user->getUsername(),$result[0])) { + if (!$this->in_array_r($user->getUsername(), $result[0])) { $dn = $this->getNiveau01DN($user->getNiveau01()->getLabel()); - $entry['memberuid'] = $user->getUsername(); - $result = ldap_mod_add($connection, $dn, $entry); - if(!$result) $this->ldapError(); + $entry['memberuid'] = $user->getUsername(); + $result = ldap_mod_add($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); + } } } // NIVEAU02 // On recherche le Niveau02 actuellement asscocié à l'utilisateur $criteria = '(&(cn=*)(memberUid='.$user->getUsername().'))'; - $subbranch=$this->baseniveau02; - $results = $this->search($criteria, array('cn'), $subbranch); - foreach($results as $result) { + $subbranch = $this->baseniveau02; + $results = $this->search($criteria, ['cn'], $subbranch); + foreach ($results as $result) { // Si Niveau02 différent de celui en cours on le détache de ce Niveau02 - if($user->getNiveau02()===null||$result["cn"]!=$user->getNiveau02()->getLabel()||$todel) { - $dn = $this->getNiveau02DN($result["cn"]); - $entry['memberuid'] = $user->getUsername(); - $result = ldap_mod_del($connection, $dn, $entry); - if(!$result) $this->ldapError(); - } - } - - // On recherche le Niveau02 en cours - if(!$todel) { - if($user->getNiveau02()!==null) { - $criteria = '(cn='.$user->getNiveau02()->getLabel().')'; - $subbranch=$this->baseniveau02; - $result = $this->search($criteria, array('memberuid'), $subbranch); - - // S'il n'est pas membre du Niveau02 on le rattache - if(empty($result)||!$this->in_array_r($user->getUsername(),$result[0])) { - $dn = $this->getNiveau02DN($user->getNiveau02()->getLabel()); - $entry['memberuid'] = $user->getUsername(); - $result = ldap_mod_add($connection, $dn, $entry); - if(!$result) $this->ldapError(); + if (null === $user->getNiveau02() || $result['cn'] != $user->getNiveau02()->getLabel() || $todel) { + $dn = $this->getNiveau02DN($result['cn']); + $entry['memberuid'] = $user->getUsername(); + $result = ldap_mod_del($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); } } } - return $result; - } + // On recherche le Niveau02 en cours + if (!$todel) { + if (null !== $user->getNiveau02()) { + $criteria = '(cn='.$user->getNiveau02()->getLabel().')'; + $subbranch = $this->baseniveau02; + $result = $this->search($criteria, ['memberuid'], $subbranch); - public function deleteUser(User $user){ + // S'il n'est pas membre du Niveau02 on le rattache + if (empty($result) || !$this->in_array_r($user->getUsername(), $result[0])) { + $dn = $this->getNiveau02DN($user->getNiveau02()->getLabel()); + $entry['memberuid'] = $user->getUsername(); + $result = ldap_mod_add($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); + } + } + } + } + + return $result; + } + + public function deleteUser(User $user) + { $dn = $this->getUserDN($user->getUsername()); + return $this->deleteByDN($dn); } - public function getObjectClassesUser() { - $oc = array( + public function getObjectClassesUser() + { + $oc = [ 'top', 'person', 'organizationalPerson', 'inetOrgPerson', - ); + ]; + return $oc; } - public function listAttributesUser() { + public function listAttributesUser() + { return [ - "uid", - "cn", - "givenname", - "sn", - "mail", - "displayname", - "telephonenumber", - "postaladdress", - "userpassword", + 'uid', + 'cn', + 'givenname', + 'sn', + 'mail', + 'displayname', + 'telephonenumber', + 'postaladdress', + 'userpassword', ]; } - public function fillAttributesUser(User $user, array &$attrs) { - $attrs['uid'] = $user->getUsername(); - $attrs['cn'] = $user->getFirstname() . ' ' . $user->getLastname(); - $attrs['givenname'] = $user->getFirstname(); - $attrs['sn'] = $user->getLastname(); - $attrs['mail'] = $user->getEmail(); - $attrs['displayname'] = $user->getFirstname() . ' ' . $user->getLastname(); - $attrs['telephonenumber'] = $user->getTelephonenumber(); - $attrs['postaladdress'] = $user->getPostaladress(); - $attrs['userpassword'] = $user->getPassword(); + public function fillAttributesUser(User $user, array &$attrs) + { + $attrs['uid'] = $user->getUsername(); + $attrs['cn'] = $user->getFirstname().' '.$user->getLastname(); + $attrs['givenname'] = $user->getFirstname(); + $attrs['sn'] = $user->getLastname(); + $attrs['mail'] = $user->getEmail(); + $attrs['displayname'] = $user->getFirstname().' '.$user->getLastname(); + $attrs['telephonenumber'] = $user->getTelephonenumber(); + $attrs['postaladdress'] = $user->getPostaladress(); + $attrs['userpassword'] = $user->getPassword(); } - public function getUserDN($username) { + public function getUserDN($username) + { return $this->username.'='.$username.','.$this->baseuser; } -//================================================================================================================================================================== -//== Function Niveau01============================================================================================================================================== -//================================================================================================================================================================== + // ================================================================================================================================================================== + // == Function Niveau01============================================================================================================================================== + // ================================================================================================================================================================== + + public function findNiveau01($ldapfilter) + { + $ldapentrys = $this->search($ldapfilter, [$this->groupgid, $this->groupname, $this->groupmember], $this->baseniveau01); - public function findNiveau01($ldapfilter) { - $ldapentrys=$this->search($ldapfilter,[$this->groupgid,$this->groupname,$this->groupmember],$this->baseniveau01); return $ldapentrys; } - public function findNiveau01ismember($ldapfilter,$username) { - $ldapentrys=$this->findNiveau01($ldapfilter); - foreach($ldapentrys as $ldapentry) { - if(is_array($ldapentry[$this->groupmember])) { - if(in_array($username,$ldapentry[$this->groupmember])) return true; + public function findNiveau01ismember($ldapfilter, $username) + { + $ldapentrys = $this->findNiveau01($ldapfilter); + foreach ($ldapentrys as $ldapentry) { + if (is_array($ldapentry[$this->groupmember])) { + if (in_array($username, $ldapentry[$this->groupmember])) { + return true; + } + } elseif ($username == $ldapentry[$this->groupmember]) { + return true; } - elseif($username==$ldapentry[$this->groupmember]) return true; } + return false; } - public function addNiveau01(Niveau01 $niveau01) { - + public function addNiveau01(Niveau01 $niveau01) + { $connection = $this->connect(); $dn = $this->getNiveau01DN($niveau01->getLabel()); - $attrs = array(); + $attrs = []; $attrs['objectclass'] = $this->getObjectClassesNiveau01(); $this->fillAttributesNiveau01($niveau01, $attrs); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { unset($attrs[$key]); } } $result = ldap_add($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } return $result; } - - public function ismodifyNiveau01(Niveau01 $niveau01,$entry){ + public function ismodifyNiveau01(Niveau01 $niveau01, $entry) + { $attrs = []; $this->fillAttributesNiveau01($niveau01, $attrs); - foreach($attrs as $key => $value) { - if(!array_key_exists($key,$entry)&&!empty($value)) return true; - elseif(array_key_exists($key,$entry)&&$value!=$entry[$key]) return true; + foreach ($attrs as $key => $value) { + if (!array_key_exists($key, $entry) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $entry) && $value != $entry[$key]) { + return true; + } } - foreach($entry as $key => $value) { - if(!array_key_exists($key,$attrs)&&!empty($value)) return true; - elseif(array_key_exists($key,$attrs)&&$value!=$attrs[$key]) return true; + foreach ($entry as $key => $value) { + if (!array_key_exists($key, $attrs) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $attrs) && $value != $attrs[$key]) { + return true; + } } return false; } - public function modifyNiveau01(Niveau01 $niveau01,$oldid){ - + public function modifyNiveau01(Niveau01 $niveau01, $oldid) + { $dn = $this->basedn; $connection = $this->connect(); - $attrs = array(); + $attrs = []; $this->fillAttributesNiveau01($niveau01, $attrs); - unset($attrs["cn"]); + unset($attrs['cn']); $dn = $this->getNiveau01DN($niveau01->getLabel()); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { // Bien mettre un @ car si l'attribut est déjà vide cela crache une erreur car l'attribut n'existe déjà plus - @ldap_mod_del($connection, $dn, array($key => array())); + @ldap_mod_del($connection, $dn, [$key => []]); unset($attrs[$key]); } } - if(isset($oldid)&&$oldid!=$niveau01->getLabel()) { + if (isset($oldid) && $oldid != $niveau01->getLabel()) { $olddn = $this->getNiveau01DN($oldid); - $this->rename($olddn,"cn=".$niveau01->getLabel(),$this->baseniveau01); + $this->rename($olddn, 'cn='.$niveau01->getLabel(), $this->baseniveau01); } $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } - public function deleteNiveau01(Niveau01 $niveau01){ + public function deleteNiveau01(Niveau01 $niveau01) + { $dn = $this->getNiveau01DN($niveau01->getLabel()); + return $this->deleteByDN($dn); } - private function getObjectClassesNiveau01() { - $oc = array( + private function getObjectClassesNiveau01() + { + $oc = [ 'top', 'posixGroup', - ); + ]; return $oc; } - public function listAttributesNiveau01() { + public function listAttributesNiveau01() + { return [ - "cn", - "gidnumber", - "memberuid", + 'cn', + 'gidnumber', + 'memberuid', ]; } - public function fillAttributesNiveau01(Niveau01 $niveau01, array &$attrs) { - $attrs['cn'] = $niveau01->getLabel(); + public function fillAttributesNiveau01(Niveau01 $niveau01, array &$attrs) + { + $attrs['cn'] = $niveau01->getLabel(); $attrs['gidnumber'] = $niveau01->getId(); $attrs['memberuid'] = []; - foreach($niveau01->getUsers() as $user) { - array_push($attrs['memberuid'],$user->getUsername()); + foreach ($niveau01->getUsers() as $user) { + array_push($attrs['memberuid'], $user->getUsername()); } sort($attrs['memberuid']); - if(count($attrs['memberuid'])==1) $attrs['memberuid'] = $attrs['memberuid'][0]; + if (1 == count($attrs['memberuid'])) { + $attrs['memberuid'] = $attrs['memberuid'][0]; + } } - public function getNiveau01DN($id) { + public function getNiveau01DN($id) + { return 'cn='.$id.','.$this->baseniveau01; } -//================================================================================================================================================================== -//== Function Niveau02============================================================================================================================================== -//================================================================================================================================================================== - - public function addNiveau02(Niveau02 $niveau02) { + // ================================================================================================================================================================== + // == Function Niveau02============================================================================================================================================== + // ================================================================================================================================================================== + public function addNiveau02(Niveau02 $niveau02) + { $connection = $this->connect(); $dn = $this->getNiveau02DN($niveau02->getLabel()); - $attrs = array(); + $attrs = []; $attrs['objectclass'] = $this->getObjectClassesNiveau02(); $this->fillAttributesNiveau02($niveau02, $attrs); - - foreach($attrs as $key => $value){ - if(empty($value)){ + + foreach ($attrs as $key => $value) { + if (empty($value)) { unset($attrs[$key]); } } $result = ldap_add($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } return $result; } - public function ismodifyNiveau02(Niveau02 $niveau02,$entry){ + public function ismodifyNiveau02(Niveau02 $niveau02, $entry) + { $attrs = []; $this->fillAttributesNiveau02($niveau02, $attrs); - foreach($attrs as $key => $value) { - if(!array_key_exists($key,$entry)&&!empty($value)) return true; - elseif(array_key_exists($key,$entry)&&$value!=$entry[$key]) return true; + foreach ($attrs as $key => $value) { + if (!array_key_exists($key, $entry) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $entry) && $value != $entry[$key]) { + return true; + } } - foreach($entry as $key => $value) { - if(!array_key_exists($key,$attrs)&&!empty($value)) return true; - elseif(array_key_exists($key,$attrs)&&$value!=$attrs[$key]) return true; + foreach ($entry as $key => $value) { + if (!array_key_exists($key, $attrs) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $attrs) && $value != $attrs[$key]) { + return true; + } } return false; } - public function modifyNiveau02(Niveau02 $niveau02,$oldid){ + public function modifyNiveau02(Niveau02 $niveau02, $oldid) + { $dn = $this->basedn; $connection = $this->connect(); - $attrs = array(); + $attrs = []; $this->fillAttributesNiveau02($niveau02, $attrs); - unset($attrs["cn"]); + unset($attrs['cn']); $dn = $this->getNiveau02DN($niveau02->getLabel()); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { // Bien mettre un @ car si l'attribut est déjà vide cela crache une erreur car l'attribut n'existe déjà plus - @ldap_mod_del($connection, $dn, array($key => array())); + @ldap_mod_del($connection, $dn, [$key => []]); unset($attrs[$key]); } } - if(isset($oldid)&&$oldid!=$niveau02->getLabel()) { + if (isset($oldid) && $oldid != $niveau02->getLabel()) { $olddn = $this->getNiveau02DN($oldid); - $this->rename($olddn,"cn=".$niveau02->getLabel(),$this->baseniveau02); + $this->rename($olddn, 'cn='.$niveau02->getLabel(), $this->baseniveau02); } $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } - - - public function deleteNiveau02(Niveau02 $niveau02){ + public function deleteNiveau02(Niveau02 $niveau02) + { $dn = $this->getNiveau02DN($niveau02->getLabel()); + return $this->deleteByDN($dn); } - private function getObjectClassesNiveau02() { - $oc = array( + private function getObjectClassesNiveau02() + { + $oc = [ 'top', 'posixGroup', - ); + ]; return $oc; } - - public function listAttributesNiveau02() { + + public function listAttributesNiveau02() + { return [ - "cn", - "gidnumber", - "memberuid" + 'cn', + 'gidnumber', + 'memberuid', ]; } - - public function fillAttributesNiveau02(Niveau02 $niveau02, array &$attrs) { - $attrs['cn'] = $niveau02->getLabel(); - $attrs['gidnumber'] = $niveau02->getId(); + + public function fillAttributesNiveau02(Niveau02 $niveau02, array &$attrs) + { + $attrs['cn'] = $niveau02->getLabel(); + $attrs['gidnumber'] = $niveau02->getId(); $attrs['memberuid'] = []; - foreach($niveau02->getUsers() as $user) { - array_push($attrs['memberuid'],$user->getUsername()); + foreach ($niveau02->getUsers() as $user) { + array_push($attrs['memberuid'], $user->getUsername()); } sort($attrs['memberuid']); - if(count($attrs['memberuid'])==1) $attrs['memberuid'] = $attrs['memberuid'][0]; - + if (1 == count($attrs['memberuid'])) { + $attrs['memberuid'] = $attrs['memberuid'][0]; + } } - public function getNiveau02DN($id) { + public function getNiveau02DN($id) + { return 'cn='.$id.','.$this->baseniveau02; } -//================================================================================================================================================================== -//== Function Group================================================================================================================================================= -//================================================================================================================================================================== - - public function addGroup(Group $group) { + // ================================================================================================================================================================== + // == Function Group================================================================================================================================================= + // ================================================================================================================================================================== + public function addGroup(Group $group) + { $connection = $this->connect(); $dn = $this->getGroupDN($group->getLabel()); - $attrs = array(); + $attrs = []; $attrs['objectclass'] = $this->getObjectClassesGroup(); $this->fillAttributesGroup($group, $attrs); - foreach($attrs as $key => $value){ - if(empty($value)){ + foreach ($attrs as $key => $value) { + if (empty($value)) { unset($attrs[$key]); } } $result = ldap_add($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } return $result; } - public function ismodifyGroup(Group $group,$entry){ + public function ismodifyGroup(Group $group, $entry) + { $attrs = []; $this->fillAttributesGroup($group, $attrs); - foreach($attrs as $key => $value) { - if(!array_key_exists($key,$entry)&&!empty($value)) return true; - elseif(array_key_exists($key,$entry)&&$value!=$entry[$key]) return true; + foreach ($attrs as $key => $value) { + if (!array_key_exists($key, $entry) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $entry) && $value != $entry[$key]) { + return true; + } } - foreach($entry as $key => $value) { - if(!array_key_exists($key,$attrs)&&!empty($value)) return true; - elseif(array_key_exists($key,$attrs)&&$value!=$attrs[$key]) return true; + foreach ($entry as $key => $value) { + if (!array_key_exists($key, $attrs) && !empty($value)) { + return true; + } elseif (array_key_exists($key, $attrs) && $value != $attrs[$key]) { + return true; + } } return false; } - public function modifyGroup(Group $group,$oldid){ + public function modifyGroup(Group $group, $oldid) + { $dn = $this->basedn; $connection = $this->connect(); - $attrs = array(); + $attrs = []; $this->fillAttributesGroup($group, $attrs); - unset($attrs["cn"]); + unset($attrs['cn']); $dn = $this->getGroupDN($group->getLabel()); - - foreach($attrs as $key => $value){ - if(empty($value)){ + + foreach ($attrs as $key => $value) { + if (empty($value)) { // Bien mettre un @ car si l'attribut est déjà vide cela crache une erreur car l'attribut n'existe déjà plus - @ldap_mod_del($connection, $dn, array($key => array())); + @ldap_mod_del($connection, $dn, [$key => []]); unset($attrs[$key]); } } - if(isset($oldid)&&$oldid!=$group->getLabel()) { + if (isset($oldid) && $oldid != $group->getLabel()) { $olddn = $this->getGroupDN($oldid); - $this->rename($olddn,"cn=".$group->getLabel(),$this->basegroup); + $this->rename($olddn, 'cn='.$group->getLabel(), $this->basegroup); } $result = ldap_modify($connection, $dn, $attrs); - if(!$result) $this->ldapError(); + if (!$result) { + $this->ldapError(); + } } - public function deleteGroup(Group $group){ + public function deleteGroup(Group $group) + { $dn = $this->getGroupDN($group->getLabel()); + return $this->deleteByDN($dn); } - private function getObjectClassesGroup() { - $oc = array( + private function getObjectClassesGroup() + { + $oc = [ 'top', 'posixGroup', - ); + ]; + return $oc; } - public function listAttributesGroup() { + public function listAttributesGroup() + { return [ - "cn", - "gidnumber", - "memberuid" + 'cn', + 'gidnumber', + 'memberuid', ]; } - public function fillAttributesGroup(Group $group, array &$attrs) { - $attrs['cn'] = $group->getLabel(); + public function fillAttributesGroup(Group $group, array &$attrs) + { + $attrs['cn'] = $group->getLabel(); $attrs['gidnumber'] = $group->getId(); - $attrs['memberuid'] = []; - foreach($group->getUsers() as $usergroup) { - array_push($attrs['memberuid'],$usergroup->getUser()->getUsername()); + foreach ($group->getUsers() as $usergroup) { + array_push($attrs['memberuid'], $usergroup->getUser()->getUsername()); } sort($attrs['memberuid']); - if(count($attrs['memberuid'])==1) $attrs['memberuid'] = $attrs['memberuid'][0]; + if (1 == count($attrs['memberuid'])) { + $attrs['memberuid'] = $attrs['memberuid'][0]; + } } - public function getGroupDN($id) { + public function getGroupDN($id) + { return 'cn='.$id.','.$this->basegroup; } -//================================================================================================================================================================== -//== Function UserGroup============================================================================================================================================= -//================================================================================================================================================================== + // ================================================================================================================================================================== + // == Function UserGroup============================================================================================================================================= + // ================================================================================================================================================================== - function addUserGroup(UserGroup $usergroup) { + public function addUserGroup(UserGroup $usergroup) + { $dn = $this->basedn; $connection = $this->connect(); - + // On recherche le group en cours $criteria = '(cn='.$usergroup->getGroup()->getLabel().')'; - $subbranch=$this->basegroup; - $result = $this->search($criteria, array('memberuid'), $subbranch); + $subbranch = $this->basegroup; + $result = $this->search($criteria, ['memberuid'], $subbranch); - if(!$this->in_array_r($usergroup->getUser()->getUsername(),$result[0])) { + if (!$this->in_array_r($usergroup->getUser()->getUsername(), $result[0])) { $dn = $this->getGroupDN($usergroup->getGroup()->getLabel()); - $entry['memberuid'] = $usergroup->getUser()->getUsername(); - $result = ldap_mod_add($connection, $dn, $entry); - if(!$result) $this->ldapError(); + $entry['memberuid'] = $usergroup->getUser()->getUsername(); + $result = ldap_mod_add($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); + } } return $result; } - function delUserGroup(UserGroup $usergroup) { + public function delUserGroup(UserGroup $usergroup) + { $dn = $this->basedn; $connection = $this->connect(); - + // On recherche le group en cours $criteria = '(cn='.$usergroup->getGroup()->getLabel().')'; - $subbranch=$this->basegroup; - $result = $this->search($criteria, array('memberuid'), $subbranch); + $subbranch = $this->basegroup; + $result = $this->search($criteria, ['memberuid'], $subbranch); - if($this->in_array_r($usergroup->getUser()->getUsername(),$result[0])) { + if ($this->in_array_r($usergroup->getUser()->getUsername(), $result[0])) { $dn = $this->getGroupDN($usergroup->getGroup()->getLabel()); - $entry['memberuid'] = $usergroup->getUser()->getUsername(); - $result = ldap_mod_del($connection, $dn, $entry); - if(!$result) $this->ldapError(); + $entry['memberuid'] = $usergroup->getUser()->getUsername(); + $result = ldap_mod_del($connection, $dn, $entry); + if (!$result) { + $this->ldapError(); + } } return $result; diff --git a/src/Service/MailService.php b/src/Service/MailService.php index 260b8f4..e73cbc6 100644 --- a/src/Service/MailService.php +++ b/src/Service/MailService.php @@ -1,52 +1,54 @@ mailer = $mailer; $this->twig = $twig; } - + /** - * Send email + * Send email. * - * @param string $template email template - * @param mixed $parameters custom params for template - * @param string $to to email address or array of email addresses - * @param string $from from email address - * @param string $fromName from name + * @param string $template email template + * @param mixed $parameters custom params for template + * @param string $to to email address or array of email addresses + * @param string $from from email address + * @param string $fromName from name * - * @return boolean send status + * @return bool send status */ public function sendEmail($subject, $body, $to, $from, $fromName = null) { $template = $this->twig->load('Home/mail.html.twig'); - - $parameters=["subject"=>$subject,"body"=>$body]; - $subject = $template->renderBlock('subject', $parameters); - $bodyHtml = $template->renderBlock('body', $parameters); - - try { - if(!is_array($to)) $to=[$to]; - foreach($to as $t) { + $parameters = ['subject' => $subject, 'body' => $body]; + $subject = $template->renderBlock('subject', $parameters); + $bodyHtml = $template->renderBlock('body', $parameters); + + try { + if (!is_array($to)) { + $to = [$to]; + } + + foreach ($to as $t) { $message = (new Email()) ->subject($subject) - ->from(Address::create($fromName. "<".$from.">")) + ->from(Address::create($fromName.'<'.$from.'>')) ->to($t) ->html($bodyHtml); $this->mailer->send($message); - } } catch (TransportExceptionInterface $e) { return $e->getMessage(); @@ -54,4 +56,4 @@ class MailService return true; } -} \ No newline at end of file +} diff --git a/src/Service/MinioService.php b/src/Service/MinioService.php index 9dd14e2..d963f83 100644 --- a/src/Service/MinioService.php +++ b/src/Service/MinioService.php @@ -4,16 +4,14 @@ namespace App\Service; use Aws\S3\Exception\S3Exception; use Exception; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Filesystem\Filesystem; - +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class MinioService { - const ERR_UNAVAILABLE = 'Service de gestion de fichiers momentanément indisponible.'; - const ERR_FILE_NOT_FOUND = 'messages.minio.404'; - + public const ERR_UNAVAILABLE = 'Service de gestion de fichiers momentanément indisponible.'; + public const ERR_FILE_NOT_FOUND = 'messages.minio.404'; + private $rootPath; private $client; private $listClient; @@ -26,7 +24,7 @@ class MinioService { $this->rootPath = $rootPath; $this->minioBucket = $minioBucket; - $this->minioPathStyle = ($minioPathstyle==1?true:false); + $this->minioPathStyle = (1 == $minioPathstyle ? true : false); $this->minioRoot = $minioRoot; $this->client = $this->getClient($minioUrl, $minioKey, $minioSecret, $minioPathstyle, $minioSecure); $this->initBucket(); @@ -36,11 +34,11 @@ class MinioService { // On s'assure que le repertoire temporaire de destination existe bien $fs = new Filesystem(); - $tmpdir=$this->rootPath."/var/tmp"; - $fs->mkdir($tmpdir."/".dirname($filename)); + $tmpdir = $this->rootPath.'/var/tmp'; + $fs->mkdir($tmpdir.'/'.dirname($filename)); // Approche repassant par le serveur d'appel - if(!$usecache||!$fs->exists($tmpdir.'/'.$filename)) { + if (!$usecache || !$fs->exists($tmpdir.'/'.$filename)) { try { $result = $this->client->getObject([ 'Bucket' => $this->minioBucket, @@ -51,11 +49,11 @@ class MinioService switch ($e->getResponse()->getStatusCode()) { case 404: throw new NotFoundHttpException(self::ERR_FILE_NOT_FOUND); - break; + break; default: \Sentry\captureException($e); throw new Exception(self::ERR_UNAVAILABLE); - break; + break; } } catch (Exception $e) { \Sentry\captureException($e); @@ -80,8 +78,8 @@ class MinioService } if ($deleteSource) { - $tmpdir=$this->rootPath."/var/tmp"; - @unlink($tmpdir."/".$filename); + $tmpdir = $this->rootPath.'/var/tmp'; + @unlink($tmpdir.'/'.$filename); } } @@ -135,7 +133,7 @@ class MinioService */ public function countKeys(string $prefix) { - //On utilise un path spécifique car listObjectsV2 utilise une autre config de client + // On utilise un path spécifique car listObjectsV2 utilise une autre config de client try { $response = $this->client->listObjectsV2([ 'Bucket' => $this->minioBucket, @@ -156,7 +154,7 @@ class MinioService */ public function listKeys(string $prefix) { - //On utilise un path spécifique car listObjectsV2 utilise une autre config de client + // On utilise un path spécifique car listObjectsV2 utilise une autre config de client try { $response = $this->client->listObjectsV2([ 'Bucket' => $this->minioBucket, @@ -177,21 +175,19 @@ class MinioService * @param string $filename Nom du fichier dans la réponse * @param bool $returnFile Retourner un fichier ou une réponse */ - - protected function getClient($minioUrl, $minioKey, $minioSecret, bool $minioPathstyle, bool $minioSecure) { $client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'eu-west-1', 'endpoint' => $minioUrl, - //On force le mode DNS + // On force le mode DNS 'use_path_style_endpoint' => $minioPathstyle, 'credentials' => [ 'key' => $minioKey, 'secret' => $minioSecret, ], - //On désactive les checks SSL pour le moment + // On désactive les checks SSL pour le moment 'http' => [ 'verify' => $minioSecure, ], diff --git a/src/Service/PasswordEncoder.php b/src/Service/PasswordEncoder.php index acc1010..357e569 100644 --- a/src/Service/PasswordEncoder.php +++ b/src/Service/PasswordEncoder.php @@ -1,35 +1,36 @@ isPasswordTooLong($plainPassword)) { throw new InvalidPasswordException(); } - $hash = "{SSHA}" . base64_encode(pack("H*", sha1($plainPassword . $salt)) . $salt); + $hash = '{SSHA}'.base64_encode(pack('H*', sha1($plainPassword.$salt)).$salt); + return $hash; } - + public function verify(string $hashedPassword, string $plainPassword, string $salt = null): bool { if ('' === $plainPassword || $this->isPasswordTooLong($plainPassword)) { return false; } - - return $this->hash($plainPassword,$salt) === $hashedPassword; + + return $this->hash($plainPassword, $salt) === $hashedPassword; } - + public function needsRehash(string $hashedPassword): bool { return false; } -} \ No newline at end of file +} diff --git a/src/Service/UploadListener.php b/src/Service/UploadListener.php index 013475f..6bfae33 100644 --- a/src/Service/UploadListener.php +++ b/src/Service/UploadListener.php @@ -1,9 +1,9 @@ minio = $minio; } - protected function getHeight($image) { + protected function getHeight($image) + { $size = getimagesize($image); $height = $size[1]; + return $height; } // Cacul de la largeur - protected function getWidth($image) { + protected function getWidth($image) + { $size = getimagesize($image); $width = $size[0]; + return $width; } - protected function resizeImage($image,$width,$height,$scale) { + protected function resizeImage($image, $width, $height, $scale) + { list($imagewidth, $imageheight, $imageType) = getimagesize($image); $imageType = image_type_to_mime_type($imageType); $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); - $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); - $source=null; - - switch($imageType) { - case "image/gif": - $source=imagecreatefromgif($image); + $newImage = imagecreatetruecolor($newImageWidth, $newImageHeight); + $source = null; + + switch ($imageType) { + case 'image/gif': + $source = imagecreatefromgif($image); break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": - $source=imagecreatefromjpeg($image); + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': + $source = imagecreatefromjpeg($image); break; - case "image/png": - case "image/x-png": - $source=imagecreatefrompng($image); + case 'image/png': + case 'image/x-png': + $source = imagecreatefrompng($image); break; } - $newImage = imagecreatetruecolor( $newImageWidth, $newImageHeight ); - imagealphablending( $newImage, false ); - imagesavealpha( $newImage, true ); - imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height); + $newImage = imagecreatetruecolor($newImageWidth, $newImageHeight); + imagealphablending($newImage, false); + imagesavealpha($newImage, true); + imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newImageWidth, $newImageHeight, $width, $height); - switch($imageType) { - case "image/gif": - imagegif($newImage,$image); + switch ($imageType) { + case 'image/gif': + imagegif($newImage, $image); break; - case "image/pjpeg": - case "image/jpeg": - case "image/jpg": - imagejpeg($newImage,$image,90); + case 'image/pjpeg': + case 'image/jpeg': + case 'image/jpg': + imagejpeg($newImage, $image, 90); break; - case "image/png": - case "image/x-png": - imagepng($newImage,$image); + case 'image/png': + case 'image/x-png': + imagepng($newImage, $image); break; } chmod($image, 0640); + return $image; } public function onUpload(PostPersistEvent $event) { - $type=$event->getType(); - - switch($type) { + $type = $event->getType(); + + switch ($type) { default: - $file=$event->getFile(); - $filename=$file->getFilename(); + $file = $event->getFile(); + $filename = $file->getFilename(); $response = $event->getResponse(); $response['file'] = $filename; - $this->minio->upload($file,$type."/".$filename,true); - break; + $this->minio->upload($file, $type.'/'.$filename, true); + break; } } } diff --git a/src/Twig/AppExtension.php b/src/Twig/AppExtension.php index d66adc1..9abf8a6 100644 --- a/src/Twig/AppExtension.php +++ b/src/Twig/AppExtension.php @@ -1,10 +1,10 @@ container = $container; - } -} \ No newline at end of file + } +} diff --git a/src/Validator/Grouplabel.php b/src/Validator/Grouplabel.php index 0fac9a1..432f2ee 100644 --- a/src/Validator/Grouplabel.php +++ b/src/Validator/Grouplabel.php @@ -1,4 +1,5 @@ context->addViolation($constraint->message); - } + } } -} \ No newline at end of file +} diff --git a/src/Validator/Niveau01unique.php b/src/Validator/Niveau01unique.php index 2bdd764..94a1b64 100644 --- a/src/Validator/Niveau01unique.php +++ b/src/Validator/Niveau01unique.php @@ -1,4 +1,5 @@ em = $em; + $this->em = $em; } public function validate($value, Constraint $constraint) { - $group = $this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$value]); - if($group) { + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $value]); + if ($group) { $this->context->addViolation($constraint->messagegroup); } - $niveau02 = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(["label"=>$value]); - if($niveau02) { + $niveau02 = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]); + if ($niveau02) { $this->context->addViolation($constraint->messageniveau02); } } -} \ No newline at end of file +} diff --git a/src/Validator/Niveau02unique.php b/src/Validator/Niveau02unique.php index 3bd3b02..cd4fb5f 100644 --- a/src/Validator/Niveau02unique.php +++ b/src/Validator/Niveau02unique.php @@ -1,4 +1,5 @@ em = $em; + $this->em = $em; } public function validate($value, Constraint $constraint) { - $group = $this->em->getRepository("App\Entity\Group")->findOneBy(["label"=>$value]); - if($group) { + $group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $value]); + if ($group) { $this->context->addViolation($constraint->messagegroup); } - $niveau02 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(["label"=>$value]); - if($niveau02) { + $niveau02 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]); + if ($niveau02) { $this->context->addViolation($constraint->messageniveau01); } } -} \ No newline at end of file +} diff --git a/src/Validator/Password.php b/src/Validator/Password.php index 0022c28..48a8d36 100644 --- a/src/Validator/Password.php +++ b/src/Validator/Password.php @@ -1,4 +1,5 @@ context->addViolation($constraint->message); - } - elseif(!preg_match("#[0-9]+#",$value)) { + } elseif (!preg_match('#[0-9]+#', $value)) { + $this->context->addViolation($constraint->message); + } elseif (!preg_match('#[a-zA-Z]+#', $value)) { + $this->context->addViolation($constraint->message); + } elseif (!preg_match("/[|!@#$%&*\/=?,;.:\-_+~^\\\]/", $value)) { $this->context->addViolation($constraint->message); } - elseif(!preg_match("#[a-zA-Z]+#",$value)) { - $this->context->addViolation($constraint->message); - } - elseif(!preg_match("/[|!@#$%&*\/=?,;.:\-_+~^\\\]/",$value)) { - $this->context->addViolation($constraint->message); - } - } + } } -} \ No newline at end of file +} diff --git a/src/Validator/Userusername.php b/src/Validator/Userusername.php index 83b54a0..b605dfe 100644 --- a/src/Validator/Userusername.php +++ b/src/Validator/Userusername.php @@ -1,4 +1,5 @@ em = $em; + $this->em = $em; } public function validate($value, Constraint $constraint) { - if(!empty($value)) { + if (!empty($value)) { // On s'assure que le login soit de 5 caractères minimum if (strlen($value) < '5') { $this->context->addViolation($constraint->messageinvalid); @@ -27,15 +28,15 @@ class UserusernameValidator extends ConstraintValidator // On s'assure que le username ne contient pas des caractères speciaux $string = preg_replace('~[^@a-zA-Z0-9._-]~', '', $value); - if($string!=$value) + if ($string != $value) { $this->context->addViolation($constraint->messageinvalid); + } // On s'assure que le username n'existe pas dans la table des registration - $registration = $this->em->getRepository("App\Entity\Registration")->findOneBy(["username"=>$value]); - if($registration) { + $registration = $this->em->getRepository("App\Entity\Registration")->findOneBy(['username' => $value]); + if ($registration) { $this->context->addViolation($constraint->messagenotunique); } - - } + } } -} \ No newline at end of file +}