Update existing LDAP instance configuration instead of replacing it. Caching was not enabled as per the configuration, so this fixes this.
This commit is contained in:
parent
808934ebfe
commit
3604f1498c
@ -15,4 +15,4 @@ LDAP_HOST=
|
|||||||
LDAP_BASE_DN=
|
LDAP_BASE_DN=
|
||||||
LDAP_USERNAME=
|
LDAP_USERNAME=
|
||||||
LDAP_PASSWORD=
|
LDAP_PASSWORD=
|
||||||
LDAP_CACHE=true
|
LDAP_CACHE=false
|
||||||
|
@ -181,12 +181,6 @@ final class Server
|
|||||||
if (! $objects)
|
if (! $objects)
|
||||||
return collect($base->namingcontexts);
|
return collect($base->namingcontexts);
|
||||||
|
|
||||||
/**
|
|
||||||
* @note While we are caching our baseDNs, it seems if we have more than 1,
|
|
||||||
* our caching doesnt generate a hit on a subsequent call to this function (before the cache expires).
|
|
||||||
* IE: If we have 5 baseDNs, it takes 5 calls to this function to cache them all.
|
|
||||||
* @todo Possibly a bug with ldaprecord, so need to investigate
|
|
||||||
*/
|
|
||||||
$result = collect();
|
$result = collect();
|
||||||
foreach ($base->namingcontexts as $dn)
|
foreach ($base->namingcontexts as $dn)
|
||||||
$result->push((new Entry)->cache($cachetime)->findOrFail($dn));
|
$result->push((new Entry)->cache($cachetime)->findOrFail($dn));
|
||||||
|
@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Log;
|
|||||||
use Illuminate\Support\Facades\Session;
|
use Illuminate\Support\Facades\Session;
|
||||||
use LdapRecord\Container;
|
use LdapRecord\Container;
|
||||||
|
|
||||||
use App\Ldap\Connection;
|
use App\Ldap\Guard;
|
||||||
|
|
||||||
class SwapinAuthUser
|
class SwapinAuthUser
|
||||||
{
|
{
|
||||||
@ -37,7 +37,11 @@ class SwapinAuthUser
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We need to override our Connection object so that we can store and retrieve the logged in user and swap out the credentials to use them.
|
// We need to override our Connection object so that we can store and retrieve the logged in user and swap out the credentials to use them.
|
||||||
Container::getInstance()->addConnection(new Connection(config('ldap.connections.'.$key)),$key);
|
$c = Container::getInstance()
|
||||||
|
->getConnection($key);
|
||||||
|
|
||||||
|
$c->setConfiguration(config('ldap.connections.'.$key));
|
||||||
|
$c->setGuardResolver(fn()=>new Guard($c->getLdapConnection(),$c->getConfiguration()));
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Ldap;
|
|
||||||
|
|
||||||
use LdapRecord\Configuration\DomainConfiguration;
|
|
||||||
use LdapRecord\Connection as ConnectionBase;
|
|
||||||
use LdapRecord\LdapInterface;
|
|
||||||
|
|
||||||
class Connection extends ConnectionBase
|
|
||||||
{
|
|
||||||
|
|
||||||
public function __construct(DomainConfiguration|array $config=[],?LdapInterface $ldap=NULL)
|
|
||||||
{
|
|
||||||
parent::__construct($config,$ldap);
|
|
||||||
|
|
||||||
// We need to override this so that we use our own Guard, that stores the users credentials in the session
|
|
||||||
$this->authGuardResolver = function () {
|
|
||||||
return new Guard($this->ldap, $this->configuration);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user