Kam umístit MyAuthenticator
- David Matějka
- Moderator | 6445
nekam do slozky app – tam vidi robot loader (pri defaultnim nastaveni). a zkontroluj si, jestli mas spravne namespaces
- Zax
- Člen | 370
Je to úplně jedno. Můj authenticator má například namespace WebModule\Model\Security a jmenuje se AuthenticatorService. V configu ho nastavuji takto jednoduše:
common:
services:
- WebModule\Model\Security\AuthenticatorService
user:
setup:
- setAuthenticator( @WebModule\Model\Security\AuthenticatorService );
Možná dokonce stačí jen první tři řádky a on si to framework automaticky nadrátuje, ale to jsem radši nikdy nezkoušel :D
- Šaman
- Člen | 2666
Ty řádky 4–6 nějak nechápu. Tohle ti vážně prochází? Takovéhle
nastavení usera jsem nikde v praxi neviděl.
User si autenticator naje v kontejneru sám podle toho, že splňuje
IAuthenticator.
A sekce jsou už v aktuálním Sandboxu vypnuté, takže stačí minimálně
services
- WebModule\Model\Security\AuthenticatorService
Takhle ho dostaneš do tříd modelu
<?php
class UserRepository
{
protected $authenticator;
public function __construct(WebModule\Model\Security\AuthenticatorService $auth)
{
$this->authenticator = $auth;
}
}
?>
A takhle do presenteru
<?php
class UserPresenter extends BasePresenter
{
/**
* @var WebModule\Model\Security\AuthenticatorService
* @inject
*/
public $authenticator;
}
?>
NS i název třídy si můžeš zvolit jaký chceš, jen je nutné, aby implementoval rozhraní IAuthenticator a aby na všech místech, kde jsem vypisoval název třídy i s NS byl uveden správně. I v tom komentáři (je to anotace, podle které se dohledává v kontejneru).
Edit:
Původně private property v modelu jsem změnil na protected. Nesouvidí to
sice s DI, ale jestli to někdo opíše, ať to opíše tak, jak bych to
napsal sám.
A zdůrazňuji, že v presenteru je ona property public, jinak by do ni nebylo možné nic předat.
Editoval Šaman (8. 4. 2014 20:04)
- Zax
- Člen | 370
Šaman napsal(a):
Ty řádky 4–6 nějak nechápu. Tohle ti vážně prochází? Takovéhle nastavení usera jsem nikde v praxi neviděl.
User si autenticator naje v kontejneru sám podle toho, že splňuje IAuthenticator.
Ty řádky jsem tuším kdysi obšlehnul z nějakého (asi staršího) návodu. V configu to používám snad od doby, co jsem Nette vůbec objevil… Proč by to nemělo projít? A jinak ano, máš pravdu, funguje to i bez toho. Ono je celkem fuška sledovat co nového je v Nette a co všechno si člověk může nově dovolit, když spousta návodů je psaná pro starší verze -_-