Časová zóna podla uživateľského nastavenia a reload identity

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

Caute,

Ako by ste riešili tento problém? V nette som ešte taký „lepší začiatočník“, takže sa učím,
a hladám efektívnejší spôsob ako meniť časovú zónu.

Momentálne to riešim cez BasePresenter ale keďže mám kopu modulov, je nepohodlné mať všade rovnaký kód.
(timezone je zapísaná v Identity uživatela ktorá je načítavaná z DB)

Je niečo efektívnejšie? Alebo to pôjde len cez BasePresenter každého modulu?

(ešte tak trocha mimo temy, ako by sa dal dosiahnuť reload identity z db? [cez jednorazove volanie funkcie])

Vďaka :)

Michal Vyšinský
Člen | 608
+
0
-

Ahoj,
na reload identity používám něco takového (v presenteru):

public function relogin() {
    if ($this->user->isLoggedIn()) {
        $id = $this->user->getId();
        $user = $this->loadUser($id);
        if (!$user) {
				// pro případ, že by byl uživatel náhodou už smazaný
            $this->user->logout(TRUE);
            return;
        }
        $identity = new \Nette\Security\Identity($id, $user->getRoles(), $user->getData());
        $this->user->getStorage()->setIdentity($identity);
    }
}

$user je u mě Doctrine 2 entita, metoda getRoles() vrací seznam rolí, metoda getData() vrací pole dat, které chci dát identitě.

Jinak timezone bych nastavoval ve startupu pokud je uživatel přihlášený. A myslím, že ty BasePresentery modulů by měly dědit nějaký univerzální BasePresenter, tak budeš moci mít nastavování timezone jen v tom jednom presenteru.

Editoval CherryBoss (16. 7. 2013 15:07)

burisk
Člen | 6
+
0
-

Díky, ten Presenter som už podedil, funguje to, super
a ten reload tiež skúsim neskôr keď to budem potrebovať,

Díky moc zatial :)