Hoi, heb de search al uitgepluist maar het probleem is dat ik (bijna) alleen maar forum situtaties tegenkom, deze zijn niet van toepassing op mijn systeem.
Het betreft een extranet. We hebben gebruikers, groepen, en 'items' (zijnde pagina's, producten, nieuwsberichten, bestanden etc.)
Ik heb het systeem nu draaiende, maar, users kunnen maar tot 1 group behoren:
verder heb ik vanzelfsprekend een ItemTypes tabel met type id en type naam, en voor ieder itemtype een tabel met daarin de items zelf.
Wat ik nu dus kan doen is groepen toegang geven op verschillende niveau's. Voorbeeld: we hebben een [pagina] met een [product]enoverzicht. Aan deze [producten] zijn [bestanden] gekoppeld (prijslijst.xls, handleiding.pdf, firmware.zip etc).
Nu kan ik dus group 1 geen toegang geven tot [pagina], wat als gevolg heeft dat de users in deze group de rest ook niet te zien krijgen. Group 2 heeft wel toegang, en ziet het productenoverzicht, maar alleen de producten waar group 2 rechten op heeft, onder andere [product 3].
Group 3 heeft ook toegang tot aan [product 3], en ook toegang tot [betand 4]. Dit bestand is gekoppeld aan product 3, dus wordt zichtbaar op de product pagina. Group 2 heeft geen toegang tot [bestand 4] maar wel tot [bestand 7], en uiteraard zien de users van group 2 bestand 4 niet, maar 7 wel.
Dit systeem werkt prima omdat het ook zo is ingericht dat groepen standaard nergeens toegang toe hebben, tenzij dat ingesteld wordt, je kunt dus tot op 3 niveaus diep user afhankelijke content maken.
Je moet de groepen dus helemaal uit 'normaliseren', bijvoorbeeld group 2 heet "LeverancierJanssenTechnischCommercieel", dit houdt in dat group 2 dus alle pagina's kan zien die voor alle leveranciers van toepassing zijn, met bestanden voor firma Janssen, aangezien het technische mensen zijn krijgen ze de mogelijkheid firmwares te downloaden en ze zijn ook commercieel dus kunnen ze ook de prijslijst voor firma janssen downloaden.
Tot zover nog geen probleem.. maar denk er nu even 5000 gebruikers bij. Je kunt, door de groepnormalisatie geen grote groepen maken, dus heb je ongeveer 1000 groepen. Als je nu een nieuw bestand upload, en je wilt de rechten gaan instellen moet je dus alle 1000 groepen doorspitten om deze toegangsrechten in te stellen.
Wat makkelijker zou zijn:
Group: Janssen
GroupKenmerk: Leverancier
User: Piet
UserKenmerk: Technisch
UserKenmerk: Commercieel
Je krijgt dan extra tabellen: [Groepen], [GroepKenmerken], [KruisGroepenGroepkenmerken], [Users], [Userkenmerken], [KruisUsersUserkenmerken].
Maar het probleem bij dit systeem is....... HOE moet ik de rechten nu instellen / ophalen?
Ik kan bijvoorbeeld toegang geven aan [group = janssen], [userkenmerk = technisch], [userkenmerk = commercieel], maar dan zouden ook de commerciele mensen van firma Pietersen toegang hebben. Ik moet dus een soort van access rules gaan maken met verschillende combinaties..:
rule 1: WHERE group = janssen AND groupkenmerk = technisch AND groupkenmerk = commercieel
rule 2: WHERE groupkenmerk = dealers AND groupkenmerk = commercieel
rule 3: WHERE groupkenmerk = administrators
Als een gebruiker dan voldoet aan 1 van de rules voor een item, dan krijgt hij toegang..
Poeh.. ik ben al een stuk verder door deze post alleen maar te maken
maar hoe ga ik het maken van die rules nou oplossen in het CMS.. standaard heeft niemand toegang tot een item, geef je aan dat groupkenmerk 'leverancier' wel toegang heeft, dan kunnen alle gebruikers die dat kenmerk hebben het item zien. BEHALVE als je óók aangeeft dat ook userkenmerk 'technisch' nodig is.
Nou wat is eigenlijk mijn vraag.. hoe zou jij dit oplossen in een CMS qua GUI, en dan moet ik nog maar eens kijken of ik die 'getuserrights' query inelkaar kan flansen. Wellicht een veel beter idee voor een rechtensysteem in een situatie als deze? Bedankt voor je aandacht in ieder geval
Het betreft een extranet. We hebben gebruikers, groepen, en 'items' (zijnde pagina's, producten, nieuwsberichten, bestanden etc.)
Ik heb het systeem nu draaiende, maar, users kunnen maar tot 1 group behoren:
code:
1
2
3
4
5
6
7
| | USERS | | ACL |
----------- | GROUPS | -----------|
| ID | ------------ | ID |
| GroupID | <-> | ID | <-> | GroupID |
| Naam etc| | Naam etc | | ItemType |
----------- ------------ | ItemID |
------------ |
verder heb ik vanzelfsprekend een ItemTypes tabel met type id en type naam, en voor ieder itemtype een tabel met daarin de items zelf.
Wat ik nu dus kan doen is groepen toegang geven op verschillende niveau's. Voorbeeld: we hebben een [pagina] met een [product]enoverzicht. Aan deze [producten] zijn [bestanden] gekoppeld (prijslijst.xls, handleiding.pdf, firmware.zip etc).
Nu kan ik dus group 1 geen toegang geven tot [pagina], wat als gevolg heeft dat de users in deze group de rest ook niet te zien krijgen. Group 2 heeft wel toegang, en ziet het productenoverzicht, maar alleen de producten waar group 2 rechten op heeft, onder andere [product 3].
Group 3 heeft ook toegang tot aan [product 3], en ook toegang tot [betand 4]. Dit bestand is gekoppeld aan product 3, dus wordt zichtbaar op de product pagina. Group 2 heeft geen toegang tot [bestand 4] maar wel tot [bestand 7], en uiteraard zien de users van group 2 bestand 4 niet, maar 7 wel.
Dit systeem werkt prima omdat het ook zo is ingericht dat groepen standaard nergeens toegang toe hebben, tenzij dat ingesteld wordt, je kunt dus tot op 3 niveaus diep user afhankelijke content maken.
Je moet de groepen dus helemaal uit 'normaliseren', bijvoorbeeld group 2 heet "LeverancierJanssenTechnischCommercieel", dit houdt in dat group 2 dus alle pagina's kan zien die voor alle leveranciers van toepassing zijn, met bestanden voor firma Janssen, aangezien het technische mensen zijn krijgen ze de mogelijkheid firmwares te downloaden en ze zijn ook commercieel dus kunnen ze ook de prijslijst voor firma janssen downloaden.
Tot zover nog geen probleem.. maar denk er nu even 5000 gebruikers bij. Je kunt, door de groepnormalisatie geen grote groepen maken, dus heb je ongeveer 1000 groepen. Als je nu een nieuw bestand upload, en je wilt de rechten gaan instellen moet je dus alle 1000 groepen doorspitten om deze toegangsrechten in te stellen.
Wat makkelijker zou zijn:
Group: Janssen
GroupKenmerk: Leverancier
User: Piet
UserKenmerk: Technisch
UserKenmerk: Commercieel
Je krijgt dan extra tabellen: [Groepen], [GroepKenmerken], [KruisGroepenGroepkenmerken], [Users], [Userkenmerken], [KruisUsersUserkenmerken].
Maar het probleem bij dit systeem is....... HOE moet ik de rechten nu instellen / ophalen?
Ik kan bijvoorbeeld toegang geven aan [group = janssen], [userkenmerk = technisch], [userkenmerk = commercieel], maar dan zouden ook de commerciele mensen van firma Pietersen toegang hebben. Ik moet dus een soort van access rules gaan maken met verschillende combinaties..:
rule 1: WHERE group = janssen AND groupkenmerk = technisch AND groupkenmerk = commercieel
rule 2: WHERE groupkenmerk = dealers AND groupkenmerk = commercieel
rule 3: WHERE groupkenmerk = administrators
Als een gebruiker dan voldoet aan 1 van de rules voor een item, dan krijgt hij toegang..
Poeh.. ik ben al een stuk verder door deze post alleen maar te maken
Nou wat is eigenlijk mijn vraag.. hoe zou jij dit oplossen in een CMS qua GUI, en dan moet ik nog maar eens kijken of ik die 'getuserrights' query inelkaar kan flansen. Wellicht een veel beter idee voor een rechtensysteem in een situatie als deze? Bedankt voor je aandacht in ieder geval