diff --git a/app/Scopes/LdapFilterScope.php b/app/Scopes/LdapFilterScope.php new file mode 100644 index 0000000000..d1f9dc4e38 --- /dev/null +++ b/app/Scopes/LdapFilterScope.php @@ -0,0 +1,21 @@ +rawFilter($filter); + } + } +} diff --git a/config/ldap_auth.php b/config/ldap_auth.php index f661236d38..13e45f9b0d 100644 --- a/config/ldap_auth.php +++ b/config/ldap_auth.php @@ -22,6 +22,8 @@ declare(strict_types=1); +use FireflyIII\Scopes\LdapFilterScope; + use Adldap\Laravel\Events\Authenticated; use Adldap\Laravel\Events\AuthenticatedModelTrashed; use Adldap\Laravel\Events\AuthenticatedWithWindows; @@ -49,13 +51,17 @@ use Adldap\Laravel\Scopes\UpnScope; // default OpenLDAP scopes. $scopes = [ + LdapFilterScope::class, UidScope::class, ]; if ('FreeIPA' === env('ADLDAP_CONNECTION_SCHEME')) { - $scopes = []; + $scopes = [ + LdapFilterScope::class, + ]; } if ('ActiveDirectory' === env('ADLDAP_CONNECTION_SCHEME')) { $scopes = [ + LdapFilterScope::class, UpnScope::class, ]; } @@ -374,4 +380,16 @@ return [ ], ], + /* + |-------------------------------------------------------------------------- + | Custom LDAP Filter + |-------------------------------------------------------------------------- + | + | This value can be optionally provided to restrict LDAP queries to the + | given filter. It should be in LDAP filter format, and will be + | applied in the LdapFilterScope. + | + */ + 'custom_filter' => env('ADLDAP_AUTH_FILTER', ''), + ];