diff --git a/data/web/inc/functions.auth.inc.php b/data/web/inc/functions.auth.inc.php index fe6af27cb..d325c0723 100644 --- a/data/web/inc/functions.auth.inc.php +++ b/data/web/inc/functions.auth.inc.php @@ -495,6 +495,7 @@ function ldap_mbox_login($user, $pass, $iam_settings, $extra = null){ try { $user_res = $iam_provider->query() ->where($iam_settings['username_field'], '=', $user) + ->whereRaw($iam_settings['filter']) ->select([$iam_settings['username_field'], $iam_settings['attribute_field'], 'displayname', 'distinguishedname']) ->firstOrFail(); } catch (Exception $e) { diff --git a/data/web/inc/functions.inc.php b/data/web/inc/functions.inc.php index 7e8389341..f63d50463 100644 --- a/data/web/inc/functions.inc.php +++ b/data/web/inc/functions.inc.php @@ -2189,11 +2189,12 @@ function identity_provider($_action, $_data = null, $_extra = null) { case "ldap": $_data['port'] = (!empty($_data['port'])) ? intval($_data['port']) : 389; $_data['username_field'] = (!empty($_data['username_field'])) ? $_data['username_field'] : "mail"; + $_data['filter'] = (!empty($_data['filter'])) ? $_data['filter'] : ""; $_data['periodic_sync'] = isset($_data['periodic_sync']) ? intval($_data['periodic_sync']) : 0; $_data['import_users'] = isset($_data['import_users']) ? intval($_data['import_users']) : 0; $_data['sync_interval'] = (!empty($_data['sync_interval'])) ? intval($_data['sync_interval']) : 15; $_data['sync_interval'] = $_data['sync_interval'] < 1 ? 1 : $_data['sync_interval']; - $required_settings = array('authsource', 'host', 'port', 'basedn', 'username_field', 'attribute_field', 'binddn', 'bindpass', 'periodic_sync', 'import_users', 'sync_interval'); + $required_settings = array('authsource', 'host', 'port', 'basedn', 'username_field', 'filter', 'attribute_field', 'binddn', 'bindpass', 'periodic_sync', 'import_users', 'sync_interval'); break; } diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index e41a5f51a..0a0622739 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -199,6 +199,7 @@ "f2b_regex_info": "Logs taken into consideration: SOGo, Postfix, Dovecot, PHP-FPM.", "f2b_retry_window": "Retry window (s) for max. attempts", "f2b_whitelist": "Whitelisted networks/hosts", + "filter": "Filter", "filter_table": "Filter table", "forwarding_hosts": "Forwarding Hosts", "forwarding_hosts_add_hint": "You can either specify IPv4/IPv6 addresses, networks in CIDR notation, host names (which will be resolved to IP addresses), or domain names (which will be resolved to IP addresses by querying SPF records or, in their absence, MX records).", diff --git a/data/web/templates/admin/tab-config-identity-provider.twig b/data/web/templates/admin/tab-config-identity-provider.twig index 78e76cbc6..5f002c056 100644 --- a/data/web/templates/admin/tab-config-identity-provider.twig +++ b/data/web/templates/admin/tab-config-identity-provider.twig @@ -314,6 +314,12 @@ +
+ +
+ +
+