Správný způsob implementace několika presenterů, které vyžadují konkrétní uživatelskou roli
- triak
- Člen | 3
Ahoj,
chtěl bych napsat aplikaci se dvěma uživatelskými rolemi, to co teď
řeším je, jak zařídit, aby presentery vždy vyžadovali tu konkrétní
potřebnou roli a nebylo to potřeba do každého z nich psát. Vymyslel jsem
toto řešení:
napíšu AbstractAdminPresenter …, který roli porovná v metodě startup() a
pokud nebude vyhovovat, přesměruje uživatele na presenter pro přihlášení,
kde zároveň zobrazí hlášku, že nemá dostatečný oprávnění.
Je toto správný přístup ?
Díky za cenné rady.
- Honza Marek
- Člen | 1664
ale docela jo
teď ta cenná rada: prozkoumej příklady v distribuci, něco takového je tam taky řešeno.
- Ondřej Mirtes
- Člen | 1536
Já bych ve startupu nekontroloval roli, ale oprávnění $user->isAllowed() na konkrétní resource a privilege, které chceš vykonat. Pokud se dotazuješ na roli, obcházíš tím vlastně celé ACL a kontroluješ jen nějakou vlastnost uživatele. Pokud bys chtěl pak tu danou akci povolit nějaké další roli, musíš sahat do nepatřičných zdrojáků, kdežto pokud kontroluješ, jestli daný uživatel má povolený přístup k danému resource/privilege, tak pro úpravu stačí sáhnout do místa, kde ta pravidla nastavuješ (což může být třeba nějaká posloupnout $permission->allow() v bootstrapu nebo i databáze).
- JakubKohout
- Člen | 92
triak napsal(a):
Tak to je ostatně taky pravda, nicméně mě připadá, že ACL je trochu kanón na vrabce, v tomto případě.
proč by to měl bejt kanón na vrabce ?
Definuješ si na tvrdo v kódu resource + přístupová práva jaká skupina
může a pak se jenom zeptáš
<?php
$this->getUser()->isAllowed($resource);
?>