2016-05-23 14 views
0

私は、ユーザがオンライン(1)であることを示すactive_userというカラムを持っています。私がユーザーをログオンするとき、active_user列を1に設定しますが、ユーザーをログアウトしてactive_userをチェックすると、オンライン(1)が表示されます。私が望むのは、ログアウトボタンをクリックすると、aactive_user列がオフライン(0)に変わり、データベースに更新されるということです。私のログインは以下の通りです。ログアウト時にlaravelのカラムの値を変更する方法

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; 

は、以下の私がオフラインに戻すactive_userを変更するログアウト機能の私のログアウト機能

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

    return redirect('admin/login'); 
} 

です(0)しかし、私は、App \ HTTPの引数1がありませんエラー」を取得しておきます\ Controllers \ AdminController :: LogOut() "

+0

あなたは、ログイン/ログアウトイベントが..この受け入れ答えを見てみましょう使用することができます。http://stackoverflow.com/questions/36767556/laravel-auth-count-user-login/36767937#36767937 –

+0

何私のルートが 'id'を期待していたので、私はそれが私の問題だと思う。@DavidBarkerを大変ありがとう。 –

答えて

0

あなたのルートログアウトには、id属性が渡されます。これは私には間違っているように見えます。あなたがこのロジックを適用したいという認証されたユーザーであり、ログアウトにIDを渡す必要はありません。ユーザーを変更するために認証の実装を使用し、

代わり
http://myapp.app/logout/1 

:たとえば、ユーザーにログインしている場合は、彼らのようなURLに行く必要があるでしょう、あなたのコードでログアウトして、1のIDを持っています。

// 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

私はそれが私の問題だと思う。それは今働いている:)。私は感謝します –

関連する問題