Ik zou graag zend_acl willen gebruiken in mijn applicatie maar weet niet goed waar te beginnen. Aangezien ik nog maar net zend framework aan het gebruiken ben kan ik er nog niet helemaal aan uit waar ik wat moet zetten.
Wat ik zou willen bereiken is het volgende:
Momenteel heb ik 4 rollen (admin, chef, medewerker, bezoeker).
In mijn index-controller controleer ik welke rol de gebruiker heeft en stuur ik ze door naar de bijhorende controller (admincontroller, chefcontroller, medewerkercontroller) behalve bezoeker.
Bezoeker mag enkel toegang krijgen tot de indexcontroller (waar mijn login en registratiefuncties in verwerkt zitten).
Het zou redelijk simpel moeten zijn om elke rol maar toegang te bieden aan zijn bijhorende controller (met inheritance). Ma.w.:
medewerker krijgt toegang tot medewerkercontroller
chef krijgt toegang tot medewerker- en chefcontroller
admin krijgt toegang tot admin-, chef- en medewerkercontroller
Hoe ik dit moet doen, snap ik min of meer nog wel, en dat ik dan aan het begin van elke functie een controle doe of de gebruikersrol toegang heeft tot die bepaalde actie of controller, kan er ook nog bij.
Maar wat ik niet direct kan vinden is:
- Waar moet mijn definitie komen van mijn rollen en recourses (welke file en in welke map)
- Vraag ik in mijn bootstrap of index-controller de acl op en bewaar ik hem best in een namespace of vraag ik hem best telkens opnieuw op?
Of bekijk ik het helemaal verkeerd?
Alvast bedankt.
Ik neem aan dat je je login authentication al gemaakt hebt met Zend_Auth?
Al ben ik zelf ook nog aan het uitzoeken hoe ik acl het beste kan gebruiken maar heb nog wel een leukt tut.
Die tutorial heeft me weeral iets verder gebracht, heb het gisteren eens bekeken en geprobeerd maar zit nog een beetje vast. Heb op youtube ook nog een tutorial gevonden en heb nu een ACL die volgens mij moet werken, moet nu enkel nog zien dat ik de plugin correct kan registreren en daar zit ik terug met het probleem.
Heb volgende acl in /application/models/libraryAcl.php: Plaatscode: 140789
Kan er iemand me (liefst stap-voor-stap) zeggen hoe ik dit als plugin kan registreren?
Bedankt voor je uitleg Realtec, heb dit geprobeerd maar als ik de autoloaderNamespaces in mijn index.php plaats, krijg ik als melding "unexpected '[' ...".
Als ik die regel probeer in mijn application.ini te plaatsen, krijg ik:
Catchable fatal error: Argument 1 passed to Zend_Controller_Front::registerPlugin() must be an instance of Zend_Controller_Plugin_Abstract, instance of Abes_Plugin_LibraryAcl given, called in C:\xampp\htdocs\abes\library\Zend\Application\Resource\Frontcontroller.php on line 118 and defined in C:\xampp\htdocs\abes\library\Zend\Controller\Front.php on line 731
Je hoeft geen accolades omheen je namespace te zetten hoor. Je kan dat beter beschouwen als een soort package statement in Java oid.
Voor de rest moet je in gedachten houden dat ZF1 nog niet namespaced is en veel onderdelen kunnen niet overweg met namespaces. Ik raad dus aan om momenteel nog even de oude namespacing (met underscores) te gebruiken.
De constructor vind ik een beetje tricky. Ik heb geen idee waar ergens je pluginobject wordt aangemaakt en wat er dan reeds allemaal beschikbaar is. Misschien moet je die methode hernoemen en als eerste lijn aanroepen in je preDispatch? 't is niet echt proper maar toch.
die accolades komt omdat ik nogal veel programmeer in C#. bij de plugins heeft hij geen probleem met namespaces, dit is al een voorbereiding op ZF2.
die code is reeds 5 jaar oud, enkel aangepast aan ZF1.11. zoals je bovenaan kan zien moet deze plugin volledig herschreven worden (database-based).
dit dient enkel als voorbeeld.
Heb vanalles dat hierboven staat geprobeerd gisteren, maar het wil maar niet in orde komen.
Kan er iemand misschien een zip-filetje doorsturen waar alle componenten van ACL inzitten zodat ik even kan vergelijken wat ik eventueel mis?
Alvast bedankt.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.