Jak změnit login metodu na vlastní
- kleinpetr
- Člen | 480
Ahoj,
potřebuju změnit login metodu, protože potřebuju posílat více dat než jen id a password. Ale nechce se mi šahat přímo do Usera, koukal jsem, že stačí zaregistrovat vlastní třídu do configu a podědit jí. Nicméně tohle je celá metoda login
public function login($id = NULL, $password = NULL)
{
$this->logout(TRUE);
if (!$id instanceof IIdentity) {
$id = $this->getAuthenticator()->authenticate(func_get_args());
}
$this->storage->setIdentity($id);
$this->storage->setAuthenticated(TRUE);
$this->onLoggedIn($this);
}
nechápu proč se $id testuje oproti instanci.. Proč ? vždyť to id vždy
posílám já ne ?
Jde mi o to když tu metodu budu přepisovat, jestli to $id můžu úplně
vyhodit.
Protože jestli to chápu, tak když je user přihlášenej tak nette si samo volá metodu login a místo $id mu posílá už tu Identitu. A pokud volám login ručně tak si vytoří Identitu z id a passw.
Editoval kleinpetr (1. 5. 2015 12:19)
- kleinpetr
- Člen | 480
Tak už jsem to vyřešil:
class MyCustomUser extends User
{
public function login($id = NULL, $credentials = NULL){
$this->logout(TRUE);
if (!$id instanceof IIdentity) {
$id = $this->getAuthenticator()->authenticate($credentials);
}
$this->storage->setIdentity($id);
$this->storage->setAuthenticated(TRUE);
$this->onLoggedIn($this);
}
}
a v presenteru pak
$this->getUser()->login(NULL, $credentials);
Jelikož přesně nevím jak se tam chová to ID tak jsem ho tam nechal a naplňuji ho null :)
- jiri.pudil
- Nette Blogger | 1029
Když je uživatel přihlášený, už se žádný login
nevolá. Ta kontrola je tam proto, abys mohl metodě login
poslat
přímo identitu, čímž se obejde autentizace a rovnou to přihlásí
uživatele s tou identitou. Jinak když se podíváš, volá se tam
authenticate(func_get_args())
, tzn. všechno, co pošleš do metody
login
, se v nezměněné podobě (EDIT: to je samozřejmě blbost,
argumenty se předají v poli) předá autentikátoru. Takže dokonce nemusíš
vůbec nic přepisovat, prostě si tu metodu zavolej s tím, co
potřebuješ.
Editoval jiri.pudil (1. 5. 2015 12:36)