Permissie systeem via database voor forum
Ik heb nu al een aantal uren zitten denk hoe ik op een beste manier een database opstelling kan maken voor een forum en permissies.
Ik zal effe uitleggen wat ik nu heb:
gebruikerslijst met ranknummer (verwijst naar rankenlijst)
rankenlijst met groepnummer (verwijst terug naar groepenlijst)
groepenlijst
Ik kom zelf niet op de manier hoe ik de database moet opzetten voor de permissies op het forum per (sub)categorie. Alle categorien worden in 1 database tabel gezet.
Nu wil ik per categorie aangeven welke rank/groep toegang krijgt tot het forum met de volgende mogelijkheden:
lezen, schrijven, aanpassen, verwijderen
Wie kan mij helpen het met datamodel of heeft voor zijn eigen forum een goed permissie systeem. Ik heb al zitten kijken naar het phpBB permissie systeem alleen daar snap ik geen *piep* van.
EDIT:
Ik wil graag ook ranken en groepen kunnen toevoegen, maar zelf weet ik al wel hoe dat moet, maar daar moet ook nog rekening mee gehouden worden.
Gewijzigd op 01/01/1970 01:00:00 door Steef
De betekenis van permissie kan dan in een andere tabel komen.
Je zou ook bij de gebruiker een profiel veld kunnen toevoegen. In een andere tabel leg je dan uit welke permissie overeen komt met welke permissies.
Bv. admin = alle permissies, moderator = ..., gebruiker = ...
- id
- naam
rol_permissie:
- id_rol (foreign key op id in tabel rollen)
- id_permissie (foreign key op id in tabel permissies)
permissies
- id
- naam
En klaar is Kees.
Oh ja, de gebruiker, die geef je 1 (één) rol:
users:
- id
- id_rol (foreign key op id in tabel rollen)
- naam
Hoe kan ik de manier van pgFrank het beste combineren met de verschillende categorien?
Is het niet makkelijker dan om bitwise te werken?
Jens schreef op 04.10.2008 14:50:
En dan mag jij gaan uitzoeken welke rechten er nu precies bij 1 horen en waarom 0 problemen geeft.@Frank:
Is het niet makkelijker dan om bitwise te werken?
Is het niet makkelijker dan om bitwise te werken?
Er is geen touw aan vast te knopen, het is dikke ellende en eigenlijk alleen bruikbaar wanneer je niet meer en NOOIT meer dan 2 á 3 rechten hebt. Maar die situatie komt maar zeer, zeer zelden voor, bitwise is dus eigenlijk altijd een beroerde oplossing. En ja, ik heb er ruime ervaring mee en weet 200% zeker dat ik hier nooit meer mee wil werken. De meest vage bugs en andere problemen zijn je deel.
Wanneer iemand rol A heeft en in deze rol zit het recht 'aanmaken bericht' of 'bekijken categorie X', dan kun je vrij eenvoudig een vergelijking maken wanneer deze functionaliteiten worden aangeroepen.
Bij het inloggen van een persoon, vraag je dus zijn rol en bijbehorende rechten op.
Uiteraard kun je dit ook op database-niveau gaan regelen, maar dan wordt het wel wat complexer doordat je heel nauwkeurig per rol de juiste rechten met GRANT en REVOKE moet gaan instellen. Dat is niet iets voor beginners.
Tip: Google eens op het begrip RBAC.