Refresh dat uživatele bez znalosti hesla
- Majkl578
- Moderator | 1364
co rozšířit Nette\Web\User o vlastní funkci, která by obnovila IIdentity?
něco ve smyslu:
public function updateIdentity() {
$userData = dibi::select(...)->where('userId = %i', $this->getIdentity()->userId)->fetch();
$this->setIdentity(new Nette\Security\Identity($userData['username'], $userData['roles'], $userData));
}
něco v tom smyslu, sesmolil jsem to z voleje :)
Editoval Majkl578 (22. 6. 2009 1:44)
- mancze
- Člen | 58
Majkl578 napsal(a):
co rozšířit Nette\Web\User o vlastní funkci, která by obnovila IIdentity?
něco ve smyslu:
Díky za odpověď. Přesně to je jediné rozumné řešení, které mne
napadá. Právě mne překvapilo, že to Nette nepodporuje nativně :\. Vy snad
data nepotřebujete aktualizovat? Nebo nepoužíváte Identity
?
Ještě k tomu řešení – dospěl jsem k náseldujícímu návrhu: na
Userovi se zavolá refreshIdentity()
, ten na rozšířený
IAuthenticator zavolá refreshIdentity(IIdentity $identity)
, což
vrátí sesynchronizovaná data.
Editoval mancze (22. 6. 2009 9:57)
- _Martin_
- Generous Backer | 679
Bavíte se o rozhraní IIdentity
nebo o implementaci
v podobě třídy Identity
? Předpokládám, že o té třídě.
Potom můžete využít toho, že ta třída má settery:
$identity = $user->getIdentity();
$identity->setName($name);
$identity->setRoles($roles);
$identity->address = $data['address'];