Skip to content

Commit b576d37

Browse files
committed
Plugin: Azure: Add option to filter groups by display name - refs BT#21930
1 parent 10b6d61 commit b576d37

File tree

6 files changed

+18
-0
lines changed

6 files changed

+18
-0
lines changed

plugin/azure_active_directory/lang/dutch.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,5 @@
4646
$strings['tenant_id_help'] = 'Required to run scripts.';
4747
$strings['deactivate_nonexisting_users'] = 'Deactivate non-existing users';
4848
$strings['deactivate_nonexisting_users_help'] = 'Compare registered users in Chamilo with those in Azure and deactivate accounts in Chamilo that do not exist in Azure.';
49+
$strings['group_filter_regex'] = 'Group filter RegEx';
50+
$strings['group_filter_regex_help'] = 'Regular expression to filter groups (only matches will be synchronized), e.g. <code>.*-FIL-.*</code> <code>.*-PAR-.*</code> <code>.*(FIL|PAR).*</code> <code>^(FIL|PAR).*</code>';

plugin/azure_active_directory/lang/english.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,5 @@
4646
$strings['tenant_id_help'] = 'Required to run scripts.';
4747
$strings['deactivate_nonexisting_users'] = 'Deactivate non-existing users';
4848
$strings['deactivate_nonexisting_users_help'] = 'Compare registered users in Chamilo with those in Azure and deactivate accounts in Chamilo that do not exist in Azure.';
49+
$strings['group_filter_regex'] = 'Group filter RegEx';
50+
$strings['group_filter_regex_help'] = 'Regular expression to filter groups (only matches will be synchronized), e.g. <code>.*-FIL-.*</code> <code>.*-PAR-.*</code> <code>.*(FIL|PAR).*</code> <code>^(FIL|PAR).*</code>';

plugin/azure_active_directory/lang/french.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,5 @@
4646
$strings['tenant_id_help'] = 'Nécessaire pour exécuter des scripts.';
4747
$strings['deactivate_nonexisting_users'] = 'Deactivate non-existing users';
4848
$strings['deactivate_nonexisting_users_help'] = 'Compare registered users in Chamilo with those in Azure and deactivate accounts in Chamilo that do not exist in Azure.';
49+
$strings['group_filter_regex'] = 'Group filter RegEx';
50+
$strings['group_filter_regex_help'] = 'Regular expression to filter groups (only matches will be synchronized), e.g. <code>.*-FIL-.*</code> <code>.*-PAR-.*</code> <code>.*(FIL|PAR).*</code> <code>^(FIL|PAR).*</code>';

plugin/azure_active_directory/lang/spanish.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,5 @@
4646
$strings['tenant_id_help'] = 'Necesario para ejecutar scripts.';
4747
$strings['deactivate_nonexisting_users'] = 'Desactivar usuarios no existentes';
4848
$strings['deactivate_nonexisting_users_help'] = 'Compara los usuarios registrados en Chamilo con los de Azure y desactiva las cuentas en Chamilo que no existan en Azure.';
49+
$strings['group_filter_regex'] = 'Group filter RegEx';
50+
$strings['group_filter_regex_help'] = 'Expresión regular para filtrar grupos (solo las coincidencias serán sincronizadas), p.ej. <code>.*-FIL-.*</code> <code>.*-PAR-.*</code> <code>.*(FIL|PAR).*</code> <code>^(FIL|PAR).*</code>';

plugin/azure_active_directory/src/AzureActiveDirectory.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class AzureActiveDirectory extends Plugin
2828
public const SETTING_EXISTING_USER_VERIFICATION_ORDER = 'existing_user_verification_order';
2929
public const SETTING_TENANT_ID = 'tenant_id';
3030
public const SETTING_DEACTIVATE_NONEXISTING_USERS = 'deactivate_nonexisting_users';
31+
public const SETTING_GROUP_FILTER = 'group_filter_regex';
3132

3233
public const URL_TYPE_AUTHORIZE = 'login';
3334
public const URL_TYPE_LOGOUT = 'logout';
@@ -59,6 +60,7 @@ protected function __construct()
5960
self::SETTING_EXISTING_USER_VERIFICATION_ORDER => 'text',
6061
self::SETTING_TENANT_ID => 'text',
6162
self::SETTING_DEACTIVATE_NONEXISTING_USERS => 'boolean',
63+
self::SETTING_GROUP_FILTER => 'text',
6264
];
6365

6466
parent::__construct('2.4', 'Angel Fernando Quiroz Campos, Yannick Warnier', $settings);

plugin/azure_active_directory/src/AzureCommand.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ protected function getAzureUsers(): Generator
9999
*/
100100
protected function getAzureGroups(): Generator
101101
{
102+
$groupFilter = $this->plugin->get(AzureActiveDirectory::SETTING_GROUP_FILTER);
103+
102104
$groupFields = [
103105
'id',
104106
'displayName',
@@ -125,6 +127,12 @@ protected function getAzureGroups(): Generator
125127
$azureGroupsInfo = $azureGroupsRequest['value'] ?? [];
126128

127129
foreach ($azureGroupsInfo as $azureGroupInfo) {
130+
if (!empty($groupFilter) &&
131+
!preg_match("/$groupFilter/", $azureGroupInfo['displayName'])
132+
) {
133+
continue;
134+
}
135+
128136
yield $azureGroupInfo;
129137
}
130138

0 commit comments

Comments
 (0)