2016-05-23 7 views
0

Ich habe eine Spalte namens active_user um anzuzeigen, wenn ein Benutzer online ist (1). Wenn ich einen Benutzer anmelde, setze ich die Spalte active_user auf 1, aber wenn ich den Benutzer abmelde und active_user überprüfe, wird es weiterhin online angezeigt (1). Was ich will, ist, dass, wenn ich auf den Abmelden-Button klicke, die aactive_user-Spalte in offline (0) geändert wird und auch auf die Datenbank aktualisiert wird. Mein Login ist unten.wie man den Wert einer Spalte in Laravel beim Logout ändert

public function postSignIn(Request $request) { 

    $this->validate($request, [ 

     'email' => 'required', 
     'password' => 'required' 

    ]); 

    if(Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) { 
     $user=User::whereRaw('email=?',[Input::get('email')])->first(); 

     //this is where i set the active_user to 1 
     $user->active_user=1; 
     $user->save(); 

     if($user!=null){ 
      switch($user->role_id){ 
       case 1: 
        if($user->status==0){ 
         session()->flash('flash_message_error', ' Your Account has been deactivated. Contact the administrator'); 
         return Redirect::to('admin/login'); 
        } 
        return redirect()->route("index"); 
       break; 

dann unten ist meine Abmeldefunktion

public function LogOut($id) { 
    $user = User::find($id); 
    $user->active_user=1; 
    $user->save(); 
    Auth::logout(); 

    return redirect('admin/login'); 
} 

in der Logout-Funktion i die active_user zurück zu offline ändern möge (0), aber ich halte einen Fehler „immer fehlt Argument 1 für App \ Http \ Controllers \ AdminController :: LogOut() "

+0

Sie können .. Login/Logout-Ereignisse verwenden, um einen Blick auf diese akzeptierte Antwort nehmen: http://stackoverflow.com/questions/36767556/laravel-auth-count-user-login/36767937#36767937 –

+0

was Ich versuche, den active_user wieder auf Offline (0) zu aktualisieren, wenn ich eine Logout-Taste klicke –

Antwort

0

Ihre Routenabmeldung erwartet jetzt ein id Attribut, das an es übergeben wird. Das scheint mir falsch zu sein, da es der authentifizierte Benutzer ist, auf den Sie diese Logik anwenden möchten. Das Übergeben der ID an die Abmeldung ist unnötig. Zum Beispiel, wenn Ihr angemeldeten Benutzer hat eine ID von 1, mit Ihrem Code abzumelden würden sie zu einer URL gehen müssen wie:

http://myapp.app/logout/1 

Verwenden Sie stattdessen die Auth Implementierung der Benutzer zu ändern.

// Remove requirement for ID as a parameter 
public function LogOut() { 
    $user = Auth::user(); 
    $user->active_user=1; 
    $user->save(); 
    Auth::logout(); 

    return redirect('admin/login'); 
} 
+0

Vielen Dank @DavidBarker Ich denke, das war mein Problem, weil meine Route eine ID erwartete. Es funktioniert jetzt :). ich schätze –

Verwandte Themen