Prog avec droits d'utilisateurs

penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006 - 14 juil. 2005 à 09:57
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006 - 14 juil. 2005 à 14:41
Bonjour à tous,

je suis en train d'imaginer une nouvelle application de gestion qui sera utilisée par différentes personnes avec des droits différents pour cette application.

En gros, ce que je compte faire, c'est une table dans une base de données qui reprend le nom du pc du gars qui va travailler avec cette applic, ainsi que les droits sur ce programme. (par exemple, pc-toto a tous les droits, pc-titi n'a droit qu'à visualiser les données dans le programme, donc pas de boutons supprimer, nouveau ou autre disponible pour lui.)

Mais dans le programme, comment puis-je faire ça? Personne n'a une source sur laquelle je peux m'inspirer, ou un tuto ou une bonne explication?

Merci d'avance

10 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 juil. 2005 à 10:17
Tout dépend du genre de limitation que tu veux faire : il êux s'agit de
ne pas afficher certains menus, de ne pas afficher certaines feuilles,
de ne pas afficher certains contrôles, de ne pas permettre la
modifications de certains champs, etc. Il faut faire au cas par cas.



Dans ce que tu propose, je pense que désactiver certains contrôles pourrait faire l'affaire.



Ce genre de domaine est vaste, et très fastidieux à développer pour
garder une interface uniforme pour tous sans que chacun se rende compte
de ces accès limités.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
14 juil. 2005 à 10:20
ben en fait, l'appli que je dois réaliser ne comprendra au maximum que 5-6 boutons et 2-3 sous menus à gérer au niveau des droits d'accès. Ce n'est pas énorme.

Donc en fait, ce que je voudrais c'est lancer l'appli avec les boutons enabled ou disabled en fonction du nom de l'utilisateur qui se connecte. (Ca doit pas être super sécurisé, ça reste dans l'intranet et les gens qui l'utiliseront ne sont vraiment pas experts en informatique)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 juil. 2005 à 10:38
A ce moment là, je te conseille de faire la chose suivante :



* Stocke dans une table tes droits utilisateurs (un champ Nom utilisateur, et un champ Droits)

* Dans le champ nom, tu stocke le nom que choisiront les utilisateurs
au démarrage de ton prog (ou un nom qui est stocké dans la base de
registre ou autre, bref, un paramètre définit à l'avance pour savoir
qui utilise le prog), et dans le champ droits, utilise un champ
numerique pour stocker, sous forme de flag, les boutons qui sont
enabled ou pas.

* Au démarrage du prog, tu lis les droits de l'utilisateur courant, et
tu active/désactive les boutons/menus selon les droits que tu as donné.



Le champ numérique des droits doit ressembler à un truc comme cà :

* 0 : tout les boutons/menus sont désactivés

* 1 : seul le premier bouton est actif

* 2 : seul le deuxième bouton est actif

* 3 : seuls le premier et le deuxième bouton est actif

* 4 : seul le troisième bouton est actif

* 5 : seuls le premier et le troisième bouton sont actifs

* 6 : seuls le deuxième et le troisième bouton sont actifs

* 7 : seuls les trois premiers boutons sont actifs

* etc.



En gros, pour tester si un bouton est actif :

if (index du bouton)^2 And Droits Then 'il est actif



Cette méthode te permet de rajouter facilement des boutons par la suite
sans devoir toucher à la structure de ta base de données. C'est la
méthode utilisée par les fonctions de l'API entre autre pour les
options d'une fonction, et c'est très efficace !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
14 juil. 2005 à 11:11
* Au démarrage du prog, tu lis les droits de l'utilisateur courant, et tu active/désactive les boutons/menus selon les droits que tu as donné.

Le champ numérique des droits doit ressembler à un truc comme cà :
* 0 : tout les boutons/menus sont désactivés
* 1 : seul le premier bouton est actif
* 2 : seul le deuxième bouton est actif
* 3 : seuls le premier et le deuxième bouton est actif
* 4 : seul le troisième bouton est actif
* 5 : seuls le premier et le troisième bouton sont actifs
* 6 : seuls le deuxième et le troisième bouton sont actifs
* 7 : seuls les trois premiers boutons sont actifs
* etc.

En gros, pour tester si un bouton est actif :
if (index du bouton)^2 And Droits Then 'il est actif

Et tu fais comment en code ça? Parce qu'en fait, qqn m'a déjà donné le même principe que ce que tu me donnes là, mais je n'y parviens pas du tout (ni lire les droits de l'utilisateur courant, ni affecter ses droits dans le prog)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 juil. 2005 à 12:34
ben déjà, est-ce que tu as déjà utiliser une base de données ?



