ACL a dědičnost zabezpečených presenterů
- pidiclovek
- Člen | 91
Ahoj, lámu si hlavu nad následujícím problémem – Používám ve svých aplikacích statického acl, co jsem koukal velice podobného tomu, který ve svém tutorialu popsal Srigi zde link .
Důležitá podobnost je pro mě v tom, že u zabezpečených presenterů v Admin modulech dědím od nějakého SecuredPresenteru (název z tutorialu), který zajistí autorizaci.
A nyní brainstorming – Co když chci ale v presenteru z admin sekce dědit od jeho veřejného protějšku například akce a rendery? Php mi nedovolí dědit jak od něj, tak i od SecuredPresenteru. V minulosti jsem dělal něco jako:
class A extends B
{
private $c;
public function __construct()
{
$this->c = new C;
}
// fake "extends C" using magic function
public function __call($method, $args)
{
$this->c->$method($args[0]);
}
}
ale snažim se s tím jak se Nette učím soustředit se na co nejčistší návrh a tak se mi to moc nelíbí. Napadá vás někoho lepší postup? :) Díky za jakékoliv podněty!
- Semik
- Backer | 135
V nette roadmap (https://doc.nette.org/…ibuting/code) ve verzi 2.1 je pro Application v plánu nastínění cesty, jak nahradit u presenterů dědičnost za kompozici. Takže časem se to nejspíš dozvíme.
- pidiclovek
- Člen | 91
@semik: Wow, to by byla naprostá bomba, už kolikrát jsem řešil situace, kdy by se to sakra hodilo, to by byl velice užitečný update :) Díky za info!
- pidiclovek
- Člen | 91
@HosipLan
díky za radu! Nicméně nechápu, jak to myslíš – vím co jsou komponenty a sám jsem si jich pár napsal, v téhle ideji ale budu asi potřebovat popostrčit. Kdybys měl někdy čas a chuť :)
dík
- Filip Procházka
- Moderator | 4668
Dědit presentery z Front do Admin, nebo naopak, je škaredé. Pokud si kód, který by jsi potřeboval v obou třídách, vyčleníš do další třídy a pak ho použiješ v obou třídách, budeš to mít čistější a daleko přehlednější.
- pidiclovek
- Člen | 91
@HosipLan Jo takhle! Jsem idiot, že mě to nenapadlo, díky za popostrčení, teď už je to jasné. Díky!