PHP code example of iperson1337 / pimcore-keycloak-bundle
1. Go to this page and download the library: Download iperson1337/pimcore-keycloak-bundle 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/ */
iperson1337 / pimcore-keycloak-bundle example snippets
namespace App\Service;
use Iperson1337\PimcoreKeycloakBundle\Provider\KeycloakResourceOwner;
use Iperson1337\PimcoreKeycloakBundle\Service\UserMapperService;
use Pimcore\Model\User;
use Psr\Log\LoggerInterface;
readonly class KeycloakUserMapperService extends UserMapperService
{
public function __construct(
protected LoggerInterface $logger,
protected string $defaultLanguage,
) {
parent::__construct($logger, $defaultLanguage);
}
protected function syncUserRoles(User $user, array $keycloakRoles): void
{
parent::syncUserRoles($user, $keycloakRoles);
// Ваша собственная логика маппинга ролей
if (in_array('content-editor', $keycloakRoles, true)) {
// Назначаем пользователю соответствующие роли Pimcore
$user->setRoles(['contentEditor', 'reviewer']);
}
}
protected function assignDefaultRolesToUser(User $user, KeycloakResourceOwner $resourceOwner): void
{
foreach ($resourceOwner->getResourceRoles() as $keycloakRole) {
if (strtolower($keycloakRole) === 'admin' && !$user->isAdmin()) {
$user->setAdmin(true);
$this->logger->info('Пользователь установлен как админ на основе роли Keycloak');
}
// Здесь можно добавить дополнительную логику для других ролей
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.