login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Rechtensysteem

Offline Button - 04/04/2007 16:35 (laatste wijziging 04/04/2007 16:37)
Avatar van ButtonPHP ver gevorderde Allo,

ik een 'theorie'-vraag: ik maak momenteel voor mijn website gebruik van het rechtensysteem gebaseerd op 2n^x ofwat dan ook 
Maar nu vind ik dat dat systeem me te weinig vrijheid geeft voor het aanpassen van rechten van de gebruiker, het is te simpel..

Nu, mijn vraag is welke (rechten)systemen gebruiken jullie en wat zijn hiervan de pro's en contra's en hoe werkt het?

Ik wil eerst een degelijk systeem alvorens verder te gaan met verdere projecten op mijn website om later te veel bijwerk te vermijden.

Alvast bedankt.

8 antwoorden

Gesponsorde links
Offline Stijn - 04/04/2007 17:16
Avatar van Stijn PHP expert Een gebruiker heeft paar rechten per sectie:
- gebruiker kan de sectie bekijken (view)
- gebruiker kan in de sectie posten (edit)
- gebruiker kan de sectie beheren (admin)

Per sectie wordt dat bepaald. Stel dat ik 2 secties heb: nieuws en forum

nieuws sectie:
- bezoeker: v--
- lid: ve-
- moderator: ve-
- admin: vea

forum sectie
- bezoeker: v--
- lid: ve-
- moderator: vea
- admin: vea

Dus je moet zien tot welke groep de user behoort en welke rechten die groep heeft.
Offline ikkedikke - 04/04/2007 17:27
Avatar van ikkedikke PHP expert dit is principe hetzelfde als dat met die 2^x, alleen gebruik je nu letters voor ieder recht waar je bij die hij al heeft een bitje per recht gebruikt
Offline Gerard - 04/04/2007 18:17
Avatar van Gerard Ouwe rakker Ik werk op dit moment met een systeem wat iedereen wel voorkomt. Het befaamde user-usergroup systeem. De rechten worden met dit systeem niet direct aan een user gekoppeld maar aan een usergroup. Het systeem zoals ik het gebruik is ook niet in staat om rechten in te stellen per user, maar alleen per usergroup.

Mijn database hiervoor bestaat uit 5 tabellen om de rechten te koppelen. Ik maak gebruik van de volgende tabellen:
- user
- usergroup
- usergroupaccess
- function
- functionaccess

Zoals je ziet is het dus mogelijk om een user onder te brengen bij meerdere usergroups. De grote 'vraag' was nu nog alleen hoe ik flexibel genoeg om kon gaan met rechten. Wat nou als een user met 1 usergroup toegang heeft tot een function maar niet met zijn tweede usergroup? Om dat op te lossen heb ik een veld precedence geintroduceerd in de function tabel. Met de precedence geef ik de voorkeur aan. Wanneer dit veld een 1 bevat dan is het genoeg dat 1 van de usergroups toegang heeft tot deze functie. Als we dit weg zetten in een decision table dan krijg je ongeveer dit:
  1. +--------------------+-----+-----+-----+-----+-----+-----+--------------+
  2. | Precendence | 1 | 0 | 1 | 0 | 1 | 0 | Condition |
  3. | Usergroups toegang | A | A | E | E | G | G | Stubs |
  4. +--------------------+-----+-----+-----+-----+-----+-----+--------------+
  5. | Verleen toegang | X | X | X | | | | Action Stubs |
  6. +--------------------+-----+-----+-----+-----+-----+-----+--------------+
  7. | A = Alle |
  8. | E = Enkele |
  9. | G = Geen |
  10. +-----------------------------------------------------------------------+


Dit geeft mij op dit moment genoeg vrijheid. Ik koppel dus een functie (bv addNewsItem (of dP style; 'NEWS_ADD')) aan een usergroup.
Offline webstab - 04/04/2007 19:10
Avatar van webstab PHP ver gevorderde In mijn database twee tabellen: groups, permissions
In groups staat bv. : beheerder, moderator, lid
In permissions staat het zoals stijn. (Per sessie/onderdeel)
Offline Button - 04/04/2007 23:07
Avatar van Button PHP ver gevorderde @allemaal: bedankt voor alle reacties
@proximus: lijkt me wel interessant maar voor wat dienen die usergroupacces en functionacces? wordt in de usergroupacces de user met de usergroup gekoppeld in de functionacces de function met de de usergroup?

