API Gestion des permissions » History » Version 3
Simon, 07/03/2024 12:57 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 | 2 | Simon | * 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 accessible en ligne. |
54 | 1 | Simon | * 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) |
||
57 | 3 | Simon | |
58 | h2. Enregistrer le fichier dans le thème actif |
||
59 | |||
60 | Pour des raisons évidentes, il a été décidé d'embarquer ce fichier de configuration dans le thème public actif. Aussi, il est à localiser dans */templates/public/[theme-actif]/override/api/* . |
||
61 | |||
62 | Un simple fichier nommé api-permissions.json suffit. *Toutefois, pour des raisons de sécurité, nous vous invitons à suivre la charte de nommage suivante : api-permissions-[chaine-de-caracteres-aleatoires].json* Exemple : _api-permissions-gFDD45GBr58.json_ |