AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verarbeiten von DB-Berechtigungen
Thema durchsuchen
Ansicht
Themen-Optionen

Verarbeiten von DB-Berechtigungen

Ein Thema von Ati · begonnen am 22. Aug 2006 · letzter Beitrag vom 22. Aug 2006
Antwort Antwort
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#1

Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 14:12
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos/SQLDB
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
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 14:36
Zitat:
1.) wie sollten Berechtigungen verteilt werden. Einzeln pro User oder über Role´s
kommt darauf an, wieviel Benutzer und Datenbanken es sind. Und auch wie differenziert die Rechte sind. hast du z.B. viele Benutzer mit gleichen Rechten sind Roles besser. hat jeder Benutzer andere Rechte, wäre es umständlich erst für jeden Benutzer noch ne Rolle anzulgen.

Zitat:
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.
Du mußt dich zuerst mit einem Benutzer anmelden, der zumindest Leserechte auf die Systemtabellen hat, dann kannst du die Rechte auslesen und dich anschließend ummelden.
Markus Kinzler
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#3

Re: Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 15:03
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:
Du mußt dich zuerst mit einem Benutzer anmelden, der zumindest Leserechte auf die Systemtabellen hat, dann kannst du die Rechte auslesen und dich anschließend ummelden.
So ist/soll mein Programm auch aufgebaut werden. Mit dem Login-Formular melde ich mich als SYSDBA an und frage die Role ab. Die entsprechende Daten gebe ich dann an die Komponenten auf meinem DataModul.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#4

Re: Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 15:39
So ich habe mir jetzt mal eine Testprozedure gebastelt. Hier mal das erste Ergebnis meiner geistigen Ergüsse:
Delphi-Quellcode:
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;
Jetzt zeigt mir die Abfrage ja nur die erste Berechtigung an. Wie kann ich alle sichtbar machen?
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 15:43
Delphi-Quellcode:
...
while not qrlog.Eof do
begin
   ...
   qrlog.Next;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#6

Re: Verarbeiten von DB-Berechtigungen

  Alt 22. Aug 2006, 16:02
Genau der richtige Hinweis. Für die Allgemeinheit nochmal die ganze Prozedure:
Delphi-Quellcode:
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;
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??
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz