![]() |
Re: Benutzerrechte für ein Programm verwenden
Kannst du denn mit Datenbankabfragen umgehen?
Delphi-Quellcode:
Nun kannst du folgendes machen:
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;
Delphi-Quellcode:
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.
MyButtonRight := getSecuLeveL(ProgID,1,'Buttons');
|
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 |
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 |
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... |
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:
|
Re: Benutzerrechte für ein Programm verwenden
Sag mal spaxxn, vergibst Du für jedes Form eine ProgID?
|
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. |
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/] |
Re: Benutzerrechte für ein Programm verwenden
Zitat:
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. |
Re: Benutzerrechte für ein Programm verwenden
Oder man liest
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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