Как узнать время входа текущего пользователя в Laravel? - PullRequest
0 голосов
/ 19 мая 2018

Я использую Laravel Authentication .Как я могу получить время, когда текущий пользователь вошел в систему?Я хочу рассчитать количество секунд, прошедших с момента входа в систему текущего пользователя. Если есть способ добиться этого без использования События , было бы здорово.

1 Ответ

0 голосов
/ 19 мая 2018

Это может быть достигнуто путем переопределения одного из методов из черты AuthenticatesUsers внутри Auth/LoginController:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        $user->authenticated_at = Carbon::now();

        $user->save();

        return redirect()->intended($this->redirectPath());
    }
}

и затем распознавания поля даты в пользовательской модели:

...
class User extends Authenticatable
{
    use Notifiable;

    protected $dates = ['authenticated_at'];
...

И, конечно, добавьте это в файл миграции / / для таблицы пользователей: $table->timestamp('authenticated_at')->nullable();

И возможный фрагмент, который вы можете использовать для получения 'uptime' с помощью $user->uptime: (добавить вМодель пользователя)

public function getUptimeAttribute(): int
{
    return Carbon::now()->diffInSeconds($this->getAttribute('authenticated_at'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...