Autorizace všech handle (něco jako beforeHandle)
- kedrigern
- Člen | 102
Rád bych prováděl autorizaci defaultně u všech handlů. U presenterů a jejich action to velmi spolehlivě a přehledně zajistí metoda startup v presenteru.
Příklad:
Mám seznam článků (např. presenter Articles, action list), kde může mazat
admin a ostatní pouze seznam vidí. Chci mazání udělat AJAXově. Pak do
příslušného presenteru umístím metodu handleDelete. Nicméně pokud
oprávnění nehlídám přímo v metodě, tak bude platit stejné oprávnění
jako pro presenter a action (znovu se nezkontroluje).
Lze toto nějak řešit? Něco jako metoda beforeHandle (koukal jsem, že kdysi v Nette byla).
(Jde mi čistě o návrh, vyřešit to ošklivě umím, ale nelíbí se mi daný kód).
- enumag
- Člen | 2118
Nette předává reflexi volané metody handle/action/render té metodě checkRequirements, z té reflexe si anotace už snadno vytáhneš.
Chybu v checkRequirements vyjádříš vyhozením ForbiddenRequestException.
Editoval enumag (21. 2. 2013 15:27)
- enumag
- Člen | 2118
V dokumentaci to není protože zatím je v Nette jen ta metoda checkRequirements a kontrola přihlášení pomocí anotace. Další anotace by si člověk stejně musel udělat sám.
Chystám se vydat svou implementaci jako doplněk, ale vzhledem k tomu jak málo času teď mám nedokážu říct kdy konečně dopíšu testy (bez nich to nezveřejním).