AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage für Rechtesystem mit Priorität

SQL Abfrage für Rechtesystem mit Priorität

Ein Thema von Brainshock · begonnen am 10. Sep 2007 · letzter Beitrag vom 15. Sep 2007
 
Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#1

SQL Abfrage für Rechtesystem mit Priorität

  Alt 10. Sep 2007, 13:51
Datenbank: SQL • Zugriff über: ODBC
Hallo Gemeinde,

ich schreibe gerade an einem Rechtesystem und hänge momentan bei einer SQL Abfrage.
Der Benutzer meines Programms sucht über eine Datenbanktabelle, soll aber nur Datensätze als Ergebnis zurückbekommen, auf die er das Recht zum Anzeigen (Rightid = 6) hat. Der Tabellenaufbau gestaltet sich so:

Datentabelle (RECHN)

Code:
OBJID | BARCODE | ABSENDER | RECHNR
R-0178 | 00187109 |        1 | 232323   
R-0179 | 00187110 |        3 | 343434
Rechtetabelle (DBACCESS)

Code:
OBJID | RIGHTID | USERID | GROUPID | ACCESS
R-0178 |       6 |    101 |  <NULL> | True
R-0178 |       6 | <NULL> |       2 | False
R-0179 |       6 |    101 |  <NULL> | False
R-0179 |       6 | <NULL> |       2 | True
Die Verbindung zwischen der Datentabelle und der Rechtetabelle erfolgt über die Spalte OBJID.
Mein Benutzer hat die Userid 101 und ist in der Gruppe mit der Groupid 2.

In meinem Beispiel hat der Benutzer auf die ObjId R-0178 das Recht zum Anzeigen und auf die ObjId R-0179 nicht. Die Benutzerrechte haben Priorität, d.h. wird etwas über die Benutzerid verweigert, kann es nicht über eine Gruppe ausgehebelt werden.

Meine momentane, nicht richtig funktionierende, Abfrage sieht wie folgt aus:

SQL-Code:
SELECT DISTINCT RECHN.OBJID, RECHN.BARCODE, RECHN.ABSENDER, RECHN.RECHNR FROM DBACCESS, RECHN WHERE
DBACCESS.OBJID = RECHN.OBJID AND DBACCESS.RIGHTID = 6 AND
(
    (
        DBACCESS.USERID=101 AND DBACCESS.ACCESS = 'True'
    )
    OR
    (
        (
            (
                DBACCESS.GROUPID = 2 AND DBACCESS.ACCESS = 'True'
            )
            AND NOT
            (
                DBACCESS.USERID = 101 AND DBACCESS.ACCESS='False'
            )
        )
    )
)
Vielleicht kann mir einer von euch bei meiner Abfrage behilflich sein kann. Danke.

Gruß
Matthias
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:50 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 by Thomas Breitkreuz