]> BookStack Code Mirror - bookstack/blobdiff - app/Providers/AuthServiceProvider.php
Guest create page: name field autofocus
[bookstack] / app / Providers / AuthServiceProvider.php
index 0b299551aa5d7e7f1dc643f7581446cada86a21c..5e16179ab27c60ff878451f35868a75d9013c662 100644 (file)
@@ -2,13 +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\UserRepo;
+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
 {
@@ -19,18 +22,35 @@ class AuthServiceProvider extends ServiceProvider
      */
     public function boot()
     {
+        // Password Configuration
+        // Changes here must be reflected in ApiDocsGenerate@getValidationAsString.
+        Password::defaults(fn () => Password::min(8));
+
+        // Custom guards
         Auth::extend('api-token', function ($app, $name, array $config) {
-            return new ApiTokenGuard($app['request']);
+            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,
-                $this->app['session.store'],
+                $app['session.store'],
                 $app[LdapService::class],
-                $app[UserRepo::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]
             );
         });
     }