diff --git a/data/web/inc/functions.auth.inc.php b/data/web/inc/functions.auth.inc.php index fe6af27c..d325c072 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 7e838934..f63d5046 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 e41a5f51..0a062273 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 78e76cbc..5f002c05 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 @@ +