سلام دوستان
چطور میتونیم کاری کنیم که وقتی کاربر هربار وارد پنل کاربریش میشه اطلاعات ورودش مثل آی پی و غیره را در یک جدول جداگانه ذخیره کنیم ؟
من توی loginController در متد construct نوشتم ولی عملیات insert انجام نمیشد
توی AppServiceProvider هم قسمت boot نوشتم بازم نشد
میشه راهنمایی کنین ؟
@ali.bayat
استاد میتونین با مثال بگین ؟
شاید پاسخ شما همینجا باشد
اگر از سیستم Auth خود لااراول استفاده میکنید بخشی از کار بصورت اتومات از پیش طراحی و پیاده سازی شده.
در کل در طول هر فرایند احراز هویت، چندین Event مختلف بصورت اتومات و بسته به شرایط توسط لاراول فراخونده می شوند. یکی از این event ها دقیقا مربوط به زمانی هست که احراز هویت موفقیت آمیز بوده و کاربر لاگین کرده است. در مستندات لاراول اینطور میگه:
If the authentication attempt is successful and the user is logged in, the auth.login event will be fired
https://laravel.com/docs/5.0/authentication#authenticating-users
حالا شما میتونید از این قضیه استفاده کنید و در فایل EventServiceProvider کلاس Listener مورد نظرتون رو به این Event متصل کنید:
use Illuminate\Auth\Events\Login as UserLoggedIn;
class EventServiceProvider extends ServiceProvider {
protected $listen = [
UserLoggedIn::class => [
YourListener::class,
// Other Listeners...
]
];
}
حالا کافیه Listener های دلخواهتون رو بسازید و در قسمت handle شون اقدامات لازم رو مثل ذخیره اطلاعات در دیتابیس و ویرایش زمان آخرین لاگین و ... انجام بدید و اسم این Listener ها رو جایگزین قسمت YourListener:class کنید. اینجوری با هر بار لاگین کاربران کلیه Listener هایی که در این آرایه تعریف شدند بصورت اتومات فراخونی میشوند.