]> BookStack Code Mirror - bookstack/blob - app/Providers/AuthServiceProvider.php
a885628f3ac3114b1ff563cfb39625ac3044389b
[bookstack] / app / Providers / AuthServiceProvider.php
1 <?php
2
3 namespace BookStack\Providers;
4
5 use Auth;
6 use BookStack\Api\ApiTokenGuard;
7 use BookStack\Auth\Access\ExternalBaseUserProvider;
8 use BookStack\Auth\Access\Guards\LdapSessionGuard;
9 use BookStack\Auth\Access\Guards\Saml2SessionGuard;
10 use BookStack\Auth\Access\LdapService;
11 use BookStack\Auth\UserRepo;
12 use Illuminate\Support\ServiceProvider;
13
14 class AuthServiceProvider extends ServiceProvider
15 {
16     /**
17      * Bootstrap the application services.
18      *
19      * @return void
20      */
21     public function boot()
22     {
23         Auth::extend('api-token', function ($app, $name, array $config) {
24             return new ApiTokenGuard($app['request']);
25         });
26
27         Auth::extend('ldap-session', function ($app, $name, array $config) {
28             $provider = Auth::createUserProvider($config['provider']);
29             return new LdapSessionGuard(
30                 $name,
31                 $provider,
32                 $this->app['session.store'],
33                 $app[LdapService::class],
34                 $app[UserRepo::class]
35             );
36         });
37
38         Auth::extend('saml2-session', function ($app, $name, array $config) {
39             $provider = Auth::createUserProvider($config['provider']);
40             return new Saml2SessionGuard(
41                 $name,
42                 $provider,
43                 $this->app['session.store'],
44                 $app[UserRepo::class]
45             );
46         });
47     }
48
49     /**
50      * Register the application services.
51      *
52      * @return void
53      */
54     public function register()
55     {
56         Auth::provider('external-users', function ($app, array $config) {
57             return new ExternalBaseUserProvider($config['model']);
58         });
59     }
60 }