|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2003 Messages : 48 ![]() |
Bonjour,
Je suis entrain de réaliser une interface d'administration pour gerer les utilisateurs de mon aplication. J'utilise donc sous Delphi7 un TIBSecurityService pour ajouter et supprimer des utilisateurs. Je cherche maintenant le moyen d'afficher tous les Utilisateurs referencés pour mon application. Facile ils ont tous un point communs : Il appartiennent tous au role 'ROLE_MON_APLLI'. Recuperer la liste de tous les utilisateur se fait aisément a l aide d'un TIBSecurityService, en revanche, comment savoir si un utilisateur lamba appartient au role 'ROLE_MON_APLLI' ? Merci |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2003 Messages : 48 ![]() |
Je répond partiellement à ma question, ce qui m'ammene à une nouvelle question :
en lancant cette requete : Code :
SELECT * FROM RDB$user_privileges WHERE rdb$relation_name='MON_ROLE' AND rdb$privilege='M' Nouveau probleme : dans cette liste figure les utilisateurs qui ont ete créés, puis qui ont recu les privilege du role 'MON_ROLE', puis qui ont été supprimés. (ca me fait une belle jambe de savoir que l'utilisateur XXXX, qui a été supprimé y a 1 an, etait membre du role 'MON_ROLE'). donc ma nouvelle question : Comment recuperer la liste de tous les utilisateurs "valide" au moment présent ? c'est à dire ceux qui peuvent ACTUELLEMENT se connecter à interbase ? |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Il ne reste plus qu'à restreindre la liste avec la liste des utilisateurs retournés par le TIBSecurityService.
Et comme cette liste (les utilisateurs) se trouve dans la base isc4.gdb et qu'on ne peux pas faire de requete inter-base (c'est un comble Donc je vois plusieurs solutions : 1- Soit restreindre la liste manuellement. 2- Essayer un backup/restore (avec recréation de la base) pour voir si ça ne fait pas le ménage et du coup votre requete sera bonne. 3- Soit avant de supprimer un USER vous lui enlever les ROLES auquel il appartient. 4-Utiliser une UDF extistante (ou créer sa propre UDF), qui vérifierait si le USER existe encore dans isc4.gdb. Voilà les pistes que j'explorerai. Bonnes recherches. (Merci de nous tenir informer, ça peux interresser d'autres internautes |
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2003 Messages : 48 ![]() |
Merci Bardibulle,
j'ai réaliser la permiere solution. Voici un le bout de code qui permet de le réaliser en DELPHI7, si ca interesse certain : Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Merci bien
J'ai juste une remarque, plutot que de faire s := RDB$USER='USER1' OR RDB$USER='USER2' OR RDB$USER='USER3' vous pouviez utiliser RDB$USER in ('USER1','USER2','USER3') et donc simplifier votre code : Code :
|
||
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2003 Messages : 48 ![]() |
hooo merci de l astuce !!
je pensais que l 'opérateur IN ne pouvait etre utilisé qu'avec une requete (pour son opérateur Droit). effectivement je vais pouvoir clarifier mes requetes |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com