]> BookStack Code Mirror - bookstack/blobdiff - app/Providers/AuthServiceProvider.php
Added test for logical-theme-system command registration
[bookstack] / app / Providers / AuthServiceProvider.php
index 6e5b6ffde7ca10274b1beef274f2e06cd7283472..4a626e4fadd49e49d697967c496aad433f6de488 100644 (file)
@@ -2,8 +2,14 @@
 
 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;
 
 class AuthServiceProvider extends ServiceProvider
@@ -15,7 +21,32 @@ class AuthServiceProvider extends ServiceProvider
      */
     public function boot()
     {
-        //
+        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 +56,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']);
         });
     }
 }