Das wäre mit Sicherheit die feine englische Art. Aber Benutzer in Gruppen stecken, Benutzerrechte überschreiben evtl. wieder Gruppenrechte, Benutzer in mehreren Gruppen - Das bekomme ich in gefordertet Zeit niemals hin, ich muss bei etwas einfacherem bleiben
So problematisch ist das nicht. Das basiert dann auf einer einzigen
SQL-Abfrage:
Code:
select us.name,
userrights.Rightid as UsRId,
Grouprights.Rightid as GRRId,
r1.Nr as UsRNr,
r2.Nr as GrRNr
from "user" as us
left outer join userrights on userrights.userid = us.id
left outer join usergroups on usergroups.userid = us.id
left outer join grouprights on grouprights.groupid = usergroups.groupid
left outer join Rights r1 on r1.id = Userrights.rightid
left outer join Rights r2 on r2.id = Grouprights.rightid
where ucase(us.name) = :username
and r1.nr = :nr or r2.nr = :nr
Wenn diese
Query etwas zurückgibt, hat der Benutzer
:username die Berechtigung für
:nr.