Add icons for each DN based on objectClass
@ -100,37 +100,4 @@ class Server
|
|||||||
($key == 'desc' ? 'No description available, can you help with one?' : ($key == 'title' ? $oid : NULL))
|
($key == 'desc' ? 'No description available, can you help with one?' : ($key == 'title' ? $oid : NULL))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function icon(Entry $dn): string
|
|
||||||
{
|
|
||||||
$objectclasses = array_map('strtolower',$dn->objectclass);
|
|
||||||
|
|
||||||
// Return icon based upon objectClass value
|
|
||||||
if (in_array('person',$objectclasses) ||
|
|
||||||
in_array('organizationalperson',$objectclasses) ||
|
|
||||||
in_array('inetorgperson',$objectclasses) ||
|
|
||||||
in_array('account',$objectclasses) ||
|
|
||||||
in_array('posixaccount',$objectclasses))
|
|
||||||
|
|
||||||
return 'fas fa-user';
|
|
||||||
|
|
||||||
elseif (in_array('organization',$objectclasses))
|
|
||||||
return 'fas fa-university';
|
|
||||||
|
|
||||||
elseif (in_array('organizationalunit',$objectclasses))
|
|
||||||
return 'fas fa-object-group';
|
|
||||||
|
|
||||||
elseif (in_array('dcobject',$objectclasses) ||
|
|
||||||
in_array('domainrelatedobject',$objectclasses) ||
|
|
||||||
in_array('domain',$objectclasses) ||
|
|
||||||
in_array('builtindomain',$objectclasses))
|
|
||||||
|
|
||||||
return 'fas fa-network-wired';
|
|
||||||
|
|
||||||
elseif (in_array('country',$objectclasses))
|
|
||||||
return sprintf('flag %s',strtolower(Arr::get($dn->c,0)));
|
|
||||||
|
|
||||||
// Default
|
|
||||||
return 'fa-fw fas fa-cog';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -12,26 +12,6 @@ use App\Classes\LDAP\Server;
|
|||||||
|
|
||||||
class APIController extends Controller
|
class APIController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Get the LDAP server BASE DNs
|
|
||||||
*
|
|
||||||
* @return array|null
|
|
||||||
*/
|
|
||||||
public function bases(): Collection
|
|
||||||
{
|
|
||||||
return (new Server())
|
|
||||||
->getBaseDN()
|
|
||||||
->transform(function($item) {
|
|
||||||
return [
|
|
||||||
'title'=>$item,
|
|
||||||
'item'=>Crypt::encryptString($item),
|
|
||||||
'lazy'=>TRUE,
|
|
||||||
'icon'=>'fa-fw fas fa-sitemap',
|
|
||||||
'tooltip'=>$item,
|
|
||||||
];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return Collection
|
* @return Collection
|
||||||
@ -48,7 +28,7 @@ class APIController extends Controller
|
|||||||
return [
|
return [
|
||||||
'title'=>$item->getRdn(),
|
'title'=>$item->getRdn(),
|
||||||
'item'=>Crypt::encryptString($item->getDn()),
|
'item'=>Crypt::encryptString($item->getDn()),
|
||||||
'icon'=>'fa-fw fas fa-sitemap',
|
'icon'=>$item->icon(),
|
||||||
'lazy'=>Arr::get($item->getAttribute('hassubordinates'),0) == 'TRUE',
|
'lazy'=>Arr::get($item->getAttribute('hassubordinates'),0) == 'TRUE',
|
||||||
'tooltip'=>$item->getDn(),
|
'tooltip'=>$item->getDn(),
|
||||||
];
|
];
|
||||||
|
@ -17,17 +17,14 @@ class HomeController extends Controller
|
|||||||
{
|
{
|
||||||
public function home()
|
public function home()
|
||||||
{
|
{
|
||||||
$base = (new Entry)->baseDN();
|
$base = (new Entry)->baseDN() ?: collect();
|
||||||
|
|
||||||
if (! $base)
|
|
||||||
$base = collect();
|
|
||||||
|
|
||||||
return view('home')
|
return view('home')
|
||||||
->with('server',config('ldap.connections.default.name'))
|
->with('server',config('ldap.connections.default.name'))
|
||||||
->with('bases',$base->transform(function($item) {
|
->with('bases',$base->transform(function($item) {
|
||||||
return [
|
return [
|
||||||
'title'=>$item,
|
'title'=>$item->getRdn(),
|
||||||
'item'=>Crypt::encryptString($item),
|
'item'=>Crypt::encryptString($item->getDn()),
|
||||||
'lazy'=>TRUE,
|
'lazy'=>TRUE,
|
||||||
'icon'=>'fa-fw fas fa-sitemap',
|
'icon'=>'fa-fw fas fa-sitemap',
|
||||||
'tooltip'=>$item,
|
'tooltip'=>$item,
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Ldap;
|
namespace App\Ldap;
|
||||||
|
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use LdapRecord\Models\Model;
|
use LdapRecord\Models\Model;
|
||||||
use LdapRecord\Models\ModelNotFoundException;
|
use LdapRecord\Models\ModelNotFoundException;
|
||||||
@ -34,7 +35,75 @@ class Entry extends Model
|
|||||||
->whereHas('objectclass')
|
->whereHas('objectclass')
|
||||||
->firstOrFail();
|
->firstOrFail();
|
||||||
|
|
||||||
return $base->namingcontexts ? collect($base->namingcontexts) : NULL;
|
$result = collect();
|
||||||
|
foreach ($base->namingcontexts as $dn) {
|
||||||
|
$result->push((new self)->findOrFail($dn));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an icon for a DN based on objectClass
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function icon(): string
|
||||||
|
{
|
||||||
|
$objectclasses = array_map('strtolower',$this->objectclass);
|
||||||
|
|
||||||
|
// Return icon based upon objectClass value
|
||||||
|
if (in_array('person',$objectclasses) ||
|
||||||
|
in_array('organizationalperson',$objectclasses) ||
|
||||||
|
in_array('inetorgperson',$objectclasses) ||
|
||||||
|
in_array('account',$objectclasses) ||
|
||||||
|
in_array('posixaccount',$objectclasses))
|
||||||
|
|
||||||
|
return 'fas fa-user';
|
||||||
|
|
||||||
|
elseif (in_array('organization',$objectclasses))
|
||||||
|
return 'fas fa-university';
|
||||||
|
|
||||||
|
elseif (in_array('organizationalunit',$objectclasses))
|
||||||
|
return 'fas fa-object-group';
|
||||||
|
|
||||||
|
elseif (in_array('posixgroup',$objectclasses) ||
|
||||||
|
in_array('groupofnames',$objectclasses) ||
|
||||||
|
in_array('groupofuniquenames',$objectclasses) ||
|
||||||
|
in_array('group',$objectclasses))
|
||||||
|
|
||||||
|
return 'fas fa-users';
|
||||||
|
|
||||||
|
elseif (in_array('dcobject',$objectclasses) ||
|
||||||
|
in_array('domainrelatedobject',$objectclasses) ||
|
||||||
|
in_array('domain',$objectclasses) ||
|
||||||
|
in_array('builtindomain',$objectclasses))
|
||||||
|
|
||||||
|
return 'fas fa-network-wired';
|
||||||
|
|
||||||
|
elseif (in_array('alias',$objectclasses))
|
||||||
|
return 'fas fa-theater-masks';
|
||||||
|
|
||||||
|
elseif (in_array('country',$objectclasses))
|
||||||
|
return sprintf('flag %s',strtolower(Arr::get($this->c,0)));
|
||||||
|
|
||||||
|
elseif (in_array('device',$objectclasses))
|
||||||
|
return 'fas fa-mobile-alt';
|
||||||
|
|
||||||
|
elseif (in_array('document',$objectclasses))
|
||||||
|
return 'fas fa-file-alt';
|
||||||
|
|
||||||
|
elseif (in_array('iphost',$objectclasses))
|
||||||
|
return 'fas fa-wifi';
|
||||||
|
|
||||||
|
elseif (in_array('room',$objectclasses))
|
||||||
|
return 'fas fa-door-open';
|
||||||
|
|
||||||
|
elseif (in_array('server',$objectclasses))
|
||||||
|
return 'fas fa-server';
|
||||||
|
|
||||||
|
// Default
|
||||||
|
return 'fa-fw fas fa-cog';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 253 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 628 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 648 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 646 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 623 B |