Použití dvou authenticatorů

dreken
Člen | 36
+
0
-

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

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)