X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/919660678bec2b94eaa84ac60d0313f5ef07dfb7..refs/pull/3138/head:/app/Providers/AuthServiceProvider.php diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 6e5b6ffde..b301604a5 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,9 +2,16 @@ namespace BookStack\Providers; -use Auth; +use BookStack\Api\ApiTokenGuard; +use BookStack\Auth\Access\ExternalBaseUserProvider; +use BookStack\Auth\Access\Guards\AsyncExternalBaseSessionGuard; +use BookStack\Auth\Access\Guards\LdapSessionGuard; use BookStack\Auth\Access\LdapService; +use BookStack\Auth\Access\LoginService; +use BookStack\Auth\Access\RegistrationService; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\ServiceProvider; +use Illuminate\Validation\Rules\Password; class AuthServiceProvider extends ServiceProvider { @@ -15,7 +22,38 @@ class AuthServiceProvider extends ServiceProvider */ public function boot() { - // + // Password Configuration + Password::defaults(function () { + return Password::min(8); + }); + + // Custom guards + Auth::extend('api-token', function ($app, $name, array $config) { + return new ApiTokenGuard($app['request'], $app->make(LoginService::class)); + }); + + Auth::extend('ldap-session', function ($app, $name, array $config) { + $provider = Auth::createUserProvider($config['provider']); + + return new LdapSessionGuard( + $name, + $provider, + $app['session.store'], + $app[LdapService::class], + $app[RegistrationService::class] + ); + }); + + Auth::extend('async-external-session', function ($app, $name, array $config) { + $provider = Auth::createUserProvider($config['provider']); + + return new AsyncExternalBaseSessionGuard( + $name, + $provider, + $app['session.store'], + $app[RegistrationService::class] + ); + }); } /** @@ -25,8 +63,8 @@ class AuthServiceProvider extends ServiceProvider */ public function register() { - Auth::provider('ldap', function ($app, array $config) { - return new LdapUserProvider($config['model'], $app[LdapService::class]); + Auth::provider('external-users', function ($app, array $config) { + return new ExternalBaseUserProvider($config['model']); }); } }