diff --git a/dicos/90_ninegate.xml b/dicos/90_ninegate.xml
index 21c4dfce..e3fe986c 100644
--- a/dicos/90_ninegate.xml
+++ b/dicos/90_ninegate.xml
@@ -49,6 +49,7 @@
LDAP
CAS
+ APIKeyNinegate
non
non
@@ -178,7 +179,7 @@
5555
-
+
5556
@@ -231,6 +232,7 @@
ninegate_masteridentity
ninegate_mode_auth
+ ninegate_api_key
ninegate_syncldap
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
index f676e6ec..78551fb7 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
@@ -8,7 +8,7 @@ INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'DRAAF', '130007107');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
-(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}MBogNANkXtDRLDro8qSoCT65Wcm00zzJ
+(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}9cnVg+DTTmS1xmuUKkR7E2gsmtYyea6r
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php
new file mode 100644
index 00000000..480d0b3d
--- /dev/null
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/RestController.php
@@ -0,0 +1,123 @@
+getParameter("apikeyninegate");
+ if($key!=$realkey) {
+ $output["error"]="error key";
+ return new Response(json_encode($output), 400);
+ }
+
+ $em = $this->getDoctrine()->getManager();
+ $output = [];
+
+ // Récupérer l'utilisateur
+ $user=$em->getRepository('CadolesCoreBundle:User')->findOneBy(["username"=>$login]);
+ if(!$user) {
+ $output["error"]="user not exist";
+ return new Response(json_encode($output), 400);
+ }
+
+ // Format de sortie
+ $output["user"] = [];
+ $output["bookmarks"] = [];
+ $output["items"] = [];
+ $output["itemcategorys"] = [];
+
+ $bookmarks=null;
+ $items=null;
+ $itemcategorys=null;
+ $weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
+
+ $em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,3);
+
+ // Construction de la réponse
+ $output["user"]["firstname"] = $user->getFirstname();
+ $output["user"]["lasttname"] = $user->getLastname();
+ $output["user"]["email"] = $user->getEmail();
+ $output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
+ $output["user"]["niveau01"] = $user->getNiveau01()->getLabel();
+ $output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null);
+
+ if($bookmarks) {
+ foreach($bookmarks as $bookmark) {
+ $tmp=[];
+ $tmp["id"] = $bookmark->getId();
+ $tmp["title"] = $bookmark->getTitle();
+ $tmp["url"] = $bookmark->getUrl();
+ $tmp["target"] = $bookmark->getTarget();
+ $tmp["order"] = 0;
+ $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);
+ }
+ }
+
+ if($items) {
+ foreach($items as $item) {
+ $tmp=[];
+ $tmp["id"] = $item->getId();
+ $tmp["title"] = $item->getTitle();
+ $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["icon"] = $weburl.($item->getIcon()?$item->getIcon()->getLabel():"uploads/icon/icon_pin.png");
+ $tmp["essential"] = $item->getEssential();
+ $tmp["category"] = $item->getItemcategory()->getId();
+
+ array_push($output["items"],$tmp);
+ }
+ }
+
+ if($itemcategorys) {
+ foreach($itemcategorys as $itemcategory) {
+ $tmp=[];
+ $tmp["id"] = $itemcategory->getId();
+ $tmp["title"] = $itemcategory->getLabel();
+ $tmp["order"] = $itemcategory->getRoworder();
+ $tmp["color"] = ($itemcategory->getColor()?$itemcategory->getColor():$this->get('session')->get('color')["main"]);
+
+ array_push($output["itemcategorys"],$tmp);
+ }
+ }
+
+
+
+ // Retour
+ return new Response(json_encode($output), 200);
+ }
+
+}
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml
index 96076d01..97aa58fb 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml
@@ -432,3 +432,7 @@ cadoles_core_config_whitelist_ajax_list:
+#== REST ==================================================================================================================
+cadoles_core_rest_user:
+ path: /rest/user/{key}/{login}
+ defaults: { _controller: CadolesCoreBundle:Rest:user }
\ No newline at end of file
diff --git a/tmpl/ninegate-template.yml b/tmpl/ninegate-template.yml
index e42aa265..402691a6 100644
--- a/tmpl/ninegate-template.yml
+++ b/tmpl/ninegate-template.yml
@@ -13,6 +13,9 @@ parameters:
# Car aucune synchronisation des password n'est possible
mode_auth: %%ninegate_mode_auth
+ # API Key
+ apikeyninegate: %%ninegate_api_key
+
# Mode de registration : none / byuser / byadmin
# none = désactivation de l'inscription mais reset de password possible
# byuser = aucune validation par un administrateur, l'utilisateur valide son inscription par lui-même