php - Can't track, count logins of a user in Laravel -


i count how many times user has been logged in using events in laravel.

i have event defined:

<?php namespace app\handlers\events;  use illuminate\queue\interactswithqueue; use illuminate\contracts\queue\shouldbequeued; use app\user; use illuminate\support\facades\log;  class authlogineventhandler {      /**      * create event handler.      *      * @return void      */     public function __construct()     {         //     }      /**      * handle event.      *      * @param  user $user      * @param  $remember      * @return void      */     public function handle(user $user, $remember)     {         log::info('logged in');          $user->login_counter = 1;         $user->save();         $user->increment('login_counter');     }  } 

and in eventserviceprovider have following:

<?php namespace app\providers;  use illuminate\contracts\events\dispatcher dispatchercontract; use illuminate\foundation\support\providers\eventserviceprovider serviceprovider; use illuminate\support\facades\event; use illuminate\support\facades\log;  class eventserviceprovider extends serviceprovider {      /**      * event handler mappings application.      *      * @var array      */     protected $listen = [         'auth.login' => [             'app\handlers\events\authlogineventhandler'         ]     ];      /**      * register other events application.      *      * @param  \illuminate\contracts\events\dispatcher  $events      * @return void      */     public function boot(dispatchercontract $events)     {         parent::boot($events);          //     }  } 

update:

i have override postlogin() trait authcontroller as:

<?php namespace app\http\controllers\auth;  use app\http\controllers\controller; use illuminate\contracts\auth\guard; use illuminate\contracts\auth\registrar; use illuminate\foundation\auth\authenticatesandregistersusers;      class authcontroller extends controller {          use authenticatesandregistersusers;          /**          * create new authentication controller instance.          *          * @param  \illuminate\contracts\auth\guard  $auth          * @param  \illuminate\contracts\auth\registrar  $registrar          * @return void          */         public function __construct(guard $auth, registrar $registrar)         {             $this->auth = $auth;             $this->registrar = $registrar;              $this->middleware('guest', ['except' => 'getlogout']);         }           public function postlogin(request $request)         {             $this->validate($request, [                 'email' => 'required|email', 'password' => 'required',             ]);              $credentials = $request->only('email', 'password');              if ($this->auth->attempt($credentials, $request->has('remember')))             {                 log::info('logged in user authcontroller');                 return redirect()->intended($this->redirectpath());             }              return redirect($this->loginpath())                 ->withinput($request->only('email', 'remember'))                 ->witherrors([                     'email' => $this->getfailedloginmessage(),                 ]);         }     } 

this not working on laravel 5.0, dont know why, there other alternative count logins of user other using events?

i checking logs , there nothing comming in, when try log::info('logged in'); within boot method, comes logs.

first thing, because have added provider, need clear previous compiled source (which cached speed loading time).

$ php artisan clear-compiled 

secondly, code has counting problem,

    $user->login_counter = 1;  <-- set count 1 ??     $user->save(); <--- save?     $user->increment('login_counter'); <--- increment what? 

instead, should this

    $user->login_counter += 1;     $user->save(); 

make sure in migration have default (initial) value login_counter

$table->integer('login_counter')->unsigned()->default(0); 

then works!


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -