Kde správně kontrolovat oprávnění uživatele?

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

Dělám jednoduchou admin sekci, ve které musí být uživatel stále přihlášen.

Myslel jsem si, že do konstruktoru BasePresenteru přidám kontrolu, aby se provedla pokaždé.
Je to správně?

Asi ne, protože když v BasePresenteru udělám toto

<?php
public function __construct()
{
	$user = $this->getUser();
	// tady provest kontrolu a pripadny redirect na login
}
?>

zahlásí Nette chybu: Service User has not been set

Pokud to samé ale udělám v mém presenteru, jede to v pohodě.

Poradíte jak na to?

Díky

Editoval jf (2. 11. 2014 3:50)

Šaman
Člen | 2666
+
+4
-

Konstruktor presenterů nepoužívej a když, tak jen na načtení závislostí. Použij metodu startup(), která se volá po kompletní inicializaci presenteru (takže až po inject metodách, když máš všechny závislosti). Stejně, jako u konstruktoru nezapomeň volat parent::startup(), abys nepřišel o případné rutiny předka.

A do BasePresenteru bych to nedával, od něho dědí i SignPresenter, takže se nedostaneš ani na přihlášení a skončíš ve smyčce. Poděď si SecuredPresenter, tomu přidej zabezpečení a další presentery pak děď od něho.

Ukázku máš tady (zajímá tě jen ten if – traita, ani UserEntity v normáľním sandboxu není, souvisí to jen s mým modelem).

Editoval Šaman (2. 11. 2014 3:58)

akadlec
Člen | 1326
+
+1
-

Nebo pokud máš rád anotace tak můžeš využít jednu ext co ti řídí přístupy dle libosit

jf
Člen | 13
+
0
-

Děkuji za odpovědˇ!
Už začínám chápat.