diff --git a/dicos/91_ninegate.xml b/dicos/91_ninegate.xml
index 13046828..3460b327 100644
--- a/dicos/91_ninegate.xml
+++ b/dicos/91_ninegate.xml
@@ -80,37 +80,43 @@
oui
- LDAP
- CAS
- APIKeyNinegate
+ LDAP
+ CAS
+ APIKeyNinegate
+
+ oui
+ user_groups
non
- scribe
+ scribe
oui
- oui
+ oui
+ (uid=*)
+ oui
+ (objectClass=posixGroup)
-
-
- niveau01
- niveau02
-
-
+
+
+ niveau01
+ niveau02
+
+
- Ecole
- Ecoles
- fa-building
+ Ecole
+ Ecoles
+ fa-building
non
- Service
- Services
- fa-sitemap
+ Service
+ Services
+ fa-sitemap
- 2c3e50
- FFFFFF
+ 2c3e50
+ FFFFFF
- none
- 8
- 8
+ none
+ 8
+ 8
@@ -170,208 +176,208 @@
non
-
+
non
-
-
+
+
non
-
+
non
-
+
non
-
+
non
-
+
non
-
+
non
-
+
non
-
+
non
-
+
non
-
-
+
+
non
-
+
non
-
+
non
-
+
non
-
-
-
-
+
+
+
+
non
-
+
non
-
-
-
+
+
+
non
-
-
+
+
non
-
+
non
-
+
non
-
-
+
+
non
-
+
non
-
+
non
-
-
+
+
non
-
+
non
-
-
+
+
non
-
-
+
+
-
-
+
+
5555
-
+
5556
-
+
oui
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -423,11 +429,16 @@
ninegate_mode_auth
ninegate_api_key
+ ninegate_ssosynchrogroup
+ ninegate_ssoreqgroup
ninegate_syncldap
ninegate_ldaptemplate
ninegate_scribegroup
ninegate_scribemaster
+ ninegate_openldapreqniveau01
+ ninegate_openldapsynchrogroup
+ ninegate_openldapreqgroup
ninegate_pwdadmin
ninegate_organization
@@ -507,6 +518,14 @@
ninegate_test_conf_cadolesldap
+
+ SQL
+ LDAP
+
+ ninegate_ssosynchrogroup
+ ninegate_ssoreqgroup
+
+
non
@@ -565,7 +584,12 @@
non
+
+
+ non
+ ninegate_ssoreqgroup
+
@@ -604,8 +628,22 @@
ninegate_scribemaster
-
-
+
+
+ open
+
+ ninegate_openldapreqniveau01
+ ninegate_openldapsynchrogroup
+ ninegate_openldapreqgroup
+
+
+
+
+ non
+
+ ninegate_openldapreqgroup
+
+
non
diff --git a/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php b/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
index c351f5d5..a3fd9e8d 100644
--- a/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
+++ b/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
@@ -11,6 +11,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\User;
+use Cadoles\CoreBundle\Entity\Group;
class SecurityController extends Controller
{
@@ -28,7 +29,7 @@ class SecurityController extends Controller
$masteridentity=$this->getParameter("masteridentity");
// Init Client CAS
- \phpCAS::setDebug(false);
+ \phpCAS::setDebug("/var/log/phpcas/phpCAS-ninegate.log");
\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
\phpCAS::setNoCasServerValidation();
@@ -42,12 +43,6 @@ class SecurityController extends Controller
// Récupération Attribut
$attributes = \phpCAS::getAttributes();
- // Suppression des Attributs en tableaux
- foreach ($attributes as $key => $value) {
- if(is_array($value))
- unset($attributes[$key]);
- }
-
// Rechercher l'utilisateur
$em = $this->getDoctrine()->getManager();
if(isset($attributes[$this->getParameter('user_attr_cas_username')]))
@@ -62,6 +57,7 @@ class SecurityController extends Controller
if(isset($attributes[$this->getParameter('user_attr_cas_firstname')]))
$firstname = $attributes[$this->getParameter('user_attr_cas_firstname')];
+
$user = $em->getRepository('CadolesCoreBundle:User')->findOneBy(array("username"=>$username));
$exists = $user ? true : false;
@@ -104,11 +100,18 @@ class SecurityController extends Controller
$user->setAuthlevel("simple");
$user->setRole("ROLE_USER");
+ if(in_array($username,$this->getParameter("ldap_usersadmin")))
+ $user->setRole("ROLE_ADMIN");
+
$em->persist($user);
$em->flush();
+ // Génération auto des groupes
+ $this->submitGroup($attributes);
+
// On calcule les groupes de l'utilisateur
- $groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
+ $user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
+
}
}
else {
@@ -122,14 +125,20 @@ class SecurityController extends Controller
// On s'assure que le niveau 02 appartient bien au niveau 01 calculé
$sameniveau01=(!is_null($user->getNiveau02())&&$niveau01==$user->getNiveau02()->getNiveau01());
- // On calcule les groupes de l'utilisateur
- $user=$groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
-
$user->setLastname($lastname);
$user->setFirstname($firstname);
$user->setEmail($email);
if(!$sameniveau01) $user->setNiveau02(null);
-
+ if(in_array($username,$this->getParameter("ldap_usersadmin")))
+ $user->setRole("ROLE_ADMIN");
+
+ // Génération auto des groupes
+ $this->submitGroup($attributes);
+
+ // On calcule les groupes de l'utilisateur
+ $user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
+
+
$em->persist($user);
$em->flush();
}
@@ -179,4 +188,84 @@ class SecurityController extends Controller
$url=$this->generateUrl('cadoles_core_home', array(), UrlGeneratorInterface::ABSOLUTE_URL);
\phpCAS::logout(array("service"=>$url));
}
+
+ public function testAction() {
+ $em = $this->getDoctrine()->getManager();
+
+ // Init Client CAS
+ \phpCAS::setDebug("/var/log/phpcas/phpCAS-ninegate.log");
+ \phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
+ \phpCAS::setNoCasServerValidation();
+
+
+ // Authentification
+ \phpCAS::forceAuthentication();
+
+ // Récupération UID
+ $username = \phpCAS::getUser();
+
+ // Récupération Attribut
+ $attributes = \phpCAS::getAttributes();
+ $user = $em->getRepository('CadolesCoreBundle:User')->findOneBy(array("username"=>$username));
+
+ // On calcule le niveau01 de l'utilisateur
+ $niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->calculateNiveau01($attributes);
+
+ // Génération auto des groupes
+ $groups=$this->submitGroup($attributes);
+
+ // On calcule les groupes de l'utilisateur
+ $user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
+
+ return $this->render('CadolesCASBundle:Test:test.html.twig',[
+ 'useheader' => true,
+ 'usemenu' => false,
+ 'usesidebar' => false,
+ 'attributes' => $attributes,
+ 'user' => $user,
+ 'username' => $username,
+ 'niveau01' => $niveau01,
+ ]);
+
+ }
+
+ private function submitGroup($attributes) {
+ $em = $this->getDoctrine()->getManager();
+
+ if(!$this->getParameter('ssosynchrogroup'))
+ return null;
+
+ $user_attr_cas_group=$this->getParameter('user_attr_cas_group');
+
+ // Si l'utilisateur possège l'attribut groupe dans ses attributs
+ if(array_key_exists($user_attr_cas_group,$attributes)) {
+ if(!is_array($attributes[$user_attr_cas_group])) {
+ $attributes[$user_attr_cas_group]=[$attributes[$user_attr_cas_group]];
+ }
+
+ foreach($attributes[$user_attr_cas_group] as $ssogroup) {
+ // Recherche du groupe
+ $group=$em->getRepository("CadolesCoreBundle:Group")->findOneBy(["label"=>$ssogroup]);
+ if(!$group) {
+ $group=new Group();
+ $group->setLabel($ssogroup);
+ $group->setFgcancreatepage(false);
+ $group->setFgcancreateblog(false);
+ $group->setFgcancreatecalendar(false);
+ $group->setFgcancreateproject(false);
+ $group->setFgcanshare(false);
+ $group->setFgopen(false);
+ $group->setFgall(false);
+ }
+
+ $group->setAttributes('{"'.$user_attr_cas_group.'":"'.$ssogroup.'"}');
+ $group->setFgtemplate(false);
+
+ $em->persist($group);
+ $em->flush();
+
+ }
+ }
+
+ }
}
diff --git a/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/config/routing.yml
index 728e4a44..f97aa770 100644
--- a/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/config/routing.yml
+++ b/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/config/routing.yml
@@ -6,3 +6,7 @@ cas_sp.logout:
path: /logout
defaults: { _controller: CadolesCASBundle:Security:logout }
+cas_sp.test:
+ path: /test
+ defaults: { _controller: CadolesCASBundle:Security:test }
+
diff --git a/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/views/Test/test.html.twig b/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/views/Test/test.html.twig
new file mode 100644
index 00000000..a1c7b0c7
--- /dev/null
+++ b/src/ninegate-1.0/src/Cadoles/CASBundle/Resources/views/Test/test.html.twig
@@ -0,0 +1,35 @@
+{% extends '@CadolesCore/base.html.twig' %}
+
+{% block pagewrapper %}
+ TEST SSO
+
+ Atttribut SSO
+ {% for key, attribute in attributes %}
+ {% if attribute is iterable %}
+ {% for value in attribute %}
+ {{ key }} = {{ value }}
+ {% endfor %}
+ {% else %}
+ {{ key }} = {{ attribute }}
+ {% endif %}
+ {% endfor %}
+
+
+ Correspondance Utilisateur Ninegate
+ username = {{ user.username }}
+ firstname = {{ user.firstname }}
+ lastname = {{ user.lastname }}
+ email = {{ user.email }}
+
+ Appartient au Niveau 01
+ {{ niveau01.label }} = {{ niveau01.attributes }}
+
+ Appartient aux Groupes
+ {% for usergroup in user.groups %}
+ {% if not usergroup.group.attributes is empty %}
+ {{usergroup.group.label}} = {{usergroup.group.attributes}}
+ {% endif %}
+ {% endfor %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php
index ec4956a0..cfe337ac 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php
@@ -144,13 +144,27 @@ class InitDataCommand extends ContainerAwareCommand
if($ldap_template=="scribe")
$niveau01->setLdapfilter("(&(uid=*)(objectclass=inetOrgPerson)(!(description=Computer)))");
else
- $niveau01->setLdapfilter("(uid=*)");
+ $niveau01->setLdapfilter($this->getContainer()->getParameter('openldapreqniveau01'));
$em->persist($niveau01);
$em->flush();
}
}
+ // On s'assure si masteridentity est à SSO qu'au minimum un niveau01 possède un attribut
+ if($masteridentity=="SSO") {
+ $niveau01=$em->createQueryBuilder()->select('n')->from('CadolesCoreBundle:Niveau01','n')->where('n.attributes IS NOT NULL')->getQuery()->getResult();
+ if(!$niveau01) {
+ // Si ce n'est pas le cas on positionne un attribut ultra large sur le niveau01 de base
+ $niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
+ $niveau01->setAttributes('{"username":"*"}');
+
+ $em->persist($niveau01);
+ $em->flush();
+ }
+ }
+
+
$output->writeln('');
}
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php
index f893ca10..c2dc6d8f 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php
@@ -174,6 +174,22 @@ class SynchroCommand extends Command
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
}
+ elseif($ldap_template=="open") {
+ if($this->container->getParameter('openldapsynchrogroup')) {
+ $this->writeln('');
+ $this->writeln('== GROUPES ==========================================');
+
+ $results = $this->ldap->search($this->container->getParameter('openldapreqgroup'), ['cn','description','gidNumber'], $this->ldap_basedn);
+ foreach($results as $result) {
+ $cn=$result["cn"];
+ $ldapfilter="(&".$this->container->getParameter('openldapreqgroup')."(cn=$cn))";
+
+ $label=$result["cn"];
+ $this->writeln(" - $label");
+ if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
+ }
+ }
+ }
$this->writeln('');
$this->writeln('== USERS ============================================');
@@ -760,6 +776,12 @@ class SynchroCommand extends Command
protected function addmodGroup($label,$ldapfilter,$fgcanshare) {
$portal_activate = $this->container->getParameter('portal_activate');
+ $group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgtemplate' => false, 'label' => $label));
+ if($group) {
+ $this->writelnred(" - ".$label." existe déjà comme groupe interne à Ninegate");
+ return 0;
+ }
+
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgtemplate' => true, 'label' => $label));
if(!$group) {
$group=new Group();
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/TestRestCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/TestRestCommand.php
index 0f70233c..a96a182f 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/TestRestCommand.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/TestRestCommand.php
@@ -58,10 +58,10 @@ class TestRestCommand extends Command
// key = parametre obligatoire
// key = clé d'accès du l'api
// only = paramétre optionnel
- // only = liste des informations désirés = user, items, bookmarks, groups, alerts
+ // only = liste des informations désirés = user, items, bookmarks, groups, alerts, calendars
$apiurl = $url."/rest/user/".$login;
$this->writeln($apiurl);
- $response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"only"=>"user,items"]);
+ $response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"only"=>"user,calendars"]);
dump($response->body);
$this->writeln('');
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php
index e0182c72..e0e693a3 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php
@@ -34,7 +34,7 @@ class RestController extends Controller
// key = parametre obligatoire
// key = clé d'accès de l'api
// only = paramétre optionnel
- // only = liste des informations désirés = user, items, bookmarks, groups, alerts
+ // only = liste des informations désirés = user, items, bookmarks, groups, alerts, calendars
public function userAction($login, Request $request)
{
$key=$request->get('key');
@@ -65,6 +65,8 @@ class RestController extends Controller
if($only==""||in_array("groups",$only)) $output["groups"] = [];
if($only==""||in_array("alerts",$only)) $output["alerts"] = [];
if($only==""||in_array("alerts",$only)) $output["alertcategorys"] = [];
+ if($only==""||in_array("calendars",$only)) $output["calendars"] = [];
+ if($only==""||in_array("calendars",$only)) $output["calendarevents"] = [];
$bookmarks=null;
$items=null;
@@ -94,7 +96,7 @@ class RestController extends Controller
$tmp["url"] = $bookmark->getUrl();
$tmp["target"] = $bookmark->getTarget();
$tmp["order"] = 0;
- $tmp["color"] = ($bookmark->getColor()?$bookmark->getColor():$this->get('session')->get('color')["main"]);
+ $tmp["color"] = "#".($bookmark->getColor()?$bookmark->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($bookmark->getIcon()?$bookmark->getIcon()->getLabel():"uploads/icon/icon_pin.png");
array_push($output["bookmarks"],$tmp);
@@ -111,7 +113,7 @@ class RestController extends Controller
$tmp["url"] = $item->getUrl();
$tmp["target"] = $item->getTarget();
$tmp["order"] = $item->getRoworder();
- $tmp["color"] = ($item->getColor()?$item->getColor():$this->get('session')->get('color')["main"]);
+ $tmp["color"] = "#".($item->getColor()?$item->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($item->getIcon()?$item->getIcon()->getLabel():"uploads/icon/icon_pin.png");
$tmp["essential"] = $item->getEssential();
$tmp["category"] = $item->getItemcategory()->getId();
@@ -126,7 +128,7 @@ class RestController extends Controller
$tmp["id"] = $itemcategory->getId();
$tmp["title"] = $itemcategory->getLabel();
$tmp["order"] = $itemcategory->getRoworder();
- $tmp["color"] = ($itemcategory->getColor()?$itemcategory->getColor():$this->get('session')->get('color')["main"]);
+ $tmp["color"] = "#".($itemcategory->getColor()?$itemcategory->getColor():$this->get('session')->get('color')["main"]);
array_push($output["itemcategorys"],$tmp);
}
@@ -162,13 +164,39 @@ class RestController extends Controller
$tmp=[];
$tmp["id"] = $alertcategory->getId();
$tmp["title"] = $alertcategory->getLabel();
- $tmp["color"] = ($alertcategory->getColor()?$alertcategory->getColor():$this->get('session')->get('color')["main"]);
+ $tmp["color"] = "#".($alertcategory->getColor()?$alertcategory->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($alertcategory->getIcon()?$alertcategory->getIcon()->getLabel():"uploads/icon/icon_pin.png");
array_push($output["alertcategorys"],$tmp);
}
}
+ if($only==""||in_array("calendars",$only)) {
+
+ $events=$em->getRepository("CadolesPortalBundle:Calendarevent")->getUserCalendarevents($user,$this->get('session')->get('color')["main"],null,null,$firstcalendar);
+ foreach($events as $event) {
+ $tmp=[];
+ $tmp["id"] = $event["id"];
+ $tmp["title"] = $event["title"];
+ $tmp["description"] = $event["description"];
+ $tmp['start'] = $event["start"];
+ $tmp['end'] = $event["end"];
+ $tmp['allday'] = $event["allDay"];
+ $tmp['calendar'] = $event["calendar"];
+
+ array_push($output["calendarevents"],$tmp);
+
+ $tmp=[];
+ $tmp["id"] = $event["calendar"];
+ $tmp["title"] = $event["name"];
+ $tmp["color"] = $event["color"];
+
+ if(!in_array($tmp,$output["calendars"]))
+ array_push($output["calendars"],$tmp);
+ }
+ }
+
+
// Retour
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php
index bf3922b8..85a9e554 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php
@@ -21,15 +21,15 @@ class GroupRepository extends \Doctrine\ORM\EntityRepository
foreach($attgroup as $key => $value) {
if(array_key_exists($key,$attruser)) {
- if(is_array($value)) {
- foreach($value as $val) {
- if($val=="*")
+ if(is_array($attruser[$key])) {
+ foreach($attruser[$key] as $val) {
+ if($value=="*")
$retgroups->add($group);
- elseif($val==$attruser[$key])
+ elseif($val==$value)
$retgroups->add($group);
}
}
- elseif(array_key_exists($key,$attruser)) {
+ else {
if($value=="*")
$retgroups->add($group);
elseif($value==$attruser[$key])
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/Niveau01Repository.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/Niveau01Repository.php
index b221d163..deac4a9c 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/Niveau01Repository.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/Niveau01Repository.php
@@ -15,15 +15,15 @@ class Niveau01Repository extends \Doctrine\ORM\EntityRepository
foreach($attniveau as $key => $value) {
if(array_key_exists($key,$attruser)) {
- if(is_array($value)) {
- foreach($value as $val) {
- if($val=="*")
+ if(is_array($attruser[$key])) {
+ foreach($attruser[$key] as $val) {
+ if($value=="*")
return $niveau01;
- elseif($val==$attruser[$key])
+ elseif($val==$value)
return $niveau01;
}
}
- else if(array_key_exists($key,$attruser)) {
+ else {
if($value=="*")
return $niveau01;
elseif($value==$attruser[$key])
diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php
index d9945446..ef287842 100644
--- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php
+++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php
@@ -849,6 +849,7 @@ class PagewidgetController extends Controller
// Récupération des paramétres du widget
$idalertcategory=null;
+ $alertcategoryfilter=null;
foreach($entity->getParameter()["fields"] as $parameter) {
switch($parameter["id"]) {
case "alertcategory":
@@ -863,88 +864,8 @@ class PagewidgetController extends Controller
// Profilage
$user=$this->getUser();
- $roles=($user?$user->getRoles():["ROLE_ANONYME"]);
- $niveau01=($user?$user->getNiveau01():null);
- $groups=($user?$user->getGroups():[]);
+ $alertsordered=$em->getRepository("CadolesPortalBundle:Alert")->getUserAlerts($user,$idalertcategory,$alertcategoryfilter);
- // Initialisation du calcul des alerts
- $alerts=new ArrayCollection();
-
- // Récupération des alerts par rôles
- foreach($roles as $role) {
- $qb = $em->createQueryBuilder();
- $qb->select('alert')
- ->from("CadolesPortalBundle:Alert", 'alert')
- ->where($qb->expr()->like('alert.roles', $qb->expr()->literal("%$role%")))
- ->andWhere('alert.publishedat <= :today')
- ->andWhere($qb->expr()->orX(
- $qb->expr()->gt('alert.unpublishedat', ':today'),
- $qb->expr()->isNull('alert.unpublishedat')
- ))
- ->setParameter('today', date('Y-m-d'));
-
- if($idalertcategory && $alertcategoryfilter) {
- $qb->andWhere("alert.alertcategory=:alertcategory")
- ->setParameter("alertcategory",$alertcategoryfilter);
- }
- $alertsroles=$qb->getQuery()->getResult();
- foreach($alertsroles as $alertrole) {
- if(!$alerts->contains($alertrole)&&!$alertrole->getReaders()->contains($this->getUser())) $alerts->add($alertrole);
- }
- }
-
- // Récupération par Niveau01
- $qb = $em->createQueryBuilder();
- $qb->select('alert')
- ->from("CadolesPortalBundle:Alert", 'alert')
- ->where(":niveau01 MEMBER OF alert.niveau01s")
- ->andWhere('alert.publishedat <= :today')
- ->andWhere($qb->expr()->orX(
- $qb->expr()->gt('alert.unpublishedat', ':today'),
- $qb->expr()->isNull('alert.unpublishedat')
- ))
- ->setParameter("niveau01",$niveau01)
- ->setParameter('today', date('Y-m-d'));
-
- if($idalertcategory && $alertcategoryfilter) {
- $qb->andWhere("alert.alertcategory=:alertcategory")
- ->setParameter("alertcategory",$alertcategoryfilter);
- }
- $alertsniveau01s=$qb->getQuery()->getResult();
- foreach($alertsniveau01s as $alertniveau01) {
- if(!$alerts->contains($alertniveau01)&&!$alertniveau01->getReaders()->contains($this->getUser())) $alerts->add($alertniveau01);
- }
-
- // Récupération des alerts par group
- foreach($groups as $group) {
- $qb = $em->createQueryBuilder();
- $qb->select('alert')
- ->from("CadolesPortalBundle:Alert", 'alert')
- ->where(":group MEMBER OF alert.groups")
- ->andWhere('alert.publishedat <= :today')
- ->andWhere($qb->expr()->orX(
- $qb->expr()->gt('alert.unpublishedat', ':today'),
- $qb->expr()->isNull('alert.unpublishedat')
- ))
- ->setParameter("group",$group->getGroup())
- ->setParameter('today', date('Y-m-d'));
-
- if($idalertcategory && $alertcategoryfilter) {
- $qb->andWhere("alert.alertcategory=:alertcategory")
- ->setParameter("alertcategory",$alertcategoryfilter);
- }
- $alertsgroups=$qb->getQuery()->getResult();
- foreach($alertsgroups as $alertgroup) {
- if(!$alerts->contains($alertgroup)&&!$alertgroup->getReaders()->contains($this->getUser())) $alerts->add($alertgroup);
- }
- }
-
- // Trie des alerts
- $alertsordered = $alerts->getIterator();
- $alertsordered->uasort(function ($first, $second) {
- return (int) $first->getRowOrder() > (int) $second->getRowOrder() ? 1 : -1;
- });
-
// Render
return $this->render($this->labelentity.':viewalert.html.twig', [
'entity' => $entity,
@@ -1720,84 +1641,11 @@ class PagewidgetController extends Controller
// Préference utilisateur
$this->getPreference($entity);
-
- // On récupère soit les calendriers du group en cours soit l'ensemble des calendriers de l'utilisateur
- if($usage=="group") {
- $calendars=$em->getRepository("CadolesPortalBundle:Calendar")->getCalendarsGroup($this->getUser(),$group);
- if($calendars) $firstcalendar=$calendars[0]->getId();
- }
- else {
- $this->getDoctrine()->getRepository("CadolesPortalBundle:Calendar")->getCalendarsUser($this->getUser(),$calendarssuser,$calendarsadmin,$calendarsshared);
- $calendars=array_merge($calendarssuser,$calendarsadmin->toArray(),$calendarsshared);
- $firstcalendar="all";
- }
-
- // Début & fin
- $start=new \DateTime();
- $start->setTime(0,0);
-
- $end=new \DateTime();
- $end->setTime(0,0);
- $end->add(new \DateInterval('P3M'));
- $end->modify('last day of this month');
-
- $events=[];
- $eventids=[];
-
- foreach($calendars as $calendar) {
- $calendarevents = $this->getDoctrine()->getRepository("CadolesPortalBundle:Calendarevent")->getCalendareventByDate($calendar,$start,$end);
-
- foreach($calendarevents as $calendarevent) {
- $tmp=[];
- $tmp['id'] = strval($calendarevent->getId());
- $tmp['title'] = $calendarevent->getName();
- $tmp['description'] = $calendarevent->getDescription();
- $tmp['start'] = $calendarevent->getStart();
- $tmp['end'] = $calendarevent->getEnd();
- $tmp['color'] = "#".(is_null($calendar->getColor())?$this->get('session')->get('color')["main"]:$calendar->getColor());
- $tmp['allDay'] = $calendarevent->getAllday();
- $tmp['calendar'] = $calendar->getId();
- $tmp['editable'] = $calendar->getCanupdate();
-
- // Si évènement sur la journée on enlève une 1 seconde à la date de fin
- if($tmp['allDay'])
- $tmp['end']->sub(new \DateInterval('PT1S'));
-
- array_push($events,$tmp);
- array_push($eventids,$tmp["id"]);
- }
- }
-
- // On récupére les évenement partagé de l'utilisateur
- if($this->getUser()) {
- $calendarevents = $this->getDoctrine()->getRepository("CadolesPortalBundle:Calendarevent")->getCalendareventGroupsShareByDate($this->getUser(),$start,$end);
- foreach($calendarevents as $calendarevent) {
- if($usage=="group") {
- if(!$calendarevent->getGroups()->contains($groupentity)) continue;
- }
-
- $tmp=[];
- $tmp['id'] = strval($calendarevent->getId());
- $tmp['title'] = $calendarevent->getName();
- $tmp['description'] = $calendarevent->getDescription();
- $tmp['start'] = $calendarevent->getStart();
- $tmp['end'] = $calendarevent->getEnd();
- $tmp['color'] = "#".(is_null($calendar->getColor())?$this->get('session')->get('color')["main"]:$calendar->getColor());
- $tmp['allDay'] = $calendarevent->getAllday();
- $tmp['calendar'] = $calendar->getId();
- $tmp['editable'] = $calendar->getCanupdate();
-
- // Si évènement sur la journée on enlève une 1 seconde à la date de fin
- if($tmp['allDay'])
- $tmp['end']->sub(new \DateInterval('PT1S'));
-
- if(!in_array($tmp['id'],$eventids)) {
- array_push($events,$tmp);
- array_push($eventids,$tmp["id"]);
- }
- }
- }
+ // Récupérer les events de l'utilisateur
+ $user=$this->getUser();
+ $events=$em->getRepository("CadolesPortalBundle:Calendarevent")->getUserCalendarevents($user,$this->get('session')->get('color')["main"],$usage,$group,$firstcalendar);
+
// Render
return $this->render($this->labelentity.':viewcalendar.html.twig', [
'entity' => $entity,
diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendareventRepository.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendareventRepository.php
index c9d66baa..a1849471 100644
--- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendareventRepository.php
+++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendareventRepository.php
@@ -93,4 +93,89 @@ class CalendareventRepository extends EntityRepository
return $calendareventshared;
}
+
+ public function getUserCalendarevents($user,$sessioncolor,$usage,$group,&$firstcalendar) {
+ $em=$this->getEntityManager();
+
+ // On récupère soit les calendriers du group en cours soit l'ensemble des calendriers de l'utilisateur
+ if($usage=="group") {
+ $calendars=$em->getRepository("CadolesPortalBundle:Calendar")->getCalendarsGroup($user,$group);
+ if($calendars) $firstcalendar=$calendars[0]->getId();
+ }
+ else {
+ $em->getRepository("CadolesPortalBundle:Calendar")->getCalendarsUser($user,$calendarssuser,$calendarsadmin,$calendarsshared);
+ $calendars=array_merge($calendarssuser,$calendarsadmin->toArray(),$calendarsshared);
+ $firstcalendar="all";
+ }
+
+ // Début & fin
+ $start=new \DateTime();
+ $start->setTime(0,0);
+
+ $end=new \DateTime();
+ $end->setTime(0,0);
+ $end->add(new \DateInterval('P3M'));
+ $end->modify('last day of this month');
+
+ $events=[];
+ $eventids=[];
+
+ foreach($calendars as $calendar) {
+ $calendarevents = $em->getRepository("CadolesPortalBundle:Calendarevent")->getCalendareventByDate($calendar,$start,$end);
+
+ foreach($calendarevents as $calendarevent) {
+ $tmp=[];
+ $tmp['id'] = strval($calendarevent->getId());
+ $tmp['title'] = $calendarevent->getName();
+ $tmp['description'] = $calendarevent->getDescription();
+ $tmp['start'] = $calendarevent->getStart();
+ $tmp['end'] = $calendarevent->getEnd();
+ $tmp['color'] = "#".(is_null($calendar->getColor())?$sessioncolor:$calendar->getColor());
+ $tmp['allDay'] = $calendarevent->getAllday();
+ $tmp['calendar'] = $calendar->getId();
+ $tmp['name'] = $calendar->getName();
+ $tmp['editable'] = $calendar->getCanupdate();
+
+ // Si évènement sur la journée on enlève une 1 seconde à la date de fin
+ if($tmp['allDay'])
+ $tmp['end']->sub(new \DateInterval('PT1S'));
+
+ array_push($events,$tmp);
+ array_push($eventids,$tmp["id"]);
+
+ }
+ }
+
+ // On récupére les évenement partagé de l'utilisateur
+ if($user) {
+ $calendarevents = $em->getRepository("CadolesPortalBundle:Calendarevent")->getCalendareventGroupsShareByDate($user,$start,$end);
+ foreach($calendarevents as $calendarevent) {
+ if($usage=="group") {
+ if(!$calendarevent->getGroups()->contains($groupentity)) continue;
+ }
+
+ $tmp=[];
+ $tmp['id'] = strval($calendarevent->getId());
+ $tmp['title'] = $calendarevent->getName();
+ $tmp['description'] = $calendarevent->getDescription();
+ $tmp['start'] = $calendarevent->getStart();
+ $tmp['end'] = $calendarevent->getEnd();
+ $tmp['color'] = "#".(is_null($calendar->getColor())?$sessioncolor:$calendar->getColor());
+ $tmp['allDay'] = $calendarevent->getAllday();
+ $tmp['calendar'] = $calendar->getId();
+ $tmp['name'] = $calendar->getName();
+ $tmp['editable'] = $calendar->getCanupdate();
+
+ // Si évènement sur la journée on enlève une 1 seconde à la date de fin
+ if($tmp['allDay'])
+ $tmp['end']->sub(new \DateInterval('PT1S'));
+
+ if(!in_array($tmp['id'],$eventids)) {
+ array_push($events,$tmp);
+ array_push($eventids,$tmp["id"]);
+ }
+ }
+ }
+ return $events;
+ }
}
diff --git a/sso/filtres/ninegate.ini b/sso/filtres/ninegate.ini
index f61e4ce0..97099a10 100644
--- a/sso/filtres/ninegate.ini
+++ b/sso/filtres/ninegate.ini
@@ -1,14 +1,8 @@
-[user]
+[attributes]
user=uid
-
-[username]
username=uid
-
-[firstname]
firstname=givenName
-
-[lastname]
lastname=sn
+email=mail
+user_groups=user_groups
-[email]
-email=mail
\ No newline at end of file
diff --git a/tmpl/ninegate-template.yml b/tmpl/ninegate-template.yml
index 4efb13fa..43f7b579 100644
--- a/tmpl/ninegate-template.yml
+++ b/tmpl/ninegate-template.yml
@@ -203,6 +203,23 @@ parameters:
scribe_master: false
%end if
+%if %%getVar("ninegate_ldaptemplate", 'non') == "open"
+ openldapreqniveau01: %%ninegate_openldapreqniveau01
+
+ %if %%getVar("ninegate_openldapsynchrogroup", 'non') == "oui"
+ openldapsynchrogroup: true
+ openldapreqgroup: %%ninegate_openldapreqgroup
+ %else
+ openldapsynchrogroup: false
+ openldapreqgroup:
+ %end if
+%else
+ openldapreqniveau01:
+ openldapsynchrogroup: false
+ openldapreqgroup:
+%end if
+
+
# Activation Widget
%if %%getVar("ninegate_activate_widadminer", 'non') == "oui"
@@ -470,7 +487,15 @@ parameters:
user_attr_saml_mail: mail
user_attr_saml_lastname: sn
user_attr_saml_firstname: givenName
-
+
+%if %%getVar("ninegate_ssosynchrogroup", 'non') == "oui"
+ ssosynchrogroup: true
+ user_attr_cas_group: %%ninegate_ssoreqgroup
+%else
+ ssosynchrogroup: fase
+ user_attr_cas_group:
+%end if
+
%if %%is_defined("ninegate_smtpport")
mailer_port: '%%ninegate_smtpport'
mailer_encryption: %%ninegate_smtpencryption