Nette\Security\Identity pridani atributu prihlasenemu uzivateli

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
saimons
Člen | 293
+
0
-

Chci se zeptat jestli se da dodatecne pridat atribut do Nette\Security\Identity. Jde o to ze uzivatel ma nastavenou timezone a napriklad pokud se registruje tak ji jeste nema vyplneneou, nebo kdyz ji v prubehu zmeni. Klasicky se zmena projevi po novem prihlaseni, ale jestli je to mozne nastavit i jinak za chodu?

vvoody
Člen | 910
+
0
-

Ano ide

$identity->timezone = ...
saimons
Člen | 293
+
0
-

Diky za odpoved ale tohle mi prave nefungovalo, tady je kod jak jsem to napsal:

<?php
        if (isset($this->user->getIdentity()->timezoneName)) {
            $this->dateTimeZone = new \DateTimeZone($this->user->getIdentity()->timezoneName);
        } else {
            $identity = new \Nette\Security\Identity($this->user->id);
            $identity->timezoneName = $this->context->introHome->getTimeZone() ?: NULL;

            \Nette\Diagnostics\Debugger::barDump($this->user->getIdentity()->timezoneName);
            die();
        }
?>

Dump mi vrati NULL, jako chapu asi proc, je to jina instance, ale jakym zpusobem ty data dostanu do instance $this->user (Nette\Security\User).

Editoval saimons (16. 8. 2012 15:03)

vvoody
Člen | 910
+
0
-

Preco vytvaras novu instanciu? Preco to neulozis to tej existujucej? A vlastne preco ten timezone jednoducho neulozis do session? Celkom si nejsom isty ci je logicke mat uzivatelske nastavenie v identite.

saimons
Člen | 293
+
0
-

Jako ze bych nekde v BasePresenteru pro zabezpecenou cast testoval session kde by byli uzivatelske nastaveni, popripade vytvoril a naplnil daty (kdyby vyprsela) a tu pak pouzival napric aplikaci? Jako asi by to bylo logictejsi. Muzes mi prosim pro moji zvedavost nastinit jak bych pristoupil k te instanci ve ktere je to ulozene? Mam pristup k Nette\Security\User ale ta nema zadne funkce na pridani polozek k identite?

castamir
Člen | 629
+
0
-
if ($this->user->isLoggedIn()) {
	$identity = $this->user->getIdentity();
	$identity->timezone = ...
}

jak se pracuje se sessions se dozvíš zde

Editoval castamir (16. 8. 2012 15:45)

saimons
Člen | 293
+
0
-

Diky za info, jo se session neni problem, jen jsem nevedel jak vytvorit spravne tu instanci, z API mi to nebylo uplne jasne.