Merge branch 'master' into dist/envole/6/master

This commit is contained in:
Arnaud Fornerot 2019-10-16 13:55:20 +02:00
commit df29e2ca71
11 changed files with 80 additions and 24 deletions

View File

@ -38,6 +38,7 @@ class InitDataCommand extends ContainerAwareCommand
$em = $this->getContainer()->get('doctrine')->getEntityManager(); $em = $this->getContainer()->get('doctrine')->getEntityManager();
$masteridentity=$this->getContainer()->getParameter('masteridentity'); $masteridentity=$this->getContainer()->getParameter('masteridentity');
$ldap_template = $this->getContainer()->getParameter('ldap_template');
$finder = new Finder(); $finder = new Finder();
$finder->in('src/Cadoles/CoreBundle/Command/data'); $finder->in('src/Cadoles/CoreBundle/Command/data');
@ -138,7 +139,12 @@ class InitDataCommand extends ContainerAwareCommand
if(!$niveau01) { if(!$niveau01) {
// Si ce n'est pas le cas on positionne un filtre ultra large sur le niveau01 de base // Si ce n'est pas le cas on positionne un filtre ultra large sur le niveau01 de base
$niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100); $niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
$niveau01->setLdapfilter("(uid=*)");
if($ldap_template=="scribe")
$niveau01->setLdapfilter("(&(uid=*)(objectclass=inetOrgPerson)(!(description=Computer)))");
else
$niveau01->setLdapfilter("(uid=*)");
$em->persist($niveau01); $em->persist($niveau01);
$em->flush(); $em->flush();
} }

View File

@ -132,6 +132,7 @@ class SynchroCommand extends Command
$this->writeln(" - $label"); $this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true); if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
// Classes
$this->writeln(''); $this->writeln('');
$this->writeln('== CLASSES =========================================='); $this->writeln('== CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn); $results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
@ -143,6 +144,32 @@ class SynchroCommand extends Command
$this->writeln(" - $label"); $this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true); if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
} }
// Options
$this->writeln('');
$this->writeln('== OPTIONS ==========================================');
$results = $this->ldap->search("type=Option", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(|(&(type=Option)(cn=$cn))(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="OPTION = ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
}
// Groupes
$this->writeln('');
$this->writeln('== GROUPES ==========================================');
$results = $this->ldap->search("type=Groupe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Groupe)(cn=$cn))";
$label="GROUPE = ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
}
} }
$this->writeln(''); $this->writeln('');
@ -620,7 +647,7 @@ class SynchroCommand extends Command
$criteria = '(cn=*)'; $criteria = '(cn=*)';
$subbranch=$baseGroup; $subbranch=$baseGroup;
$results = $this->search($criteria, array('cn'), $subbranch); $results = $this->ldap->search($criteria, array('cn'), $subbranch);
foreach($results as $result) { foreach($results as $result) {
$data = $this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('label' => $result["cn"])); $data = $this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('label' => $result["cn"]));
if($data) $this->writeln(' - Existe dans bundle >> '.$result["cn"]); if($data) $this->writeln(' - Existe dans bundle >> '.$result["cn"]);

View File

@ -5,11 +5,10 @@ SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'DRAAF', '130007107'); (-100, 'scribe26', '0000000A');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}M+3m6aLkROJycqRqpYLqd0X6BOfvLMZm (-100, -100, 'admin', 'Administrateur', 'scribe26', 'PWD_CAS', 'admin@scribe26.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '0000000A', 'simple');
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');
@ -25,7 +24,6 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f
(1200, NULL, 1200, 'ORGANISATION', NULL, 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''), (1200, NULL, 1200, 'ORGANISATION', NULL, 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1210, 1200, 1210, 'Listes Blanche', 'cadoles_core_config_whitelist', 'fa-tasks', 'ROLE_ADMIN,ROLE_MODO', ''), (1210, 1200, 1210, 'Listes Blanche', 'cadoles_core_config_whitelist', 'fa-tasks', 'ROLE_ADMIN,ROLE_MODO', ''),
(1220, 1200, 1220, 'Niveau 01', 'cadoles_core_config_niveau01', 'fa-building', 'ROLE_ADMIN,ROLE_MODO', ''), (1220, 1200, 1220, 'Niveau 01', 'cadoles_core_config_niveau01', 'fa-building', 'ROLE_ADMIN,ROLE_MODO', ''),
(1230, 1200, 1230, 'Niveau 02', 'cadoles_core_config_niveau02', 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1240, 1200, 1240, 'Groupes', 'cadoles_core_config_group', 'fa-users', 'ROLE_ADMIN,ROLE_MODO', ''), (1240, 1200, 1240, 'Groupes', 'cadoles_core_config_group', 'fa-users', 'ROLE_ADMIN,ROLE_MODO', ''),
(1250, 1200, 1250, 'Inscriptions', 'cadoles_core_config_registration', 'fa-pencil-square-o', 'ROLE_ADMIN,ROLE_MODO', ''), (1250, 1200, 1250, 'Inscriptions', 'cadoles_core_config_registration', 'fa-pencil-square-o', 'ROLE_ADMIN,ROLE_MODO', ''),
(1260, 1200, 1260, 'Utilisateurs', 'cadoles_core_config_user', 'fa-child', 'ROLE_ADMIN,ROLE_MODO', ''), (1260, 1200, 1260, 'Utilisateurs', 'cadoles_core_config_user', 'fa-child', 'ROLE_ADMIN,ROLE_MODO', ''),

View File

@ -54,6 +54,7 @@ class RestController extends Controller
$output["bookmarks"] = []; $output["bookmarks"] = [];
$output["items"] = []; $output["items"] = [];
$output["itemcategorys"] = []; $output["itemcategorys"] = [];
$output["groups"] = [];
$bookmarks=null; $bookmarks=null;
$items=null; $items=null;
@ -61,6 +62,7 @@ class RestController extends Controller
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/"; $weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,3); $em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,3);
$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->getPagesUser($user,null,$entity,$pagesuser,$pagesadmin,$groupsshared);
// Construction de la réponse // Construction de la réponse
$output["user"]["firstname"] = $user->getFirstname(); $output["user"]["firstname"] = $user->getFirstname();
@ -69,6 +71,7 @@ class RestController extends Controller
$output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar(); $output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output["user"]["niveau01"] = $user->getNiveau01()->getLabel(); $output["user"]["niveau01"] = $user->getNiveau01()->getLabel();
$output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null); $output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null);
$output["user"]["role"] = $user->getRole();
if($bookmarks) { if($bookmarks) {
foreach($bookmarks as $bookmark) { foreach($bookmarks as $bookmark) {
@ -114,6 +117,16 @@ class RestController extends Controller
} }
} }
if($groupsshared) {
foreach($groupsshared as $groupshared) {
$tmp=[];
$tmp["id"] = $groupshared->getId();
$tmp["title"] = $groupshared->getLabel();
array_push($output["groups"],$tmp);
}
}
// Retour // Retour

View File

@ -128,3 +128,6 @@ services:
cadoles.saml_attribute_mapper: cadoles.saml_attribute_mapper:
public: true public: true
class: Cadoles\CoreBundle\Service\samlAttributeMapperService class: Cadoles\CoreBundle\Service\samlAttributeMapperService

View File

