diff --git a/src/nineschool-1.0/src/Command/SynchroUsersCommand.php b/src/nineschool-1.0/src/Command/SynchroUsersCommand.php
index 29e981d..bfedf56 100644
--- a/src/nineschool-1.0/src/Command/SynchroUsersCommand.php
+++ b/src/nineschool-1.0/src/Command/SynchroUsersCommand.php
@@ -7,22 +7,17 @@ use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Doctrine\ORM\EntityManagerInterface;
-use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Filesystem\Filesystem;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
+use Symfony\Component\Security\Core\Encoder\EncoderFactory;
+use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
use Ramsey\Uuid\Uuid;
-use App\Entity\Group as Group;
-use App\Entity\User as User;
-use App\Entity\Answer as Answer;
-use App\Entity\Message as Message;
-
-use App\Service\mailService;
+use App\Entity\Group;
+use App\Entity\User;
class SynchroUsersCommand extends Command
{
private $container;
- private $router;
private $em;
private $output;
private $filesystem;
@@ -30,15 +25,12 @@ class SynchroUsersCommand extends Command
private $ldap;
private $ldap_basedn;
private $ldapgroups=[];
- private $mail;
- public function __construct(ContainerInterface $container,EntityManagerInterface $em,RouterInterface $router, mailService $mail)
+ public function __construct(ContainerInterface $container,EntityManagerInterface $em)
{
parent::__construct();
$this->container = $container;
$this->em = $em;
- $this->router = $router;
- $this->mail = $mail;
}
protected function configure()
@@ -110,6 +102,17 @@ class SynchroUsersCommand extends Command
$ldapusers = array();
$ldapmails = array();
+ // Suppression des groupe ninegate
+ $groups=$this->em->getRepository("App:Group")->findAll();
+ foreach($groups as $group) {
+ if($group->getIdexternal()) {
+ $this->writeln(" - Suppression dans Bundle >> ".$group->getName());
+ if(!$simulate) {
+ $this->em->remove($group);
+ $this->em->flush();
+ }
+ }
+ }
if($ldap_model=="scribe") {
$this->writeln('');
@@ -155,6 +158,32 @@ class SynchroUsersCommand extends Command
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
}
+ // Elèves des Classes
+ $this->writeln('');
+ $this->writeln('== ELEVES DES CLASSES ==========================================');
+ $results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
+ foreach($results as $result) {
+ $cn=$result["cn"];
+ $ldapfilter="(&(type=Classe)(cn=$cn))";
+
+ $label="ELEVES DE LA CLASSE - ".$result["cn"];
+ $this->writeln(" - $label");
+ if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
+ }
+
+ // Professeurs des Classes
+ $this->writeln('');
+ $this->writeln('== PROFESSEURS DES CLASSES ==========================================');
+ $results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
+ foreach($results as $result) {
+ $cn=$result["cn"];
+ $ldapfilter="(|(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
+
+ $label="PROFESSEURS DE LA CLASSE - ".$result["cn"];
+ $this->writeln(" - $label");
+ if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
+ }
+
// Options
$this->writeln('');
$this->writeln('== OPTIONS ==========================================');
@@ -387,15 +416,6 @@ class SynchroUsersCommand extends Command
$this->writeln('== GROUPS ============================================');
$groups=$this->em->getRepository("App:Group")->findAll();
foreach($groups as $group) {
- if($group->getIdexternal()) {
- $this->writeln(" - Suppression dans Bundle >> ".$group->getName());
- if(!$simulate) {
- $this->em->remove($group);
- $this->em->flush();
-
- }
- }
-
if(!$group->getLdapfilter()) continue;
if(!in_array($group->getId(),$this->ldapgroups)) {
@@ -424,12 +444,25 @@ class SynchroUsersCommand extends Command
$this->writeln('== SYNCHONISATION NINEGATE TO BUNDLE ================');
$this->writeln('=====================================================');
+
+ // Suppression des groupe annuaire
+ $groups=$this->em->getRepository("App:Group")->findAll();
+ foreach($groups as $group) {
+ if($group->getLdapfilter()) {
+ $this->writeln(" - Suppression dans Bundle >> ".$group->getName());
+ if(!$simulate) {
+ $this->em->remove($group);
+ $this->em->flush();
+ }
+ }
+ }
+
$appmasterurl = $this->container->getParameter("appMasterurl");
$appmasterkey = $this->container->getParameter("appMasterkey");
// Généraltion de l'urol de communication
if(stripos($appmasterurl,"/")===0) {
- $url="https://".$this->container->getParameter("appWeburl").$appmasterurl;
+ $url="http://".$this->container->getParameter("appWeburl").$appmasterurl;
}
else
$url=$appmasterurl;
@@ -568,7 +601,7 @@ class SynchroUsersCommand extends Command
$this->writeln($group->getName());
$usergroups=[];
- if(array_key_exists($group->getIdexternal(),$tabgroups)&&$tabgroups[$group->getIdexternal()])
+ if($tabgroups[$group->getIdexternal()])
$usergroups = $tabgroups[$group->getIdexternal()]["users"];
$tbusers=[];
foreach($usergroups as $user) {
@@ -599,12 +632,6 @@ class SynchroUsersCommand extends Command
$this->em->persist($group);
$this->em->flush();
- // On s'assure que l'ensemble des activité active soit bien distribué en fonction
- $activitys=$this->em->getRepository("App:Activity")->findAllGroupActivityActive($group,true);
- foreach($activitys as $activity) {
- $this->initAnswer($activity);
- }
-
}
$this->writeln('');
@@ -637,15 +664,6 @@ class SynchroUsersCommand extends Command
$this->writeln('== GROUPS ============================================');
$groups=$this->em->getRepository("App:Group")->findAll();
foreach($groups as $group) {
- if($group->getLdapfilter()) {
- $this->writeln(" - Suppression dans Bundle >> ".$group->getName());
- if(!$simulate) {
- $this->em->remove($group);
- $this->em->flush();
-
- }
- }
-
if(!$group->getIdexternal()) continue;
if(!in_array($group->getIdexternal(),$lstgroups)) {
@@ -696,13 +714,15 @@ class SynchroUsersCommand extends Command
protected function addUser($username,$firstname,$lastname,$email,$usersadmin) {
$user = new User();
+ $key = Uuid::uuid4();
$user->setUsername($username);
$user->setPassword("NOPASSWORD");
$user->setLastname($lastname);
$user->setFirstname($firstname);
$user->setEmail($email);
-
+ $user->setApiKey($key);
+
// Definition du role
if(in_array($username,$usersadmin))
$role="ROLE_ADMIN";
@@ -746,48 +766,4 @@ class SynchroUsersCommand extends Command
$this->em->flush();
}
- protected function initAnswer($activity) {
- $em = $this->em;
-
- // Pour chaque élève
- $group=$activity->getGroup();
- foreach($group->getUsers() as $user) {
- // Existe-t-il une réponse pour l'élève
- if($user->hasRole("ROLE_USER")) {
- $answer=$em->getRepository("App:Answer")->findOneBy(["user"=>$user,"activity"=>$activity]);
- if(!$answer) {
- $answer=new Answer;
- $answer->setActivity($activity);
- $answer->setUser($user);
- $answer->setStatus(-1);
-
- $em->persist($answer);
- $em->flush();
-
- // Message
- $message=new Message;
- $message->setMessage("Distribution de l'Activité");
- $message->setDeletable(false);
- $message->setUser($activity->getUser());
- $message->setAnswer($answer);
- $message->addReader($activity->getUser());
-
- $em->persist($message);
- $em->flush();
-
- // Notification par mail de la distribution de l'activité
- $to = $user->getEmail();
- $from = $activity->getUser()->getEmail();
- $subject="Nineschool : Nouvelle Activité à réaliser";
- $body ="Activité = ".$activity->getName()."
";
- $body.="Professeur = ".$activity->getUser()->getDisplayname()."
";
- $body.="Matière = ".$activity->getSubject()."
";
- $body.="Url = ".$this->router->generate('app_answer_update', ["id"=>$answer->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
-
- $this->mail->sendEmail($subject, $body, $to, $from);
- }
- }
- }
- }
-
}
diff --git a/tmpl/nineschool-env.local b/tmpl/nineschool-env.local
index 827bdb4..ce2e6fb 100644
--- a/tmpl/nineschool-env.local
+++ b/tmpl/nineschool-env.local
@@ -76,8 +76,8 @@ LDAP_USERNAME=uid
LDAP_FIRSTNAME=givenname
LDAP_LASTNAME=sn
LDAP_EMAIL=mail
-LDAP_FILTERGROUP=(cn=*)
-LDAP_FILTERUSER=(uid=*)
+LDAP_FILTERGROUP=(&(ObjectClass=posixGroup)(cn=*))
+LDAP_FILTERUSER=(&(ObjectClass=person)(uid=*))
%else
LDAP_USERNAME=%%nineschool_ldapuid
LDAP_FIRSTNAME=%%nineschool_ldapfirstname