API Gestion des permissions » History » Version 1
  Simon, 07/03/2024 12:45 PM 
  
| 1 | 1 | Simon | h1. API Gestion des permissions  | 
|---|---|---|---|
| 2 | |||
| 3 | La version 2.8 de Linea21 offre une API avec 3 types d'accès en fonction de la configuration.  | 
||
| 4 | |||
| 5 | Cette configuration est définie dans le fichier config.ini avec la constante API_PROVIDE qui peut prendre 3 valeurs :  | 
||
| 6 | |||
| 7 | # 0 : la fonctionnalité API est désactivée  | 
||
| 8 | # "full-access" : la fonctionnalité API est accessible à tous sans contrôle et sans distinction des utilisateurs  | 
||
| 9 | # "limited-access" : la fonctionnalité API est accessible à un ou plusieurs utilisateurs par un système de jeton ( _token_ ).  | 
||
| 10 | |||
| 11 | 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.  | 
||
| 12 | |||
| 13 | h2. Préparer un fichier de permissions pour un accès en "limited-access"  | 
||
| 14 | |||
| 15 | Le système utilise un fichier de permissions respectant la structure suivante, au format json :  | 
||
| 16 | |||
| 17 | <pre><code class="javascript">  | 
||
| 18 | { | 
||
| 19 |   "linea21-6685453c9821b": { | 
||
| 20 | "description": "Lien avec tel établissement",  | 
||
| 21 | "contact": "YYYY xxxx <yyy.xxx@etablissement.org>",  | 
||
| 22 |     "permissions": { | 
||
| 23 | "indicator": [  | 
||
| 24 | "list",  | 
||
| 25 | "info",  | 
||
| 26 | "info-full",  | 
||
| 27 | "values",  | 
||
| 28 | "info-values",  | 
||
| 29 | "last-value"  | 
||
| 30 | ],  | 
||
| 31 | "level": [  | 
||
| 32 | "list"  | 
||
| 33 | ],  | 
||
| 34 | "status": "all"  | 
||
| 35 | }  | 
||
| 36 | },  | 
||
| 37 |   "linea21-895223bc9878a": { | 
||
| 38 | "description": "Un autre utilisateur de l'API",  | 
||
| 39 | "contact": "AAA BBB <aaa.bbb@utilisateur.org>",  | 
||
| 40 |     "permissions": { | 
||
| 41 | "indicator": [  | 
||
| 42 | "all"  | 
||
| 43 | ],  | 
||
| 44 | "level": [  | 
||
| 45 | "list"  | 
||
| 46 | ]  | 
||
| 47 | }  | 
||
| 48 | },  | 
||
| 49 | }  | 
||
| 50 | </code></pre>  | 
||
| 51 | |||
| 52 | Quelques explications sur la base du premier utilisateur :  | 
||
| 53 | * le jeton ( _token_ ) peut être généré manuellement. Ici, il est généré par utilisation de la fonction php uniqid() accessible en ligne ici :https://www.w3schools.com/PHP/phptryit.asp?filename=tryphp_func_misc_uniqid  | 
||
| 54 | * les clés _description_ et _contact_ permettent la traçabilité de l'accès  | 
||
| 55 | * 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  | 
||
| 56 | * 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)  |