Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Benutzerrechte für ein Programm verwenden (https://www.delphipraxis.net/119428-benutzerrechte-fuer-ein-programm-verwenden.html)

spaxxn 26. Aug 2008 13:50

Re: Benutzerrechte für ein Programm verwenden
 
Kannst du denn mit Datenbankabfragen umgehen?
Delphi-Quellcode:
ProgID := 1; //globale Variable, damit du von allen Forms aus darauf zugreifen kannst.

function getSecuLevel(AProgID,AUserID:integer;AMask:string):integer;
begin
  if qry.active then
    qry.close;
  qry.sql.text := 'SELECT Right FROM USERRIGHTS WHERE ProgID=:ProgID AND UserID=:UserID AND Mask=:Mask';
  qry.ParamByName('ProgID').AsInteger := AProgID;
  qry.ParamByName('UserID').AsInteger := AUserID;
  qry.ParamByName('Mask').AsString := AMask;
  qry.Open;
  if qry.RecordCount = 1 then // Sollte 1 sein, wenn die Primärschlüssel richtig sind
    Result := qry.FieldByName('Right').AsInteger;
  qry.Close;
end;
Nun kannst du folgendes machen:
Delphi-Quellcode:
  MyButtonRight := getSecuLeveL(ProgID,1,'Buttons');
Ist nur aus dem Kopf. Die Benutzer werden natürlich in einer separaten Tabelle verwaltet und von dort müsstest du dann auch die ID des Benutzers bekommen.

DeddyH 26. Aug 2008 14:00

Re: Benutzerrechte für ein Programm verwenden
 
Mal ein etwas anderer Denkansatz:
- zunächst werden Konstanten für einzelne Rechte vergeben (Lesen = 1, Bearbeiten = 2, Neuanlage = 4, Löschen = 8 etc.)
- dann werden Benutzergruppen (Rollen) definiert
- nun wird festgelegt, welche Rolle welche Rechte auf welche Tabelle bekommen soll
- die Benutzer werden nun einer oder mehreren Rollen zugewiesen
- die effektiven Rechte eines Benutzers ergeben sich dann durch "verodern" der Rollenrechte

Ykcim 26. Aug 2008 14:04

Re: Benutzerrechte für ein Programm verwenden
 
Hi spaxxn,

ich habe mir Delphi weitestgehend selbst beigebracht und auch schon ein größeres Programm mit sehr unterschiedlichen Features in Kombination mit SQL-Abfragen geschrieben. Aber das ist auch schon alles. Mit sql-Anweisungen Daten holen bzw. editieren bekomme ich hin, aber mit der Vergabe von Rechten und ProgrammIDs habe ich halt keine Ahnung. Deshalb bin ich um jeden Tip dankbar.

Ich werde versuchen, Deinen Code nachzuvollziehen.
Vielen Dank dafür

Ykcim

spaxxn 26. Aug 2008 14:10

Re: Benutzerrechte für ein Programm verwenden
 
Wenn du das kapiert hast, dann kannst du das Ganze noch erweitern.

Z.B. um die Punkte die DeddyH angesprochen hat.

Das was ich dir da aufgezeigt habe, ist die minimalste Variante in dieser Richtung.


@DeddyH: Dein Denkansatz ist erweitert :D nicht anders...

DeddyH 26. Aug 2008 14:11

Re: Benutzerrechte für ein Programm verwenden
 
OK, das sah mir so aus, als gingest Du über die VCL-Objekte und ich über die Tabellen, daher "anders" :zwinker:

Ykcim 26. Aug 2008 14:18

Re: Benutzerrechte für ein Programm verwenden
 
Sag mal spaxxn, vergibst Du für jedes Form eine ProgID?

spaxxn 26. Aug 2008 14:24

Re: Benutzerrechte für ein Programm verwenden
 
Nein, die ist für jedes Programm als ganzes einmalig.

In der Spalte Mask würde man Rechte für Formulare und Buttons vergeben. Du kannst auch Rechte für Datensätze in der Datenbank vergeben, wenn dir danach ist.

angos 26. Aug 2008 14:41

Re: Benutzerrechte für ein Programm verwenden
 
Noch eine Idee,

wenn man alle Aktionen (Buttons klicken, Forms öffnen usw.) über das verwaltet, was dafür gedacht ist, nämlich die Actions, dann

braucht man die Benutzerrechte nur der jeweiligen Actions zuzuordnen.

Dadurch könnte sich das Programmieren der Rechteverwaltung ein wenig einfacher gestalten.

[edit: umformuliert/]

Ackerjan 26. Aug 2008 16:57

Re: Benutzerrechte für ein Programm verwenden
 
Zitat:

Zitat von spaxxn
Wenn du das kapiert hast, dann kannst du das Ganze noch erweitern.
Z.B. um die Punkte die DeddyH angesprochen hat.

Und dann wird verraten, warum man für die Rechte (Lesen = 1, Bearbeiten = 2, Neuanlage = 4, Löschen = 8 etc.) gut Zweierpotenzen nehmen kann :cyclops:!.

Will man z.B. sagen:
- für User mit den Rechten 1,4,16 ist die Componente sichtbar/aktiv machen, so kann man hier z.B. im Tag die Summe 21 eintragen und weiß alle Rechte. Wer nicht weiß warum schreibt die Zahl mal als Binärcode auf.

Viel Erfolg.

DeddyH 26. Aug 2008 17:17

Re: Benutzerrechte für ein Programm verwenden
 
Oder man liest hier nach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 Uhr.
Seite 2 von 3     12 3      

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