Kde správně kontrolovat oprávnění uživatele?
- jf
- Člen | 13
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
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)