Bonjour!

Je souhaite, à l'aide des tables système, récupérer les droits qu'une personne a sur une table.

Par exemple l'utilisateur X a la capacité de consulter la table A, mais ne peux pas consulter le champ A.d. Par contre, l'utilisateur Y peut à la fois consulter et modifier A (sauf modifier le champ A.d).


J'ai défini ces droits en utilisant des rôles : ainsi X appartient à un rôle et Y à un autre rôle.

Comment puis-je faire pour déterminer qui peux faire quoi? car je souhaite, à partir de la base, récupérer les infos d'une personne en fonction de ses droits (faire apparaître tel champ a1 et pas a2), ou mettre dans un textbox les champs modifiables (=> identifier si la personne a des droits en update) et les autres dans des champs non éditables.


J'ai trouvé un lien dans la msdn décrivant les tables système, et après bidouille de requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select sysobjects.name,sysusers.name,sysobjects.xtype from sysobjects,syspermissions, sysusers where syspermissions.grantee = sysusers.uid
and sysobjects.id=syspermissions.id order by sysusers.name
;
J'obtient des noms de tables et de procédure, le nom du rôle concerné par la permission mais pas assez de détail (je pige pas tout dans ces tables) pour savoir quel champ et quel type de droit l'utilisateur possède.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
ACTIVITE	Collaborateur	U 	U 
AGENCE	Collaborateur	U 	U 
AVOIR_POUR_RESPONSABLE	Collaborateur	U 	U 
AVOIR_SUIVI_FORMATION	Collaborateur	U 	U 
CLIENT	Collaborateur	U 	U 
COLLABORATEUR	Collaborateur	U 	U 
DOMAINEACTIVITE	Collaborateur	U 	U 
FORMATION	Collaborateur	U 	U 
INTERLOCUTEUR	Collaborateur	U 	U 
MISSION	Collaborateur	U 	U 
PROJET	Collaborateur	U 	U


Merci d'avance

Charly