1. Go to this page and download the library: Download drago-ex/keycloak library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
drago-ex / keycloak example snippets
use Drago\Keycloak\BasePresenter;
use Drago\Keycloak\KeycloakAdapter;
use Drago\Keycloak\KeycloakSessions;
use Nette\Security\AuthenticationException;
use Stevenmaguire\OAuth2\Client\Provider\Keycloak;
final class AdminPresenter extends BasePresenter
{
use KeycloakAdapter;
public function __construct(
private readonly Keycloak $keycloak,
private readonly KeycloakSessions $keycloakSessions,
private readonly KeycloakAuthenticator $authenticator,
) {
parent::__construct();
}
protected function startup(): void
{
parent::startup();
$keycloakUser = $this->keycloakSessions->getItems()->resourceOwner;
if ($this->getUser()->isLoggedIn() || $keycloakUser === null) {
return;
}
try {
$this->getUser()->login($this->authenticator->authenticateOwner($keycloakUser));
$this->restoreRequest($this->backlink);
$this->redirect('this');
} catch (AuthenticationException) {
$this->template->userLoginError = true;
$this->signOut();
$this->getHttpResponse()->setHeader('Refresh', '6; url=' . $this->keycloak->getLogoutUrl());
}
}
private function signOut(): void
{
$this->getUser()->logout();
$this->keycloakSessions->remove();
}
}