![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos/SQLDB
Verarbeiten von DB-Berechtigungen
Hallo mal wieder,
ich hoffe es ist mir gestattet mal mehrere Sachen auf einmal anzusprechen (ich weiß das das nicht gerne gesehen ist), aber irgendwie stehen die Punkte im Zusammenhang. Fangen wir an. 1.) wie sollten Berechtigungen verteilt werden. Einzeln pro User oder über Role´s 2.) wenn über Role´s kann man doch für spezielle User Berechtigungen erweitern (ein Test hierzu schlug leider fehl) 3.) die Berechtigungen werden ja über die Systemtabelle RDB$USER_PRIVILEGES abgefragt. Aber wie kann ich diese Berechtigungen an mein Hauptformular übergeben. Sinn ist es sofort bei der Erstellung/Öffnen des Formulares entsprechende Sachen auszublenden. Ich weiß das alle Punkte hier schonmal angerissen bzw. besprcohen wurden, jedoch noch nicht im Zusammenhang (jedenfalls nicht von mir gefunden). Wenn doch dann bitte ich um Vergebung ;-). Ati |
Re: Verarbeiten von DB-Berechtigungen
Zitat:
Zitat:
|
Re: Verarbeiten von DB-Berechtigungen
Nun ich möchte schon das nur spezielle Gruppen gewisse Sachen machen können, deshalb favorisiere ich ja auch die Role´s. Aber wie ihr es ja vielleicht auch kennt, kommt oftmals im laufenden Betrieb jemand und möchte dies oder das auch machen können. Daher auch meine Frage,ob es geht das ein User Rechte über seine Role hinaus bekommen kann.
Zitat:
|
Re: Verarbeiten von DB-Berechtigungen
So ich habe mir jetzt mal eine Testprozedure gebastelt. Hier mal das erste Ergebnis meiner geistigen Ergüsse:
Delphi-Quellcode:
Jetzt zeigt mir die Abfrage ja nur die erste Berechtigung an. Wie kann ich alle sichtbar machen?
procedure TfrmLogin.btnloginClick(Sender: TObject);
var rolle:String; begin {frmMain.Visible:= true; close; frmLogin := nil;} qrlog.SQL.Text:='SELECT RDB$RELATION_NAME,RDB$PRIVILEGE from RDB$USER_PRIVILEGES where (rdb$user_privileges.RDB$USER = '''+eduser.Text+''') and (rdb$user_privileges.rdb$object_type=13)' ; qrlog.open; label3.Caption:=qrlog.FieldByName('RDB$RELATION_NAME').AsString; rolle:=qrlog.FieldByName('RDB$RELATION_NAME').AsString; label4.Caption:=qrlog.FieldByName('rdb$privilege').AsString; qrlog.Close; qrlog.SQL.Clear; qrlog.SQL.Text:='SELECT RDB$PRIVILEGE from RDB$USER_PRIVILEGES where (rdb$user_privileges.RDB$USER='''+rolle+''')' ; qrlog.Open; label5.Caption:=qrlog.FieldByName('rdb$privilege').AsString; end; |
Re: Verarbeiten von DB-Berechtigungen
Delphi-Quellcode:
...
while not qrlog.Eof do begin ... qrlog.Next; end; |
Re: Verarbeiten von DB-Berechtigungen
Genau der richtige Hinweis. Für die Allgemeinheit nochmal die ganze Prozedure:
Delphi-Quellcode:
So möchte ich jetzt eigentlich weitergehen...die Variable "Level" an das Hauptformular übergeben (weiß aber noch nicht genau wie) und dort dann den String Zeichen für Zeichen auseinander nehmen um so die einzelnen Controls zu aktivieren bzw. deaktivieren. Ist das so richtig??
procedure TfrmLogin.btnloginClick(Sender: TObject);
var rolle,level:String; begin {frmMain.Visible:= true; close; frmLogin := nil;} qrlog.SQL.Text:='SELECT RDB$RELATION_NAME,RDB$PRIVILEGE from RDB$USER_PRIVILEGES where (rdb$user_privileges.RDB$USER = '''+eduser.Text+''') and (rdb$user_privileges.rdb$object_type=13)' ; qrlog.open; label3.Caption:=qrlog.FieldByName('RDB$RELATION_NAME').AsString; rolle:=qrlog.FieldByName('RDB$RELATION_NAME').AsString; qrlog.Close; qrlog.SQL.Clear; qrlog.SQL.Text:='SELECT RDB$PRIVILEGE from RDB$USER_PRIVILEGES where (rdb$user_privileges.RDB$USER='''+rolle+''')' ; qrlog.Open; while not qrlog.EOF do begin level:= level+qrlog.FieldByName('rdb$privilege').AsString; qrlog.next; end; qrlog.Close; showmessage(level); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz