Bonjour
Refaisant plusieurs db plus aux normes, j'hésite entre deux façons de faire.
Objectif
Une table T_Users, avec les utilisateurs. Chaque utilisateur appartient à un groupe, lui donnant des droits (0= Aucun accès, 1 = Lecture, 2 = Écriture) sur des procédures et formulaires.
1-Façon actuelle
Une table T_Groupes (donc, un utilisateur appartient à un groupe).
Chaque champ de la table correspond à un droit (exemples droit_parametres, droit_XXX, droit_XXX_1, droit_XXX_2, droit_YYY - et je simplifie).
À l'ouverture d'un formulaire, par exemple, je teste le droit de l'utilisateur et refuse l'ouverture ou verrouille certains éléments.
Cela fonctionne, mais plus on veut distinguer les droits, plus il y a de champs (et il me semble qu'il y a une limite).
2-Façon envisagée
Une table T_Groupes, pour le nom des groupes
Une table T_Droits, pour la liste des droits (champs : Id_Droit, Droit_Nom, Droit_Niveau (0,1,2))
Une table T_Autorisations, reprenant un Id_Groupe, un lien Id_Droit, un Autorisation_Niveau
L'avantage est d'avoir une "infinité" de droits, et de permettre d'être dans plusieurs groupes.
À l'ouverture d'un formulaire, par exemple, on teste la MaxAutorisation pour l'utilisateur.
Cela me semble plus lourd, permet à un petit futé de voir les droits en clair et d'outrepasser la sécurité pour modifier, ...
Autre inconvénient selon moi: en cas d'erreur dans la table T_Droits, ou de modification du nom d'un droit, cela pourrait faire bugger la procédure d'octroi d'un accès à l'ouverture d'un formulaire ou exécution d'une procédure.
J'hésite donc entre garder ma façon actuelle (limitée, mais fonctionne) et cette nouvelle façon envisagée.
J'espère avoir été clair.
J'attends vos avis.
Merci à vous!







Répondre avec citation




Partager