Car si ce n'est pas le cas, lit des tutoriaux sur les bases de données
pour comprendre comment ca marche avant d'essayer de faire ce genre de
chose, sans cà, je ne pourrais pas tout t'expliquer.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
14 juil. 2005 à 12:53
si si les bases de données, j'en ai déjà fait, mais j'avoue que j'ai un peu de mal.
Tu peux expliquer, je comprendrais bien.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 juil. 2005 à 13:15
Donc, tu ouvre un recordset sur la table contenant les utilisateurs avec leurs droits.



Pour l'enregistrement :

Dim lDroit As Long

If PremierBouton.Visible then Let lDroit = lDroit Or 1
If DeuxièmeBouton.Visible then Let lDroit = lDroit Or 2

If TroisièmeBouton.Visible then Let lDroit = lDroit Or 4

If QuatrièmeBouton.Visible then Let lDroit = lDroit Or 8

If CinquièmeBouton.Visible then Let lDroit = lDroit Or 16

If SixièmeBouton.Visible then Let lDroit = lDroit Or 32

If PremierMenu.Visible then Let lDroit = lDroit Or 64

If PremierMenu.Visible then Let lDroit = lDroit Or 128

If PremierMenu.Visible then Let lDroit = lDroit Or 256



La variable lDroit stocke donc le nombre à enregistrer dans le champ
Droit de l'utilisateur, et ca te permettra de savoir quel bouton/menu
sera visible pour tel ou tel utilisateur. (bien entendu, c'est à toi de
définir lesquels seront visibles ou pas avant de lancer
l'enregistrement).



Et pour le chargement :

If lDroit And 1 Then PremierBouton.Visible = true

If lDroit And 2 Then PremierBouton.Visible = true

'etc.


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
14 juil. 2005 à 13:30
Mais voila, on en revient au même problème que j'ai eu avec celui qui m'a expliqué cette méthode aussi.

Je comprends pas du tout ces histoires de and et de or.
Et puis, ADODB, j'y touche plus du tout depuis un an au moins, je suis toujours avec ADO.Net maintenant.

Bon en fait, comme je me sers du nom de l'utilisateur du pc pour se connecter au programme (et avoir ainsi les droits appropriés), j'ai juste à faire une requete : "SELECT * FROM users WHERE nom_pc = '" & Environment.Username & "';" ??

Et une fois que j'ai exécuté ma requête, je fais quoi....

Ya vraiment pas moyen de mettre le code complet histoire de vraiment bien comprendre comment ça marche???
Mais vraiment complet complet depuis la connexion à la db jusqu'à la fin? Ce serait vraiment utile je pense, parce que tu n'es pas le 1er à m'expliquer ce truc et que je pige pas (et que j'aimerais vraiment piger)

Pour info, voici la strucutre de mes tables, peux-tu me dire également si c'est comme ça qu'il faut faire???
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 juil. 2005 à 14:28
Ben le code que je t'ai passé est quasiment complet :



Tu fait ta requête avec "SELECT * FROM users WHERE nom_pc = '" &
Environment.Username & "';" que tu stocke dans oRecordset par
exemple.



Ensuite :



Dim lDroit As Long

If PremierBouton.Visible then Let lDroit = lDroit Or 1

If DeuxièmeBouton.Visible then Let lDroit = lDroit Or 2

If TroisièmeBouton.Visible then Let lDroit = lDroit Or 4

If QuatrièmeBouton.Visible then Let lDroit = lDroit Or 8

If CinquièmeBouton.Visible then Let lDroit = lDroit Or 16

If SixièmeBouton.Visible then Let lDroit = lDroit Or 32

If PremierMenu.Visible then Let lDroit = lDroit Or 64

If PremierMenu.Visible then Let lDroit = lDroit Or 128

If PremierMenu.Visible then Let lDroit = lDroit Or 256


Tu enregistre ca dans ta table :



let oRecordset.Fields("Rights").Value = lDroit



Ca te permet donc d'avoir les droit pour 1 utilisateur, modifie les
propriétés Visible de tes boutons/menus, et enregistre de nouveau pour
un autre utilisateurs, etc.



Après à l'ouverture :

If oRecordset.fields("Rights").value And 1 Then PremierBouton.Visible = true

If oRecordset.fields("Rights").value And 2 Then PremierBouton.Visible = true

'etc.



La je peux pas faire plus explicite que cà !




DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
14 juil. 2005 à 14:41
si en faisant le meme avec un dataset....

une chose cependant, pourquoi le "OR"
0
Rejoignez-nous