Gebruikersrechten in sessie
Nu wil ik het anders oplossen omdat ik niet met gebruikers rangen wil gaan werken maar met specifieke instellingen per gebruiker. Dus welke gebruiker heeft toegang tot bepaalde pagina's en schrijf of alleen lees rechten heeft.
De handigste oplossing leek mij om een nieuwe tabel aan te maken en hier per gebruiker op te slaan tot welke pagina ze toegang hebben en deze vervolgens in een sessie in te laden tijdens het inloggen en dus ook controleer bij het aanroepen binnen de controller. Is dit een goede manier?
Gewijzigd op 03/10/2011 17:10:59 door PHP Scripter
is het echt voor elke gebruiker anders? of zijn het toch wel groepjes?
Voorbeeld:
Gebruikers:
- Lezen
- Schrijven
Zodra er alleen lezen wordt aangevinkt kan hij alles wel bekijken maar kan hij niks wijzigen, oftewel alle inputs zijn uitgeschakeld.
Gewijzigd op 03/10/2011 18:49:36 door PHP Scripter
Ik heb dus in mijn user tabel een veld roles, dit bevat een string zoiets als 'admin, poweruser'
in de menu tabel heb ik ook weer een veld met roles en controleer daarop.
permissionUser | permisionPage | permissionValue
1 configuration 2
1 users 1
2 users 0
0 = Geen toegang - 1 = Read - 2 = Read/Write/Edit
Gewijzigd op 03/10/2011 19:11:02 door PHP Scripter
Bump
Bump
Stel je dit voor, je hebt een intranet met ongeveer 40 menu onderdelen. Je hebt zeg maar 150 gebruikers. Sommige onderdelen kunnen door iedereen gezien worden, maar sommige ook niet, maar wel door anderen maar die dan op zich ook weer niet kunnen wijzigen etc, etc. Dat betekent dat je op zijn minst al een permisions tabel hebt met 6000 records.
Hoe zou ik dat dan het beste kunnen oplossen? Ik ben nu toevallig weer bezig met dit onderdeel. De gebruikers kunnen inderdaad wel hoog oplopen, maar 6.000 records is toch niet zoveel?
lang de querie niet te traag wordt, is het prima. Maar vergeet niet, MySQL kan een hoop aan.
Gewijzigd op 26/10/2011 19:32:50 door - Ariën -
Aar, mag ik weten hoe je dit aanpakt?
Het maakt een multidimensionale array aan met de roles (view, add, edit, delete), en elk recht heeft daarin een record, ook ID's voor diverse acties kan je meegeven, zoals forum's en modules van je applicatie.
Ik heb er eigenlijk al een tijdje niet meer naar gekeken.
Gewijzigd op 26/10/2011 20:41:06 door - Ariën -
Bedankt!
Dat is qua beheer makkelijker omdat je dan alle gebruikers in de groep in één keer alle nieuwe rechten geeft, in plaats van voor elke gebruiker de rechten aan te passen. Hoe je dan vervolgens de rechten in de groepen indeelt is niet belangrijk.
Ik gebruik zelf voor elk recht een kolom in de tabel groep die 1 of 0 kan zijn. Bij de installatie van een nieuwe module wordt elke keer die tabel uitgebreid.
Ik zou sowieso met rollen en daarop rechten met eventueel overwerving. Ik gebruik vaak Zend_ACL wat best goed in elkaar zit. Je zou dezelfde architectuur kunnen gebruiken:
http://framework.zend.com/manual/en/zend.acl.introduction.html
Binnen elke verenging worden er gebruikers toegevoegd die spelers kunnen toevoegen en er kunnen spelers worden gescout na het stellen van eisen aan een speler, zeg maar.
Nu is het de bedoeling dat niet iedereen spelers kan bewerken/toevoegen, maar dus alleen kan inzien.
Create, Read, Update, Delete. Ik kan bij een role zoals dit, dus bepalen wat hij/zij mag doen.
Het is gebaseerd op dit:
http://gathering.tweakers.net/forum/list_message/10623343#10623343
Alleen nog niet af, bijschaafd en geimplementeerd....
Gewijzigd op 27/10/2011 15:56:00 door - Ariën -
Ik heb het nu toch maar opgelost met gebruikers 'types': Administrator, beheerder, gebruiker, gast etc. etc..