Nejlepší způsob na dynamické acl?
- Martk
- Člen | 661
V konfigu jsem udělal seznam zdrojů a akcí. Důvod proč jsem to dal do konfigu? Protože uživatel zdroje a akce nedefinuje, ale jen programátor, takže je to zbytečné uchovávat v databázi, jak s ohledem výkonu, tak i obtížnosti upravování.
acl:
file:
- delete
- edit
- show
user:
- add
- delete
- edit
Vznikne ti pole zdroj ⇒ [akce, akce, …] , tohle zobrazím administrátorovi ve formuláři jako multiselect. Zpracování a použití nechám na tobě, snad jsem se trefil do toho co potřebuješ.
- Cars Tomas
- Člen | 43
Já to mám vše v db a rozdělené takto:
- accounts (users) mohou být členy x skupin
- groups (roles) mohou obsahovat x účtů
- presenters (resources) a ty obsahují privileges
skupinám přiřazuji různé zdroje podle potřeby a to my vytvoří credential, uvnitř credetial mohu dle potřebovy dozapnout povolení pro privileges.
presenters mám anotované @module ⇒ pomocí robot-loaderu si je mohu načíst a přes reflexi vytáhnout seznam funkcní, které mám anotované jako @operations, které slouží jako seznam pro privileges
např.:
<?php
/**
* @module(Admin:Auth:Groups)
*/
class GroupsPresenter {
/**
* @operation(name="edit", label="upravit")
*/
public function actionEdit($id) {
...
}
/**
* @operation(name="lock-unlock", label="zamknout / odemknout")
*/
public function handleLock($id) {
...
}
/**
* @operation(name="lock-unlock", label="zamknout / odemknout")
*/
public function handleUnlock($id) {
...
}
}
?>