Facebook logout napojený na \Nette\User->logout()

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

Poradili byste mi prosí jak nastavit aby se po zavolání $this->getUser()->logout() na presenteru zavolal redirect na logout url facebooku.

ricco24
Člen | 141
+
0
-

Nestačilo by ti to doplniť do akcie odhlásenia ?

class SignPresenter extends BasePresenter
{
	...

	public function actionOut() {
		$this->getUser()->logout();
		$this->facebook->logout();
		$this->flashMessage('You have been signed out.');
		$this->redirect('in');
	}
}
norbe
Backer | 405
+
0
-

K tomu slouží událost onLoggedOut

2bfree
Člen | 248
+
0
-

ricco24 napsal(a):

Nestačilo by ti to doplniť do akcie odhlásenia ?

class SignPresenter extends BasePresenter
{
	...

	public function actionOut() {
		$this->getUser()->logout();
		$this->facebook->logout();
		$this->flashMessage('You have been signed out.');
		$this->redirect('in');
	}
}

Nestačilo, protože když někde jinde v aplikaci jiný programátor neznalý implementace zavolá standardní $this->getUser()->logout(), tak ho to neodhlásí.

2bfree
Člen | 248
+
0
-

norbe napsal(a):

K tomu slouží událost onLoggedOut

NJ, jenže tam dostanu jen callback funkci, která dostane jako parametr $this vazbu na Nette\User a ne na Presenter, takže v tom callbacku neudělám redirect,

davidm
Člen | 81
+
0
-

NJ, jenže tam dostanu jen callback funkci, která dostane jako parametr $this vazbu na Nette\User a ne na Presenter, takže v tom callbacku neudělám redirect,

???

// napr v basepresenter v metode startup
$that = $this;
$fb = $this->facebook; // naka fb service
$this->user->onLoggedOut[] = function ($user) use ($that, $fb) {
	$fb->odhlasMeZFacebooku;
	$that->redirect(...);
};