Droits d'acces menus et fonctions

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 15 juil. 2011 à 16:17
NHenry Messages postés 15119 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 19 mai 2024 - 28 juil. 2011 à 21:09
Bonjour,
je cherche encore et toujours de pouvoir gérer de manière simple des droits d'acces a des menus ou fonctions selon les utilisateurs.
J'ai une application winform.
Au depart j'ai défini pour des utilisateurs des niveaux : 1 -> 5
1 le plus fort pas de restriction
5 le plus faible limité


mais c'est trop "rigide", je veux pouvoir pour chaque utilisateur définir les menus et fonctions qu'il pourra executer

je voudrais quelque chose de plus "fin" et je ne sais pas comment m'y prendre.

Je voudrais pouvoir définir des profils types d'une part avec des acces ou non a des menus/fonctions selon le modele : ex admin / gerant / employe ...

puis pour chaque utilisateur pouvoir "redéfinir" les accès => ajouter ou enlever tel fonction ou menu ( ou meme control sur un formulaire : ex : un bouton enregistrer accessible pour certains et pas pour d'autre de meme la fonction enregistrer si elle peut etre appelé par un raccourci clavier ne doit pas fonctionner)

Une methode que je vois mais qui me semble colossale :
-créer une table avec l'ensemble des fonctions du logiciel ( donc tous les menus , puis tous les boutons/fonctions)
et associer pour chaque utilisateur une ligne de cette table avec oui/non (true/false) dans chaque colonne
(si j'ai 100 formulaires avec 20 fonctions chacun , ca me fait une table avec 2000 colonnes + 1 pour le n° d'utilisateur)


ensuite dans chaque menu , il faudrait uun if pour chaque fonction , est elle autorisée ou non => donc reprendre tous les formulaire et mettre des if partout...
(20000 encore a priori)

mais cela me semble absolument enorme comme travail.


Existe t il quelque chose d eplus simple et/ou efficace pour faire ce genre de chose ?
C'est quand meme quelque chose d'assez courant comme dmeande non ?

je cherche autre chose de plus simple si cela est possible

4 réponses

NHenry Messages postés 15119 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 19 mai 2024 159
15 juil. 2011 à 22:02
Bonjour,

Je te propose une autre vue de ton pb :
Imagine une liste qui recense les contrôles soumis à droits, à chaque contrôle, un ID unique est assigné.

Ensuite, une table listant les utilisateurs, les contrôles (ID) et si l'accès est autorisé ou pas.

Tu n'as plus qu'à demander à une fonction codée spécialement en lui passant la Form, à partir du nom de la Form, cette fonction récupère tous les contrôles renseignés pour l'utilisateur et y applique les droits afférent.

Certes, faire des groupes d'utilisateurs peut être une solution pour limiter le nombre de droits à assigner.

Et cette technique a une limite, car si tu renomme un contrôle, il faudra redéfinir les droits.

0
Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 656
16 juil. 2011 à 22:54
Bonsoir,
l'idée est bonne, pour éviter le problème en cas de rennomage du contrôle, tu peux utiliser la propriété Tag.


Whismeril
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
26 juil. 2011 à 08:21
merci pour ces reponses
mais je ne comprend pas trop ce que va faire la "fontction" et comment l'implementer
0
NHenry Messages postés 15119 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 19 mai 2024 159
28 juil. 2011 à 21:09
Bonjour,

Il te faut lister tes contrôles présent sur ta form : Conteneur.Controls
Attention, les contrôle conteneur (GroupBox, Panel, ... Contiennent une partie des contrôles.

Ensuite, tu peux récupérer leur nom : Controle.Name
Et en les associant avec le nom de la Form, tu as une identification unique.

Est-ce que ça te semble plus clair ?

0
Rejoignez-nous