%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/auth-keycloak/jobs/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/auth-keycloak/jobs/GroupsUserSync.php |
<?php /** * Keycloak Sign-In * @link https://github.com/cuzy-app/humhub-modules-auth-keycloak * @license https://github.com/cuzy-app/humhub-modules-auth-keycloak/blob/master/docs/LICENCE.md * @author [Marc FARRE](https://marc.fun) for [CUZY.APP](https://www.cuzy.app) */ namespace humhub\modules\authKeycloak\jobs; use humhub\modules\authKeycloak\components\KeycloakApi; use humhub\modules\authKeycloak\models\ConfigureForm; use humhub\modules\authKeycloak\models\GroupKeycloak; use humhub\modules\queue\ActiveJob; use Throwable; use yii\base\InvalidConfigException; use yii\queue\RetryableJobInterface; class GroupsUserSync extends ActiveJob implements RetryableJobInterface { /** * @var int */ public $userId; /** * @var KeycloakApi */ protected $keycloakApi; /** * @var GroupKeycloak[] */ protected $humhubGroupsByKeycloakId; /** * @inhertidoc * @var int maximum 1 hour */ private $maxExecutionTime = 60 * 60; /** * @inheritdoc * @return void * @throws InvalidConfigException * @throws Throwable */ public function run() { if (!$this->userId) { return; } $config = new ConfigureForm(); if ( !$config->enabled || !$config->apiUsername || !$config->apiPassword || !$config->syncKeycloakGroupsToHumhub() ) { return; } $this->keycloakApi = new KeycloakApi(); $this->humhubGroupsByKeycloakId = GroupKeycloak::find() ->where(['not', ['keycloak_id' => null]]) ->indexBy('keycloak_id') ->all(); // Add Humhub user to Humhub groups foreach ($this->keycloakApi->getUserGroups($this->userId) as $keycloakGroupId) { if (!array_key_exists($keycloakGroupId, $this->humhubGroupsByKeycloakId)) { continue; } $humhubGroup = $this->humhubGroupsByKeycloakId[$keycloakGroupId]; $humhubGroup->addUser($this->userId); } } /** * @inheritDoc */ public function getTtr() { return $this->maxExecutionTime; } /** * @inheritDoc for RetryableJobInterface */ public function canRetry($attempt, $error) { return false; } }