# Contrôles d'accès

# Vérification des droits pour accéder à une route d'API

L'accès aux ressources est contrôlé par les ressources elles-même mais l'utilisation de l'API est aussi contrôlée de manière générale par l'application HTTPAPI.
Cette application définie 4 droits (ACL) qui autorisent l'utilisation des méthodes sur les ressources/collections:

  • PUT,
  • POST,
  • GET,
  • DELETE.

Ces droits s'appliquent de manière globale sur toute l'API quelque soit la ressource/collection concernée. Si un utilisateur ne possède pas le droit, il ne peut pas effectuer de demande de ce type.
L'accès aux routes est contrôlé si la configuration de la route indique un droit spécifique.

Figure 1. Contrôle de l'exécution d'une route d'API

# Vérification des droits pour accéder à un Smart Element

La consultation des Smart Element est contrôlée par les profils de Smart Elements.
Le contrôle d'accès au Smart Element est fait par les interfaces de haut-niveau. La classe SEManager et notamment la fonction createDocument() ne vérifie pas les accès. Ces vérifications doivent être fait avec la méthode SmartElement::hasPermission().
Le schéma suivant décrit les contrôles d'accès à la route d'API et précise la cinématique d'accès à un Smart Element.

Figure 1. Contrôle de l'affichage d'un Smart Element

# Vérification des droits pour télécharger un fichier d'un Smart Element

Le fichier physique enregistré dans le coffre n'est pas accessible directement. L'accès aux répertoires des coffres est contrôlé par le serveur web qui interdit leur accès (fichier .htaccess).
Certains fichiers peuvent être en accès libre. cela concerne notamment les icônes personnalisées des Smart Structures, dossiers et recherches.

Figure 1. Contrôle du téléchargement d'un fichier

# Smart Element confidentiels

Un Smart Element confidentiel est un Smart Element dont l'affichage est soumis à un droit spécifique : le droit confidential.
La propriété confidential indique le caractère confidentiel d'un Smart Element. S'il est est supérieur à zéro, le Smart Element est considéré comme confidentiel.
Les interfaces d'affichage standards de Smart Element prennent en compte cette propriété afin d'indiquer que le Smart Element est confidentiel et ne montre pas son contenu.
Les interfaces standards d'affichage de liste de Smart Element n'affichent pas les Smart Elements confidentiels.
Pour afficher un Smart Element confidentiel, il faut que l'utilisateur dispose du droit view et du droit confidential.

Attention

La classe SearchElements de recherche de Smart Element retourne par défaut les Smart Elements confidentiels. Il faut explicitement utiliser la méthode SearchSmartData::excludeConfidential() pour les filtrer. Dans le cas contraire, le développeur a en charge de montrer que les parties voulues sur l'interface cliente.