Jag ska skriva en sql-fråga för att kolla behörigheter på sidor som finns i en databas.
Jag har tabellerna:
sidor
sidaID
sidaNamn
users
userID
userName
groups
groupID
groupName
membership
membershipID
userID
groupID
objects
objID
objName
objType
objTableName (anger tabellen som objektet ligger i exempelvis tabellen sidor)
objTableID (anger det unika id som finns representerat för objektet i tabellen)
ac1 (behörigheterna kopplas ihop med objekt och användare/grupp)
ac1ID
userID
groupID
objID
access
Nu om jag t.ex vill lista sidor som en användare har tillåtelse att visa hur skriver jag då sql-satsen så att högsta möjliga acces uppnås? T.ex om en användare inte har behörighet att visa en sida men är medlem i en grupp som har det så ska sidan visas. Tvärt om ska även fungera. Alltså om gruppen inte har tillåtelse att visa sidan men användaren har det.
Typ nått åt detta håll kanske
select * from sidor as s, obj as o, ac1 as a where s.sidaID = o.objTableID
and o.objTableName = ‘sidor’ and a.access > 0 and (a.userID= 4 or a.groupID in
(select groupID from membership where userID =4)) orderby s.sidaNamn