Kam s nastavením onLoggedOut[]?

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

Mám problém s logování odhlášení uživatele. Když si nastavím událost onLoggedOut[] v přihlašovacím tlačítku, tak v dalších skriptech nastavena není ⇒ 3 dotazy:

  1. kde vlastně správně nastavovat událost onLoggedOut[] ?
  2. může k tomu být použit callback ?

    (v příkladech je uvedeno onLoggedOut[] = array($logger, ‚metoda‘),
    ale co je to $logger – presenter, třída, … ?)

  3. nemusí být ta metoda statická ?

Díky za radu či nasměrování (snad kromě nasměrování tam :o) )

Používám verzi 2.0 Alfa 2

Editoval smi (26. 5. 2011 11:01)

studna
Člen | 181
+
0
-
  1. Třeba rovnou při přihlašování :)
  2. $logger je objekt, na který voláš onu metodu
  3. nemusí, můžeš udělat například i něco takového
$user->onLoggedOut[] = function() use($user){
	//akce po odhlaseni
}

Editoval studna (26. 5. 2011 11:35)

bojovyletoun
Člen | 667
+
0
-
  • nastavuješ onLoggedOut[] na začátku aplikace? To je podle mě důležité, jinak se stane, že uživatel se odhlásí a event zaregistruješ příliš pozdě
  • lze použít cokoli : nette z toho udělá callback, pokud není.
  • Nemusí být statická. to je právě případ, kdy předáš instanci $logger, v jiných případech je logicky statická. Může to být i klasická funkce „print_r“ nebo anonymní funkce

Editoval bojovyletoun (26. 5. 2011 11:47)

smi
Člen | 75
+
0
-

bojovyletoun napsal(a):

  • nastavuješ onLoggedOut[] na začátku aplikace? To je podle mě důležité, jinak se stane, že uživatel se odhlásí a event zaregistruješ příliš pozdě
  • lze použít cokoli : nette z toho udělá callback, pokud není.
  • Nemusí být statická. to je právě případ, kdy předáš instanci $logger, v jiných případech je logicky statická. Může to být i klasická funkce „print_r“ nebo anonymní funkce

Když mám nastavení onLoggedOut[] ve startup(), tak to funguje.
Očekaval jsem ale, že to stačí nastavit uživateli před loginem a Nette si to zapamatuje (protože mám pocit, že kromě mluvení umí snad všechno :o) ). A to asi tak není.

Jinak díky za navedení.

Editoval smi (26. 5. 2011 12:11)

bojovyletoun
Člen | 667
+
0
-
  1. Radši bych to dal ještě dříve (včas) (do té doby handler není nastaven a nefunguje). Jádrem je, že nevíš, kdy přesně se volají metody, které volají getSessionNamespace, která obsahuje volání onLoggedOut. Proto to musí být co nejdříve.
  2. Druhá věc je to nastavit (globálně). Aby to nefungovalo jen v nějakém konkrétním presenteru.

Editoval bojovyletoun (26. 5. 2011 13:33)

smi
Člen | 75
+
0
-

bojovyletoun napsal(a):

  1. Radši bych to dal ještě dříve (včas) (do té doby handler není nastaven a nefunguje). Jádrem je, že nevíš, kdy přesně se volají metody, které volají getSessionNamespace, která obsahuje volání onLoggedOut. Proto to musí být co nejdříve.
  2. Druhá věc je to nastavit (globálně). Aby to nefungovalo jen v nějakém konkrétním presenteru.

Mám něco jako ProtectedPresenter ok kterého jsou odvozene všechny presentery, které jsou podmíněné loginem. StartUp tohohle ProtectedPresenteru by mohl obsahovat to nastaveni onLoggedOut[].