new: [keycloak auth] library loaded if configured via application.php

keycloak
iglocska 2021-09-24 01:47:49 +02:00
parent 2a5c640756
commit 78f193cb5c
No known key found for this signature in database
GPG Key ID: BEA224F1FEF113AC
1 changed files with 31 additions and 2 deletions

View File

@ -29,6 +29,8 @@ use Authentication\AuthenticationServiceInterface;
use Authentication\AuthenticationServiceProviderInterface; use Authentication\AuthenticationServiceProviderInterface;
use Authentication\Middleware\AuthenticationMiddleware; use Authentication\Middleware\AuthenticationMiddleware;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use App\Event\SocialAuthListener;
use Cake\Event\EventManager;
/** /**
* Application setup class. * Application setup class.
* *
@ -44,6 +46,8 @@ class Application extends BaseApplication implements AuthenticationServiceProvid
*/ */
public function bootstrap(): void public function bootstrap(): void
{ {
$this->addPlugin('ADmad/SocialAuth');
// Call parent to load bootstrap from files. // Call parent to load bootstrap from files.
parent::bootstrap(); parent::bootstrap();
@ -59,6 +63,7 @@ class Application extends BaseApplication implements AuthenticationServiceProvid
$this->addPlugin('DebugKit'); $this->addPlugin('DebugKit');
} }
$this->addPlugin('Authentication'); $this->addPlugin('Authentication');
EventManager::instance()->on(new SocialAuthListener());
// Load more plugins here // Load more plugins here
} }
@ -86,8 +91,32 @@ class Application extends BaseApplication implements AuthenticationServiceProvid
// creating the middleware instance specify the cache config name by // creating the middleware instance specify the cache config name by
// using it's second constructor argument: // using it's second constructor argument:
// `new RoutingMiddleware($this, '_cake_routes_')` // `new RoutingMiddleware($this, '_cake_routes_')`
->add(new RoutingMiddleware($this)) ->add(new RoutingMiddleware($this));
->add(new AuthenticationMiddleware($this))
if (!empty(Configure::read('keycloak'))) {
$middlewareQueue->add(new \ADmad\SocialAuth\Middleware\SocialAuthMiddleware([
'requestMethod' => 'POST',
'loginUrl' => '/users/login',
'loginRedirect' => '/',
'userEntity' => false,
'userModel' => 'Users',
'socialProfileModel' => 'ADmad/SocialAuth.SocialProfiles',
'finder' => 'all',
'fields' => [
'password' => 'password',
],
'sessionKey' => 'Auth',
'getUserCallback' => 'getUser',
'serviceConfig' => [
'provider' => [
'keycloak' => Configure::read('keycloak.provider')
],
],
'collectionFactory' => null,
'logErrors' => true,
]));
}
$middlewareQueue->add(new AuthenticationMiddleware($this))
->add(new BodyParserMiddleware()); ->add(new BodyParserMiddleware());
return $middlewareQueue; return $middlewareQueue;
} }