Hallo,

Ik ben bezig met mijn eigen forum en dat lukt al aardig. Alleen nu moet ik nog het permissie systeem maken.

De categorien en topics/reply's komen te recht in een database.

Ik heb 5 verschillende rangen om op mijn forum.
1.Bezoeker
2.Gebruiker
3.Moderator
4.Volledig moderator
5.Administrator

Echt wil ik nu weten hoe ik permissies aan iedere categorie kan geven. Het wilde me niet lukken iets te bedenken hoe het precies zit. bijvoorbeeld als de Gebruiker de berichten mag aanpassen mogen de Moderator, Volledig moderator en Admin dat ook. Maar als de Admin alleen iets mag doen mogen de onder staanden dat niet.

Heeft iemand zoiets ooit al gemaakt, of heeft hier informatie over hoe dit gemaakt kan worden. Het liefste met voorbeeld, maar hoeft niet. (voorbeeld om te kijken hoe het werkt, zo leer ik zelf het beste.)

Groet en alvast bedankt, Steef
Als ik het goed begrijp moet je dus voor elke user een record opnemen in de rechten_rollen tabel?

Hier kan je dan dus ook eenvoudig een topic in een forum aanmaken dat alleen voor bepaalde users is bestemt? Dit zou dan een extra rol worden, maar hoe doe je dat met de rest van de users die hier niet in mag?

@Frank: Kan je misschien een klein voorbeeldje geven van een toepassing waar meerdere rollen mbt de rechten handig zijn? Dan heb ik hier wat meer houvast aan.

Alvast dank!
Crispijn schreef op 26.03.2008 14:22
@Frank: Kan je misschien een klein voorbeeldje geven van een toepassing waar meerdere rollen mbt de rechten handig zijn? Dan heb ik hier wat meer houvast aan.

Alvast dank!
Nooit, helemaal nooit. Het is namelijk dé manier om veiligheidslekken in je systeem aan te maken.


Fouten maken is menselijk, dit zul je moeten accepteren

En dan: Stel, in rol A maak je een fout, je geeft per ongeluk het recht om gegevens X te verwijderen. Omdat de users met rol A geen rechten hebben om de gegevens X in te zien, kunnen ze de gegevens niet selecteren en dus niet verwijderen.

Nu heeft een user met rol A ook een andere rol nodig, rol B. Rol B heeft het recht om gevens X in te zien, dat behoort tot de werkzaamheden. Dankzij de fout in rol A, krijg je de situatie dat een user met rol B ineens gegevens kan verwijderen! Tuurlijk, dat is een fout van de RSO in rol A, maar je gaat zoeken naar de fout in rol B. Daar waar de fout zich niet bevindt... Daarnaast kan het best wel even duren voordat het lek uberhaubt aan het licht komt, de user zal het misschien helemaal niet doorhebben en de data wordt in eerste instantie wellicht helemaal niet gemist. Tegen de tijd dat de boel aan het licht komt en is opgelost, ben je wellicht al een hoop kostbare data kwijt!

Geef een user altijd 1 rol binnen 1 systeem, dan kan dit nooit voor veiligheidsproblemen zorgen in combinatie met andere rollen. Het is eenvoudiger om 10 rollen op veiligheid te controleren dan ontelbare combinaties van rollen per gebruiker.
Oke dat is duidelijk. Ik was ook al bang hoe ik dat zou moeten beheren. Dat is helemaal niet eenvoudig.

Maar 1 rol kan dus meerdere rechten hebben. Dus ik heb de rol gebruiker en ik heb hier een standaard functionaliteit.

Hoe ver ga je hier dan met het controleren op rechten? Standaard kan een user dingen posten, vrienden maken etc. Moet je dit helemaal uitspecificeren?

Lijkt mij niet handig. Vanaf waar ga je onderscheid maken in rechten?
bijv:
- user kan dingen posten
- user kan dingen eigen wijzigen
- user kan globaal wijzigen
- user kan dingen verwijderen/non-actief zetten

en zelfs 'user kan vrienden maken' is goed genoeg voor een 'recht'.

Dan maak je bijvoorbeeld een rol 'Standaard gebruiker' die dus kan posten, wijzigen, profiel wijzigen, vrienden maken..
Oke, dit is wel zo eenvoudig ja. Zo hoef je dus alleen maar een recht toe te wijzen aan een rol wanneer je je site in mogelijkheden uitbreid.

Oke, ik heb 't op een rijtje. Lekker, eindelijk dit vraagstuk voor mijn hobby projectje eens opgelost :D

Bedankt mannen!
Create
Read
Update
Delete
Archive

Waarbij je delete mag lezen als 'wijzigen van de status' en archive zelden nodig is. Alleen voor grote databases ( > 100GB ) of met vele miljarden records is dat interessant, maar ook dan ga je eerst met indexen e.d. aan de slag. Verder nog even kijken wie de eigenaar van een record is, tot welke groep een eigenaar behoort en of het record alleen de eigenaar, alleen door de groep, of door iedereen mag worden gelezen/bijgewerkt/verwijderd.

Alles draait om CRUDA!

Reageren