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