]> BookStack Code Mirror - bookstack/blobdiff - app/Providers/AuthServiceProvider.php
Updated minimum php version from 7.3 to 7.4
[bookstack] / app / Providers / AuthServiceProvider.php
index ab7dd51951c8d33a91c95d754d8e134c90d2b475..b301604a519e9b95e5bf5881f7a93c0f78cfb88e 100644 (file)
@@ -2,10 +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
 {
@@ -16,8 +22,37 @@ 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']);
+            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]
+            );
         });
     }
 
@@ -28,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']);
         });
     }
 }