Project

General

Profile

API Gestion des permissions » History » Revision 2

Revision 1 (Simon, 07/03/2024 12:45 PM) → Revision 2/3 (Simon, 07/03/2024 12:46 PM)

h1. API Gestion des permissions 

 La version 2.8 de Linea21 offre une API avec 3 types d'accès en fonction de la configuration. 

 Cette configuration est définie dans le fichier config.ini avec la constante API_PROVIDE qui peut prendre 3 valeurs : 

 # 0 : la fonctionnalité API est désactivée 
 #    "full-access" : la fonctionnalité API est accessible à tous sans contrôle et sans distinction des utilisateurs 
 #    "limited-access" : la fonctionnalité API est accessible à un ou plusieurs utilisateurs par un système de jeton ( _token_ ). 

 Les deux premiers cas de figures ne nécessitent pas d'explication particulière. En revanche, la configuration de l'API en "limited-access" implique de fournir des instructions à Linea21. 

 h2. Préparer un fichier de permissions pour un accès en "limited-access" 

 Le système utilise un fichier de permissions respectant la structure suivante, au format json : 

 <pre><code class="javascript"> 
 { 
   "linea21-6685453c9821b": { 
     "description": "Lien avec tel établissement", 
     "contact": "YYYY xxxx <yyy.xxx@etablissement.org>", 
     "permissions": { 
       "indicator": [ 
         "list", 
         "info", 
         "info-full", 
         "values", 
         "info-values", 
         "last-value" 
       ], 
       "level": [ 
         "list" 
       ], 
       "status": "all" 
     } 
   }, 
   "linea21-895223bc9878a": { 
     "description": "Un autre utilisateur de l'API", 
     "contact": "AAA BBB <aaa.bbb@utilisateur.org>", 
     "permissions": { 
       "indicator": [ 
         "all" 
       ], 
       "level": [ 
         "list" 
       ] 
     } 
   }, 
 } 
 </code></pre> 

 Quelques explications sur la base du premier utilisateur :  
 * le jeton ( _token_ ) peut être généré manuellement. Ici, il est généré par utilisation de la fonction PHP "uniqid()":https://www.w3schools.com/PHP/phptryit.asp?filename=tryphp_func_misc_uniqid php uniqid() accessible en ligne. ligne ici :https://www.w3schools.com/PHP/phptryit.asp?filename=tryphp_func_misc_uniqid 
 * les clés _description_ et _contact_ permettent la traçabilité de l'accès 
 * la clé _permissions_ permet de définir l'ensemble des permissions par module. A titre d'illustration ici, l'utilisateur du jeton "linea21-6685453c9821b" est autorisé à effectuer les actions suivantes pour le module _indicator_ : "list", "info", "info-full", "values", "info-values", "last-value". C'est à dire l'ensemble des actions disponibles, ce qui aurait pu être remplacé par l'instruction simple "all" comme pour le deuxième jeton 
 * par défaut, seuls les contenus publics sont retournés (P). Il est possible toutefois de récupérer les contenus en brouillon (D), archivés publiquement (PA), archivés - administration seule (AA)