Skip to content
This repository was archived by the owner on Jul 24, 2023. It is now read-only.

Commit 172012c

Browse files
committed
Implement new Resolver facade
- The resolver is now bound to the app container upon insertion of the AdldapAuthServiceProvider
1 parent 7ffc437 commit 172012c

File tree

2 files changed

+82
-9
lines changed

2 files changed

+82
-9
lines changed

src/AdldapAuthServiceProvider.php

Lines changed: 65 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
namespace Adldap\Laravel;
44

55
use InvalidArgumentException;
6-
use Adldap\Laravel\Commands\Import;
7-
use Adldap\Laravel\Events\Synchronizing;
6+
use Adldap\Laravel\Facades\Adldap;
7+
use Adldap\Laravel\Auth\Resolver;
8+
use Adldap\Laravel\Auth\ResolverInterface;
9+
use Adldap\Laravel\Commands\Console\Import;
810
use Adldap\Laravel\Auth\DatabaseUserProvider;
911
use Adldap\Laravel\Auth\NoDatabaseUserProvider;
1012
use Adldap\Laravel\Listeners\BindsLdapUserModel;
11-
use Adldap\Laravel\Listeners\SynchronizesPasswords;
1213
use Illuminate\Support\Facades\Auth;
1314
use Illuminate\Support\Facades\Event;
15+
use Illuminate\Support\Facades\Config;
1416
use Illuminate\Support\ServiceProvider;
1517
use Illuminate\Contracts\Hashing\Hasher;
1618
use Illuminate\Auth\Events\Authenticated;
@@ -59,6 +61,8 @@ public function boot()
5961
*/
6062
public function register()
6163
{
64+
$this->registerBindings();
65+
6266
$this->registerListeners();
6367
}
6468

@@ -72,6 +76,18 @@ public function provides()
7276
return ['auth'];
7377
}
7478

79+
/**
80+
* Registers the application bindings.
81+
*
82+
* @return void
83+
*/
84+
protected function registerBindings()
85+
{
86+
$this->app->bind(ResolverInterface::class, function () {
87+
return $this->newUserResolver();
88+
});
89+
}
90+
7591
/**
7692
* Registers the event listeners.
7793
*
@@ -80,8 +96,6 @@ public function provides()
8096
protected function registerListeners()
8197
{
8298
Event::listen(Authenticated::class, BindsLdapUserModel::class);
83-
84-
Event::listen(Synchronizing::class, SynchronizesPasswords::class);
8599
}
86100

87101
/**
@@ -96,7 +110,7 @@ protected function registerListeners()
96110
*/
97111
protected function newUserProvider(Hasher $hasher, array $config)
98112
{
99-
$provider = $this->getUserProvider();
113+
$provider = $this->userProvider();
100114

101115
switch ($provider) {
102116
case DatabaseUserProvider::class:
@@ -117,12 +131,54 @@ protected function newUserProvider(Hasher $hasher, array $config)
117131
}
118132

119133
/**
120-
* Returns the configured user provider.
134+
* Returns a new user resolver.
135+
*
136+
* @return ResolverInterface
137+
*/
138+
protected function newUserResolver()
139+
{
140+
$resolver = $this->resolver();
141+
142+
return new $resolver($this->ldapProvider());
143+
}
144+
145+
/**
146+
* Retrieves a connection provider from the Adldap instance.
147+
*
148+
* @return \Adldap\Connections\ProviderInterface
149+
*/
150+
protected function ldapProvider()
151+
{
152+
return Adldap::getProvider($this->connection());
153+
}
154+
155+
/**
156+
* Returns the configured user provider class.
157+
*
158+
* @return string
159+
*/
160+
protected function userProvider()
161+
{
162+
return Config::get('adldap_auth.provider', DatabaseUserProvider::class);
163+
}
164+
165+
/**
166+
* Returns the configured user resolver class.
167+
*
168+
* @return string
169+
*/
170+
protected function resolver()
171+
{
172+
return Config::get('adldap_auth.resolver', Resolver::class);
173+
}
174+
175+
/**
176+
* Returns the configured default connection name.
121177
*
122178
* @return string
123179
*/
124-
protected function getUserProvider()
180+
public function connection()
125181
{
126-
return config('adldap_auth.provider', DatabaseUserProvider::class);
182+
return Config::get('adldap_auth.connection', 'default');
127183
}
128184
}

src/Facades/Resolver.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Adldap\Laravel\Facades;
4+
5+
use Adldap\Laravel\Auth\ResolverInterface;
6+
use Illuminate\Support\Facades\Facade;
7+
8+
class Resolver extends Facade
9+
{
10+
/**
11+
* {@inheritdoc}
12+
*/
13+
public static function getFacadeAccessor()
14+
{
15+
return ResolverInterface::class;
16+
}
17+
}

0 commit comments

Comments
 (0)