2016-06-24 23 views
0

Gibt es eine Möglichkeit, das Abmeldeereignis anzuhören und Entscheidungen wie Weiterleitung auf Authorravel zu treffen? Ich weiß, es gibt einige Login/Logout-Hörern aber Umleitungen funktionieren nicht:Abmeldung verhindern auth laravel

class LogSuccessfulLogout 
{ 
    /** 
    * Create the event listener. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     // 
    } 

    /** 
    * Handle the event. 
    * 
    * @param Logout $event 
    * @return void 
    */ 
    public function handle(Logout $event) 
    { 
    if($event->user) { 


     $new = Auth::user()->cars()->where('status', 1)->count(); 
     $inProgress = Auth::user()->cars()->where('status', 2)->count(); 

     if($new > 0 || $inProgress > 0){ 
      redirect('/'); 
     } 
    } 

    } 
} 

Antwort

1

Dies ist die Standard-Logout-Funktion im Standard genannt in Laravel 5.2 AuthController

public function logout() 
{ 
    Auth::guard($this->getGuard())->logout(); 
    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); 
} 

Sie können also setzen Sie die redirectAfterLogout Eigenschaft die Umleitungs-uRL mit dem folgenden Code in Ihren AuthController zu ändern,

private $redirectAfterLogout = '/new-logout-redirect'; 

oder Sie können die Logout-Funktion wählen einfach außer Kraft setzen. Redirects funktionieren nicht direkt von Ihrem Listener.

Hier ist die modifizierte Abmeldefunktion mit Ihrer Logik, die Sie in Ihrem AuthController platzieren können,

public function logout() 
{ 
    Auth::guard($this->getGuard())->logout(); 

    $new = Auth::user()->cars()->where('status', 1)->count(); 
    $inProgress = Auth::user()->cars()->where('status', 2)->count(); 

    if($new > 0 || $inProgress > 0){ 
     return redirect('/'); 
    } 

    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); 
} 
+0

Ok, also brauche ich eine gewisse Logik und Abmeldung nicht 'if (neu $> 0 || $ InProgress> 0) ', also kann ich das vom Zuhörer nicht tun? Wenn diese Bedingung erfüllt ist, loggen Sie sich nicht aus und leiten Sie nach Hause um. –

+0

Nicht direkt. (Vielleicht könnten Sie einen Hack wie Henkel eine Ausnahme oder etwas ähnliches ausarbeiten, aber das schlägt den ganzen Punkt eines separaten Listeners). Um Logik hinzuzufügen, können Sie die Abmeldefunktion in Ihrem AuthController außer Kraft setzen. Ich werde die Antwort mit deiner Logik aktualisieren. –