Entwickler-Ecke

Datenbanken - Oracle: User Roles per SQL ermitteln


delphijanka - Mi 19.08.09 12:31
Titel: Oracle: User Roles per SQL ermitteln
Hallo.

Folgende Situation:

ein Benutzer meldet sich in der DB, und je nach dem, welche ROLE ihm zugewiesen ist, deaktiviert mein Delphi-Programm bestimmte Menüpunkte. Wie kann ich also ermitteln, welche Rollen dem Benutzer zugewiesen sind?

Danke.


mkinzler - Mi 19.08.09 12:32

Welches DBMS?


delphijanka - Mi 19.08.09 12:36

@mkinzler

habe den Titel spezifiziert.


iKilledKenny - Mi 19.08.09 12:41

Ich mache das so, dass ich der Reihe nach alle möglichen Rollen durchprobiere. Wenn eine Rolle nicht aktiviert werden kann, gibts eine Exception, die ich gezielt abfange.

Ansonsten gibts die System-Tabelle DBA_ROLE_PRIVS, da steht drin, welcher User welche Rolle(n) hat. Auf diese Tabelle braucht man aber DBA Rechte.


delphijanka - Mi 19.08.09 12:45

@iKilledKenny schreibt:

"Ich mache das so, dass ich der Reihe nach alle möglichen Rollen durchprobiere. Wenn eine Rolle nicht aktiviert werden kann, gibts eine Exception, die ich gezielt abfange."

verstehe deinen Ansatz nicht wirklich.


iKilledKenny - Mi 19.08.09 12:56

Was verstehst du denn daran nicht?


delphijanka - Mi 19.08.09 12:58

@iKilledKenny

Verstehe gar nichts. Bitte beschreibe es detaillierter.


iKilledKenny - Mi 19.08.09 13:01

Detaillierter gehts nicht. Du probierst der Reihe nach alle Rollen deiner Applikation durch. Die, die der User hat, gehen gut, die anderen geben eine Exception, die man gezielt abfangen kann.


delphijanka - Do 20.08.09 12:34

Hier im Net gufunden:

Aktuellen user lesen:

SELECT user FROM DUAL;

Rechte lesen:

SELECT * FROM USER_ROLE_PRIVS WHERE USERNAME = USER ;

2. Spalte der Tabelle "USER_ROLE_PRIVS" heisst "GRANTED_ROLE" und enthält die Namen der Rollen, die der User hat.


jakobwenzel - Do 20.08.09 14:44

iKilledKenny: Und um zu testen ob die Ampel rot ist fährst du über die Kreuzung und guckst ob einer in dich reinfährt. :wink:


iKilledKenny - Do 20.08.09 15:04

Da hat wohl einer nen Clown gefrühstückt... 8)