phpldapadmin/app/Classes/LDAP/Server.php

80 lines
1.8 KiB
PHP
Raw Normal View History

2020-08-22 12:26:06 +00:00
<?php
2020-08-23 02:30:18 +00:00
namespace App\Classes\LDAP;
2020-08-22 12:26:06 +00:00
use Adldap\Adldap;
use Adldap\Models\Entry;
use Illuminate\Support\Collection;
2020-08-22 12:26:06 +00:00
class Server
{
/**
* Gets the root DN of the specified LDAPServer, or NULL if it
* can't find it (ie, the server won't give it to us, or it isnt
* specified in the configuration file).
*
* @return array array|NULL The root DN(s) of the server on success (string) or NULL if it cannot be determine.
* @todo Sort the entries, so that they are in the correct DN order.
*/
public function getBaseDN(): ?Collection
2020-08-22 12:26:06 +00:00
{
//findBaseDn()?
2020-08-22 12:26:06 +00:00
// If the base is set in the configuration file, then just return that after validating it exists.
// @todo
if (false) {
// We need to work out the baseDN
} else {
$result = $this->getDNAttrValues('',['namingcontexts']);
return $result ? collect($result->namingcontexts) : NULL;
2020-08-22 12:26:06 +00:00
}
}
/**
* Search for a DN and return its attributes
*
* @param $dn
* @param array $attrs
* @param int $deref // @todo
* @return Entry|bool
*/
protected function getDNAttrValues(string $dn,array $attrs=['*','+'],int $deref=LDAP_DEREF_NEVER): ?Entry
{
try {
return ($x=(new Adldap)
->addProvider(config('ldap.connections.default.settings'))
->search()
->select($attrs)
->findByDn($dn)) ? $x : NULL;
// @todo Tidy up this exception
} catch (\Exception $e) {
2020-08-23 02:30:18 +00:00
dd(['e'=>$e]);
2020-08-22 12:26:06 +00:00
}
}
/**
* Query the server for a DN
*
* @param string $dn
* @return |null
*/
public function query(string $dn)
{
try {
return ($x=(new Adldap)
->addProvider(config('ldap.connections.default.settings'))
->search()
->setBaseDn($dn)
//->select($attrs)
->listing()
->get()) ? $x : NULL;
// @todo Tidy up this exception
} catch (\Exception $e) {
dd(['e'=>$e]);
}
}
2020-08-23 02:30:18 +00:00
}