2020-09-13 13:41:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Ldap;
|
|
|
|
|
2020-09-23 12:14:38 +00:00
|
|
|
use Illuminate\Support\Arr;
|
2020-09-13 13:41:26 +00:00
|
|
|
use LdapRecord\Models\Model;
|
|
|
|
|
2021-12-08 12:26:12 +00:00
|
|
|
use App\Classes\LDAP\Attribute\Factory;
|
|
|
|
|
2020-09-13 13:41:26 +00:00
|
|
|
class Entry extends Model
|
|
|
|
{
|
2023-01-27 08:59:31 +00:00
|
|
|
/* OVERRIDES */
|
|
|
|
|
|
|
|
public function getAttributes(): array
|
|
|
|
{
|
|
|
|
$result = collect();
|
|
|
|
foreach (parent::getAttributes() as $attribute => $value) {
|
|
|
|
$result->put($attribute,Factory::create($attribute,$value));
|
|
|
|
}
|
|
|
|
|
|
|
|
return $result->toArray();
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ATTRIBUTES */
|
2021-12-08 12:26:12 +00:00
|
|
|
|
2023-01-27 08:59:31 +00:00
|
|
|
/**
|
|
|
|
* Return a key to use for sorting
|
|
|
|
*
|
|
|
|
* @todo This should be the DN in reverse order
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getSortKeyAttribute(): string
|
|
|
|
{
|
|
|
|
return $this->getDn();
|
2021-12-08 12:26:12 +00:00
|
|
|
}
|
|
|
|
|
2023-01-27 08:59:31 +00:00
|
|
|
/* METHODS */
|
|
|
|
|
2020-09-23 12:14:38 +00:00
|
|
|
/**
|
|
|
|
* 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';
|
|
|
|
|
2021-03-02 11:19:00 +00:00
|
|
|
elseif (in_array('openldaprootdse',$objectclasses))
|
|
|
|
return 'fas fa-info';
|
|
|
|
|
2020-09-23 12:14:38 +00:00
|
|
|
// Default
|
|
|
|
return 'fa-fw fas fa-cog';
|
2020-09-21 12:20:59 +00:00
|
|
|
}
|
2023-02-14 10:38:42 +00:00
|
|
|
}
|