2020-08-27 12:46:07 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
2020-09-14 11:08:55 +00:00
|
|
|
use Illuminate\Support\Arr;
|
2020-08-27 12:46:07 +00:00
|
|
|
use Illuminate\Support\Facades\Crypt;
|
2020-08-31 11:41:45 +00:00
|
|
|
use Illuminate\Support\Facades\Log;
|
2024-01-12 07:15:38 +00:00
|
|
|
use Illuminate\Support\Collection;
|
2020-08-27 12:46:07 +00:00
|
|
|
|
|
|
|
use App\Classes\LDAP\Server;
|
|
|
|
|
|
|
|
class APIController extends Controller
|
|
|
|
{
|
2024-01-12 07:15:38 +00:00
|
|
|
/**
|
|
|
|
* Get the LDAP server BASE DNs
|
|
|
|
*
|
|
|
|
* @return Collection
|
|
|
|
* @throws LdapRecord\Query\ObjectNotFoundException
|
|
|
|
*/
|
|
|
|
public function bases(): Collection
|
|
|
|
{
|
|
|
|
$base = Server::baseDNs() ?: collect();
|
|
|
|
|
|
|
|
return $base->transform(function($item) {
|
|
|
|
return [
|
|
|
|
'title'=>$item->getRdn(),
|
|
|
|
'item'=>$item->getDNSecure(),
|
|
|
|
'lazy'=>TRUE,
|
|
|
|
'icon'=>'fa-fw fas fa-sitemap',
|
|
|
|
'tooltip'=>$item->getDn(),
|
|
|
|
];
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-09-13 13:41:26 +00:00
|
|
|
/**
|
|
|
|
* @param Request $request
|
|
|
|
* @return Collection
|
|
|
|
*/
|
2020-09-14 11:08:55 +00:00
|
|
|
public function children(Request $request): Collection
|
2020-08-31 11:41:45 +00:00
|
|
|
{
|
|
|
|
$levels = $request->query('depth',1);
|
|
|
|
$dn = Crypt::decryptString($request->query('key'));
|
|
|
|
Log::debug(sprintf('%s: Query [%s] - Levels [%d]',__METHOD__,$dn,$levels));
|
|
|
|
|
2023-03-02 01:15:08 +00:00
|
|
|
return (config('server'))
|
2020-09-14 11:08:55 +00:00
|
|
|
->children($dn)
|
2020-08-31 11:41:45 +00:00
|
|
|
->transform(function($item) {
|
|
|
|
return [
|
2020-09-14 11:08:55 +00:00
|
|
|
'title'=>$item->getRdn(),
|
2023-03-31 04:55:08 +00:00
|
|
|
'item'=>$item->getDNSecure(),
|
2020-09-23 12:14:38 +00:00
|
|
|
'icon'=>$item->icon(),
|
2020-09-14 11:08:55 +00:00
|
|
|
'lazy'=>Arr::get($item->getAttribute('hassubordinates'),0) == 'TRUE',
|
2020-09-13 13:41:26 +00:00
|
|
|
'tooltip'=>$item->getDn(),
|
2020-08-31 11:41:45 +00:00
|
|
|
];
|
|
|
|
});
|
2020-08-27 12:46:07 +00:00
|
|
|
}
|
2023-02-14 10:38:42 +00:00
|
|
|
|
|
|
|
public function schema_view(Request $request)
|
|
|
|
{
|
|
|
|
$server = new Server;
|
|
|
|
|
|
|
|
switch($request->type) {
|
|
|
|
case 'objectclasses':
|
2024-01-20 04:56:01 +00:00
|
|
|
return view('fragment.schema.objectclasses')
|
2023-02-14 10:38:42 +00:00
|
|
|
->with('objectclasses',$server->schema('objectclasses')->sortBy(function($item) { return strtolower($item->name); }));
|
|
|
|
|
|
|
|
case 'attributetypes':
|
2024-01-20 04:56:01 +00:00
|
|
|
return view('fragment.schema.attributetypes')
|
2023-02-14 10:38:42 +00:00
|
|
|
->with('server',$server)
|
|
|
|
->with('attributetypes',$server->schema('attributetypes')->sortBy(function($item) { return strtolower($item->name); }));
|
|
|
|
|
|
|
|
case 'ldapsyntaxes':
|
2024-01-20 04:56:01 +00:00
|
|
|
return view('fragment.schema.ldapsyntaxes')
|
2023-02-14 10:38:42 +00:00
|
|
|
->with('ldapsyntaxes',$server->schema('ldapsyntaxes')->sortBy(function($item) { return strtolower($item->description); }));
|
|
|
|
|
|
|
|
case 'matchingrules':
|
2024-01-20 04:56:01 +00:00
|
|
|
return view('fragment.schema.matchingrules')
|
2023-02-14 10:38:42 +00:00
|
|
|
->with('matchingrules',$server->schema('matchingrules')->sortBy(function($item) { return strtolower($item->name); }));
|
|
|
|
|
|
|
|
default:
|
|
|
|
abort(404);
|
|
|
|
}
|
|
|
|
}
|
2020-08-27 12:46:07 +00:00
|
|
|
}
|