> */ protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], ]; /** * Determine if events and listeners should be automatically discovered. * * @return boolean */ public function shouldDiscoverEvents(): bool { return false; } /** * Register any events for your application. * * @return void */ public function boot() { Event::listen('Slides\Saml2\Events\SignedIn', function (SignedIn $event) { $messageId = $event->getAuth()->getLastMessageId(); $fromCache = Cache::get(config('cache.prefix') . "_saml_message_id_" . $messageId); if ($fromCache) { logger()->error( 'SAML MESSAGE ID HANDLER', ['error' => 'Message ID : ' . $messageId . " replayed !"] ); abort(403); } else { Cache::put(config('cache.prefix') . "_saml_message_id_" . $messageId, $messageId, 28800); // Cache for 8h. } $user = $event->getSaml2User(); $email = $user->getNameId(); $lUser = User::where('email', '=', $email)->first(); if (!$lUser) { abort(403); } Auth::guard('backend')->login($lUser); session(['sessionIndex' => $user->getSessionIndex()]); $lUser->last_connection = now(); $lUser->saveQuietly(); }); //phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found Event::listen('Slides\Saml2\Events\SignedOut', function (SignedOut $event) { Auth::guard('backend')->logout(); Session::save(); }); } }