@ -72,7 +72,7 @@ body.simple {
.grid .grid-preview { .grid .grid-preview {
width: 15%; width: 15%;
min-width: 142px; min-width: 138px;
} }
.grid .grid-preview .grid-item-title { .grid .grid-preview .grid-item-title {

View File

@ -133,7 +133,7 @@
<div id="page-wrapper" class="{% if maxwidth is defined and maxwidth %} page-maxed {% endif %}" style="min-height:1200px; {% if not usesidebar %} margin:0px; {% endif %}{% if not useheader %} background-color:transparent; padding: 5px 25px 10px 15px; {% endif %} "> <div id="page-wrapper" class="{% if maxwidth is defined and maxwidth %} page-maxed {% endif %}" style="min-height:1200px; {% if not usesidebar %} margin:0px; {% endif %}{% if not useheader %} background-color:transparent; {% endif %} ">
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
{% block pagewrapper %} {% block pagewrapper %}

View File

@ -48,8 +48,6 @@ class CronCommand extends ContainerAwareCommand
return 0; return 0;
} }
$this->filesystem->appendToFile($this->rootlog.'cron.lock', "lock");
$crons = $entityManager->getRepository('CadolesCronBundle:Cron')->toexec(); $crons = $entityManager->getRepository('CadolesCronBundle:Cron')->toexec();
$i=0; $i=0;
@ -65,9 +63,22 @@ class CronCommand extends ContainerAwareCommand
$this->writeln ('Date = '.$now->format('Y-m-d H:i:s')); $this->writeln ('Date = '.$now->format('Y-m-d H:i:s'));
} }
// Cas particulier de la synchro
// Dans la synchro il y a un clear du manager ce qui perturbe totalement le manager de Core:Exec
// Il pert le lien avec la boucle sur crons
// Alors si dans le cron il y a la synchro alors on n'execute que lui le reste sera executé lors du prochain passage
$cronsynchro=$entityManager->getRepository('CadolesCronBundle:Cron')->find(100);
if($cronsynchro&&in_array($cronsynchro,$crons)) {
$crons=[$cronsynchro];
}
foreach($crons as $cron) { foreach($crons as $cron) {
$i++; $i++;
// Id du cron
$idcron = $cron->getId();
// Flag d'execution en cours // Flag d'execution en cours
$now=new \DateTime(); $now=new \DateTime();
$cron->setStartexecdate($now); $cron->setStartexecdate($now);
@ -96,6 +107,10 @@ class CronCommand extends ContainerAwareCommand
// Executer la commande // Executer la commande
try{ try{
$returnCode = $command->run($parameter, $output); $returnCode = $command->run($parameter, $output);
// Revenir sur le cron encours à cause du clear du manager présent dans la synchro
// Sinon le manager se pomme et génère des nouveaux enregistrement plutot que mettre à jour celui en cours
$cron=$entityManager->getRepository('CadolesCronBundle:Cron')->find($idcron);
} }
catch(\Exception $e) { catch(\Exception $e) {
$this->writelnred("JOB EN ERREUR"); $this->writelnred("JOB EN ERREUR");

View File

@ -42,6 +42,11 @@ class InitDataCommand extends ContainerAwareCommand
} }
protected function insertCron() { protected function insertCron() {
$metadata = $this->entityManager->getClassMetaData('CadolesCronBundle:Cron');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
$metadata->setIdGenerator(new AssignedGenerator());
// Job Mail // Job Mail
// Toute les minutes // Toute les minutes
$entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(1); $entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(1);
@ -60,11 +65,6 @@ class InitDataCommand extends ContainerAwareCommand
} }
// afin de forcer les ID sur certaines entités
$metadata = $this->entityManager->getClassMetaData(get_class($entity));
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
$metadata->setIdGenerator(new AssignedGenerator());
// Job synchronisation des comptes utilisateur // Job synchronisation des comptes utilisateur
// Toute les 24h à 3h00 // Toute les 24h à 3h00
$entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(100); $entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(100);
@ -83,7 +83,6 @@ class InitDataCommand extends ContainerAwareCommand
$entity->setJsonargument('{"simulate":"false"}'); $entity->setJsonargument('{"simulate":"false"}');
$this->entityManager->persist($entity); $this->entityManager->persist($entity);
} }
// Job purge des registrations obsolètes // Job purge des registrations obsolètes
// Toute les 5mn // Toute les 5mn
$entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(110); $entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(110);
@ -99,7 +98,6 @@ class InitDataCommand extends ContainerAwareCommand
$entity->setNextexecdate($entity->getSubmitdate()); $entity->setNextexecdate($entity->getSubmitdate());
$this->entityManager->persist($entity); $this->entityManager->persist($entity);
} }
// Job de purge des fichiers obsolète // Job de purge des fichiers obsolète
// Toute les 24h à 3h00 // Toute les 24h à 3h00
$entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(200); $entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(200);
@ -117,7 +115,6 @@ class InitDataCommand extends ContainerAwareCommand
$entity->setNextexecdate($nextdate); $entity->setNextexecdate($nextdate);
$this->entityManager->persist($entity); $this->entityManager->persist($entity);
} }
// CRON PORTAIL // CRON PORTAIL
// Job purge des registrations obsolètes // Job purge des registrations obsolètes
// Toute les 5mn // Toute les 5mn
@ -139,7 +136,6 @@ class InitDataCommand extends ContainerAwareCommand
elseif($entity&&!($portal_activate||$calendar_activate)) { elseif($entity&&!($portal_activate||$calendar_activate)) {
$this->entityManager->remove($entity); $this->entityManager->remove($entity);
} }
// Job de récupération des sondages Limesurvey // Job de récupération des sondages Limesurvey
// Toute les 6h // Toute les 6h
$activate_widlimesurvey = $this->getContainer()->getParameter('activate_widlimesurvey'); $activate_widlimesurvey = $this->getContainer()->getParameter('activate_widlimesurvey');
@ -161,7 +157,6 @@ class InitDataCommand extends ContainerAwareCommand
elseif($entity&&!$activate_widlimesurvey) { elseif($entity&&!$activate_widlimesurvey) {
$this->entityManager->remove($entity); $this->entityManager->remove($entity);
} }
// Job de récupération des cours Moodle // Job de récupération des cours Moodle
// Toute les 6h // Toute les 6h
$activate_widmoodle = $this->getContainer()->getParameter('activate_widmoodle'); $activate_widmoodle = $this->getContainer()->getParameter('activate_widmoodle');
@ -183,7 +178,6 @@ class InitDataCommand extends ContainerAwareCommand
elseif($entity&&!$activate_widmoodle) { elseif($entity&&!$activate_widmoodle) {
$this->entityManager->remove($entity); $this->entityManager->remove($entity);
} }
$this->entityManager->flush(); $this->entityManager->flush();
} }
} }

View File

@ -9,7 +9,7 @@
} }
{% else %} {% else %}
#page-wrapper { #page-wrapper {
//padding: 5px 25px 0px 15px; padding: 5px 25px 0px 15px;
//background: transparent; //background: transparent;
} }
{% endif %} {% endif %}