Project

General

Profile

API Gestion des permissions » History » Version 2

Simon, 07/03/2024 12:46 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)