en wat betekenen die condition, stubs en action stubs in die decision table (wat dat ook mag wezen )?

nog andere mensen ander voorstellen?

alvast bedankt 
Offline Gerard - 04/04/2007 23:15
Avatar van Gerard Ouwe rakker
Citaat:
@proximus: lijkt me wel interessant maar voor wat dienen die usergroupacces en functionacces? wordt in de usergroupacces de user met de usergroup gekoppeld in de functionacces de function met de de usergroup?
Precies zoals je het zelf al zegt. Omdat een gebruiker bij meerdere usergroups kan horen en een usergroup meerdere users heeft praat je dus over een veel-op-veel relatie. Hiervoor dien je dus een koppeltabel te nemen.

Hetzelfde geldt dan dus ook voor de functies. Een functie als NEWS_ADD kan horen tot meerdere usergroups en een usergroup heeft toegang tot meerdere functies.

Citaat:
en wat betekenen die condition, stubs en action stubs in die decision table (wat dat ook mag wezen )?
Dat zijn gewoon de benamingen zoals deze gebruikt moeten worden in een 'decision table'. De 'condition stubs' zijn die delen waar het aan moet voldoen om bepaalde acties uit te voeren (action stubs).

Ik heb vanmiddag hier nog even verder op zitten denken en heb nu ook een systeem uitgevonden om bovenstaande te implementeren en alsnog op user-niveau bewerkingen uit te voeren (toegang te verlenen). Maar dat laat ik aan de rest over hier om zoiets ook te bedenken. Ik ga niet alle geheimpjes prijs geven ;)
Offline Button - 04/04/2007 23:24 (laatste wijziging 04/04/2007 23:30)
Avatar van Button PHP ver gevorderde hey, dankje.. 

daar zit ik nu eigenlijk al enkele weken met in mijn hoofd: er zouden misschien eens tutorials moeten komen die dit soort dingen uitleggen, dus niet echte specifieke technieken met gewoon uitleggen van functies, maar tutorials die uitleggen hoe je bv. een degelijk (/gecompliceerd) rechtensysteem, inlogsysteem, enz.... maakt -> dus niet echt de praktijk maar meer theorie-achtig met best wat code vb. voor duidelijkheid.. idee?
Offline Gerard - 05/04/2007 00:18
Avatar van Gerard Ouwe rakker Het uitleggen van een denk proces is nogal moeilijk denk ik zomaar. Mijn methode heb ik juist ontworpen door gewoon constant verbeteringen aan te brengen aan mijn huidige systemen.

De reden dat ik hier nooit een tutorial over geschreven heb is omdat er zoveel verschillende manieren zijn om zo'n rechtensysteem te maken. Iedereen heeft gewoon zijn eigen voorkeur en ik zie de reacties al komen met daarin zaken als 'ik vind bitwise dan toch beter' en dergelijke.

Tutorials maak je daarnaast voor een hele community en niet voor één persoon specifiek. In de afgelopen jaren heb ik heel wat kennis vergaard en ik heb er altijd veel moeite voor moeten doen. Maar de insteek die hier soms wordt gebruikt van 'ik dump mijn probleem hier maar en wacht tot iemand wat code paste die werkt' wil ik niet aansporen door ook dit soort dingen voor te kauwen. Dat je de basis van dingen leert door middel van tutorials vind ik nogal logisch, maar om die toe te passen vind ik toch echt dat je dit zelf zou moeten doen.

Natuurlijk help je hier dan geen beginnende users mee met hun 'rechtenprobleempje', maar het is dan mijn intentie ook nooit geweest om mensen aan het handje mee te nemen. In vrijwel alle replies die ik plaats probeer ik mensen in de richting te sturen die ze op kunnen en niet zozeer alles voor te kauwen (tenzij ik echt zin in heb om het zelf even te proberen, dan zal ik de resultaten vaak posten).

Al met al is het dus heel persoonlijk hoe men zoiets vorm wil geven en ik post dit soort dingen vrijwel nooit omdat ik er een hekel aan heb om kritiek te krijgen. 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s