|
15 | 15 | use humhub\modules\authKeycloak\models\GroupKeycloak; |
16 | 16 | use humhub\modules\queue\ActiveJob; |
17 | 17 | use humhub\modules\user\models\Auth; |
| 18 | +use humhub\modules\user\models\User; |
18 | 19 | use Throwable; |
19 | 20 | use Yii; |
20 | 21 | use yii\base\InvalidConfigException; |
@@ -215,9 +216,11 @@ protected function addHumhubGroupsToKeycloak() |
215 | 216 | protected function initUsersKeycloakIdToHumhubId() |
216 | 217 | { |
217 | 218 | $auths = Auth::find() |
218 | | - ->orderBy(['id' => SORT_ASC]) // Get the latest if it has multiple |
219 | | - ->where(['source' => Keycloak::DEFAULT_NAME]) |
220 | | - ->indexBy('user_id') // Remove duplicated |
| 219 | + ->joinWith('user') |
| 220 | + ->andWhere(['user.status' => User::STATUS_ENABLED]) |
| 221 | + ->andWhere(['user_auth.source' => Keycloak::DEFAULT_NAME]) |
| 222 | + ->orderBy(['user_auth.id' => SORT_ASC]) // Get the latest if it has multiple |
| 223 | + ->indexBy('user_id') // Removes duplicated |
221 | 224 | ->all(); |
222 | 225 | $this->usersKeycloakIdToHumhubId = ArrayHelper::map($auths, 'source_id', 'user_id'); |
223 | 226 | } |
@@ -280,10 +283,10 @@ protected function addKeycloakUsersToHumhubGroups() |
280 | 283 | { |
281 | 284 | foreach ($this->keycloakGroupsMembers as $keycloakGroupId => $keycloakUserIds) { |
282 | 285 | foreach ($keycloakUserIds as $keycloakUserId) { |
283 | | - $humhubUserId = $this->usersKeycloakIdToHumhubId[$keycloakUserId]; |
| 286 | + $humhubUserId = $this->getHumhubUserId($keycloakUserId); |
284 | 287 | $humhubGroup = $this->humhubGroupsByKeycloakId[$keycloakGroupId]; |
285 | 288 | $humhubGroupMembers = $this->humhubGroupsMembers[$humhubGroup->id]; |
286 | | - if (!in_array($humhubUserId, $humhubGroupMembers)) { |
| 289 | + if ($humhubUserId !== null && !in_array($humhubUserId, $humhubGroupMembers)) { |
287 | 290 | $humhubGroup->addUser($humhubUserId); |
288 | 291 | $this->humhubGroupsMembers[$humhubGroup->id][] = $humhubUserId; |
289 | 292 | } |
|
0 commit comments