Contrôle d'accès

Les contrôles d'accès permettent de définir quelles actions l'utilisateur a le droit d'effectuer sur quelles ressources. Plus d'infos générales sur wikipedia.

Définitions

Une ressource est généralement une information, un ensemble d'informations ou un outil.

Un droit d'accès est l'association d'une ressource et d'une action sur cette dernière. Exemple : read-books pour “Lire les livres”

Une autorisation est l'attribution d'un droit d'accès à un utilisateur.

Une liste de droits d'accès (ACL) désigne généralement l'ensemble des autorisations relatives à une ressource donnée (ou d'un autre point de vue, les autorisations d'un utilisateur sur les différentes ressources).

Implémentation

  • Ekylibre::Access::Right désigne un droit d'accès
  • User#rights contient la liste des autorisations des utilisateurs

Le module Ekylibre::Access permet de centraliser l'ensemble des ressources et des droits relatifs.

class Right
  # def resource
  # def interaction
  # def actions
  # def dependencies
  # def human_name
end

L'identifiant d'un droit d'accès peut s'écrire sous une forme synthétique : <interaction>-<resource>. Exemples : close-financial_years, write-animals.

C'est sous cette forme-là, qu'ils doivent être enregistrés systématiquement.

Il est envisageable de mettre en place des droits spéciaux. Exemples : *-plants, read-*

Ressource

Les ressources sont listées sous forme de Symbol et ne possède aucune propriété particulière.

Débats

Est-ce que les ressources sont une nomenclature ?

Oui, parce que :

  1. C'est une liste d'information homogène

Non, parce que :

  1. C'est une liste relative à un outil (Ekylibre en l'occurrence)
  2. La liste devrait être personnalisable par les extensions qui amènent des ressources inconnues de cette nomenclature, et les nomenclatures n'ont pas vocation à être modifiées par des extensions (risque de “propriétarisation” partielle).