سلام دوستان
چطور میتونیم کاری کنیم که وقتی کاربر هربار وارد پنل کاربریش میشه اطلاعات ورودش مثل آی پی و غیره را در یک جدول جداگانه ذخیره کنیم ؟
من توی loginController در متد construct نوشتم ولی عملیات insert انجام نمیشد
توی AppServiceProvider هم قسمت boot نوشتم بازم نشد
میشه راهنمایی کنین ؟
اگر از احراز هویت خود لاراول استفاده میکنی
میتونی توی متد login از LoginController بعد از لاگین کاربر این کارو انجام بدی
متد login به شکل پیش فرض از طریق تِریت AuthenticateUser ضمیمه میشه،
میتونی کدهاش رو از توی تریت برداری و این متد رو توی کنترلر overwrite کنی
اگر از سیستم 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 هایی که در این آرایه تعریف شدند بصورت اتومات فراخونی میشوند.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