Вставить в другую таблицу при входе Laravel 5.2 - PullRequest
1 голос
/ 06 мая 2020

Я использую вход по умолчанию для авторизации в Laravel 5.2, но я хочу, чтобы при входе в систему обновлялось или вставлялось в другую таблицу при каждом входе пользователя.

Я хочу вставить это при входе в систему:

$sql = Counts::where('client_id', Auth::user()->id)->get();
if (sizeof($sql) == 0) {
    $sql = new Counts();
    $sql->client_id = Auth::user()->id;
    $sql->save();
}

Auth/Authcontroller.php не имеет метода входа в систему ...

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

В Providers/EventServiceProvider.php зарегистрируйте прослушиватель для события входа в систему:

 protected $listen = [
        'Illuminate\Auth\Events\Login' => [
            'App\Listeners\LoginListener',
        ],
    ];

Теперь создайте фактический слушатель для события входа в систему, используя следующую команду:

php artisan make:listener LoginListener --event Illuminate\\Auth\\Events\\Login

Теперь внутри Listeners/LoginListener.php код внутри public function handle(Login $event) будет выполняться всякий раз, когда пользователь входит в ваше приложение. Вы можете получить идентификатор пользователя, который вошел в систему с помощью $event->user->id, вы можете проверить это с помощью:

public function handle(Login $event)
{
   dd($event->user->id);
}

Вы можете получить доступ к электронной почте, имени и т. Д. c из модели пользователя, используя событие:

$event->user->name
$event->user->email

В конечном итоге вы можете получить что-то вроде этого:

public function handle(Login $event)
 {
    $sql = Counts::where('client_id', $event->user->id)->get();
    if (sizeof($sql) == 0) {
        $sql = new Counts();
        $sql->client_id = $event->user->id;
        $sql->save();
    }
 }

Не забудьте включить Counts модель в LoginListener.php:

use App\Counts;
0 голосов
/ 06 мая 2020

В вашем AuthController переопределите метод postLogin из AuthenticatesAndRegistersUsers вот так:

class AuthController extends Controller
{
    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')))
        {
            $counts = Counts::where('client_id', Auth::user()->id)->get();
            if ($counts->isEmpty()) {
                $counts = new Counts();
                $counts->client_id = Auth::user()->id;
                $counts->save();
            }

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

        return [
            'success' => false,
            'error' => 'Invalid credentials',
            'description' => 'Authentication failure'
        ];
    }
}

Просто скопируйте и вставьте эту postLogin функцию в нижнюю часть AuthController, и она должна работать .

...