ACL a dědičnost zabezpečených presenterů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pidiclovek
Člen | 91
+
0
-

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
+
0
-

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
+
0
-

@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!

Filip Procházka
Moderator | 4668
+
0
-

Používej více komponenty a takovéto děděni nebudeš potřebovat.

pidiclovek
Člen | 91
+
0
-

@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
+
0
-

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
+
0
-

@HosipLan Jo takhle! Jsem idiot, že mě to nenapadlo, díky za popostrčení, teď už je to jasné. Díky!