56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use Aacotroneo\Saml2\Events\Saml2LoginEvent;
|
|
use App\User;
|
|
use Illuminate\Auth\Events\Registered;
|
|
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Event;
|
|
use Illuminate\Support\Facades\Session;
|
|
|
|
class EventServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* The event listener mappings for the application.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $listen = [
|
|
Registered::class => [
|
|
SendEmailVerificationNotification::class,
|
|
],
|
|
];
|
|
|
|
/**
|
|
* Register any events for your application.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
parent::boot();
|
|
|
|
Event::listen('Aacotroneo\Saml2\Events\Saml2LoginEvent', function (Saml2LoginEvent $event) {
|
|
$messageId = $event->getSaml2Auth()->getLastMessageId();
|
|
// TODO : Add your own code preventing reuse of a $messageId to stop replay attacks
|
|
$user = $event->getSaml2User();
|
|
$email = $user->getNameId();
|
|
$lUser = User::where('email', '=', $email)->first();
|
|
if (!$lUser) {
|
|
abort(redirect()->route('unauthorized'));
|
|
}
|
|
session(['sessionIndex' => $user->getSessionIndex()]);
|
|
session(['nameId' => $email]);
|
|
session(['tmpUserOTP' => $lUser]);
|
|
abort(redirect()->route('auth.verify'));
|
|
});
|
|
|
|
Event::listen('Aacotroneo\Saml2\Events\Saml2LogoutEvent', function ($event) {
|
|
Auth::logout();
|
|
Session::save();
|
|
});
|
|
}
|
|
}
|