Implementace ACL na úrovni modelů
- vojty
- Člen | 19
Dobrý den,
všude slyším, že se ACL má implementovat na úrovni modelu a že implementace v šabloně je špatná. Sám zatím ACL implementuji do presenterů a navíc se občas nevyhnu v šabloně něčemu takovému:
<?php
{if $user->isAllowed($presenter->getName(), "delete")}
<a href="{link delete!, $usr->id}">SMAZAT</a>
{/if}
?>
Jaký je tedy nejlepší postup implementace?
- Šaman
- Člen | 2666
Model by se neměl spoléhat na nějaké inputy z šabony/presenteru a měl by si kontrolovat konzistenci i ACL. To je logika modelu a ACL tam patří.
Šablona má zase správně zobrazit odkaz na smazání uživatele jen pokud na to má někdo právo, takže se zase zeptá ACL. To je view logika a ACL tam patří taky.
Jde jen o to, aby model nespoléhal na kontrolu v šabloně (navíc tam se to dá obejít a ručně upravit odkaz) a aby na pokus o smazání někoho na koho nemáme práva zareagoval nějak korektně (vyhodí hlášku nebo chybu, ale nesmí to smazat).