Použití dvou authenticatorů
- dreken
- Člen | 36
Jaké je nejelegantnější řešení, pokud chci v jedné aplikaci používat 2 typy uživatelů – zákazníci a admini. Každý se přihlašuje jiným způsobem a přihlášení admina je nezávislé na přihlášení zákazníka (takže můžu být přihlášen klidně jako zákazník i jako admin zároveň).
Jak potom tyto 2 typy uživatelů přes dependency injection rozlišit? Je mi jasné, že následující kód mi fungovat nebude:
<?php
class BasePresenter extends \Nette\Application\UI\Presenter
{
/**
* @inject
* @var \Nette\Security\User
*/
public $admin;
/**
* @inject
* @var \Nette\Security\User
*/
public $user;
...
}
?>
- Šaman
- Člen | 2659
V Configu označíš jeden (nebo i oba) přepínačem
autowired: no
a pojmenuješ
je. A pak při vytváření třídy, která ho chce, ho nastavíš
setterem.
(Ten autowired:no
ti zajistí, že v DI kontejneru nebudou dvě
služby stejné třídy k injectování. Můžeš tak jeden nechat jako
implicitní a druhý nastavovat jen pro konkrétní třídy přímo názvem
služby.)
Editoval Šaman (16. 7. 2018 19:17)