Identita a userID po přihlášení
- kashpi
- Člen | 48
Předem se omlouvám pokud to tu někde je. Potřebuji při přihlášení nějak pracovat s daty uživatele, který je přihlášen. Při přihlášení se do Identity ukládá celé jméno, role ve kterých je uživatel. A potřebuji někaj zařídit, abych mohl nastavit nějak userId uživatele do nějaké proměnné abych s ním mohl pracovat.
př. Přihlásím se a chci aby to napsalo kdy sem se naposledy přihlásil a z jaké IP. Všechno okolo uživatelů ukládám do jedné tabulky v databázi. Takže se přihlásím a vrátí mi to položku name a role. A potřebuji nějak získat právě id uživatele abych později mohl z databáze tahat další údaje podle jeho id.
Jde to nějak nebo to budu muset nacpat do getId místo jména?
- bojovyletoun
- Člen | 667
využil bych onLoggedIn[]/Out[], tam bych navěsil ukládání do Db. Možná by to šlo skloubit s user->identity->data, aby údaje byly po ruce.
- srigi
- Nette Blogger | 558
kashpi napsal(a):
to s tím user->identity->data se mi zamlouvá. Jak s tím pracuje?
user->identity->data[promenna]? nebo nějak jinak?
Pracuje sa s tym ako ked do sablony priradzujes vlastne properies:
$this->getUser()->getIdentity()->foo = 'bar';
Ulozena hodnota sa prenasa medzi requestami, takze je to mimoriadne vhodna technika na ulozenie user udajov do Session. Vcera som to pouzil pti pisani ACL tut. – v autetifikatore som si po overeni credentials ulozil do Identity email, plne meno a pod.
Editoval srigi (17. 1. 2011 20:04)
- Bazylek
- Člen | 22
Začínám a prosil bych radu, pro přístu používam ACL, při authentizaci mam
return new Identity($row->id uzivatele, $roli, $row->jmeno);
pro vypsání v šabloně mám:
Přihlášený jako <strong>{$user->identity->data}</strong> [{? echo implode(', ', user->getRoles())}]
Po přihlášení do administrace
getRoles – vypiše v pořádku admin
zkoušel jsem i getId – také v pořádku vypsalo číslo uživatele.
i jiné možnosti, (getData, foo ..) které jsem nalezl na foru. Bohužel se mi
jméno uživatele nevypisuje a vyhazujem mi laděnka chybu :
htmlspecialchars() expects parameter 1 to be string, array given
kdaž jsem změnil na {$user->identity->foo}
Po DUMPU mi to vypsalo
Nette\Security\Identity(4) {
"id" private => 1
"roles" private => array(1) [
0 => "admin" (5)
]
"data" private => array(2) {
0 => "Web admin" (9)
"foo" => NULL
}
"frozen" private => FALSE
}
Používám Nette Framework 2.0-alpha2 pro PHP 5.3
Nevím si již rady. Děkuji každou pomoc.
- kravčo
- Člen | 721
Problémom je
<strong>{$user->identity->data}</strong>
Keďže $user->identity->data
je pole a šablóna po
preložení vyzerá takto:
<strong><?php echo Nette\Templating\DefaultHelpers::escapeHtml($user->identity->data) ?></strong>
pričom escapeHtml v tomto prípade volá htmlspecialchars, čiže je to vlastne:
<strong><?php echo htmlspecialchars($user->identity->data, ENT_QUOTES) ?></strong>
Je fakt, že ta hláška je trochu nezrozumiteľná…
Asi si chcel napísať {$user->identity->data[0]}
.