diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index ed24a821..7c1744f9 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -156,6 +156,46 @@ class HomeController extends Controller ->withFragment($o->getDNSecure()); } + public function entry_delete(Request $request) + { + $dn = Crypt::decryptString($request->dn); + + $o = config('server')->fetch($dn); + + try { + $o->delete(); + + } catch (InsufficientAccessException $e) { + $request->flash(); + + switch ($x=$e->getDetailedError()->getErrorCode()) { + case 50: + return Redirect::to('/') + ->withInput() + ->withErrors(sprintf('%s: %s (%s)',__('LDAP Server Error Code'),$x,__($e->getDetailedError()->getErrorMessage()))); + + default: + abort(599,$e->getDetailedError()->getErrorMessage()); + } + + } catch (LdapRecordException $e) { + $request->flash(); + + switch ($x=$e->getDetailedError()->getErrorCode()) { + case 8: + return Redirect::to('/') + ->withInput() + ->withErrors(sprintf('%s: %s (%s)',__('LDAP Server Error Code'),$x,__($e->getDetailedError()->getErrorMessage()))); + + default: + abort(599,$e->getDetailedError()->getErrorMessage()); + } + } + + return Redirect::to('/') + ->with('success',[sprintf('%s: %s',__('Deleted'),$dn)]); + } + public function entry_export(Request $request,string $id) { $dn = Crypt::decryptString($id); diff --git a/resources/themes/architect/views/layouts/partials/contentheader.blade.php b/resources/themes/architect/views/layouts/partials/contentheader.blade.php index 72893e2b..897ed081 100644 --- a/resources/themes/architect/views/layouts/partials/contentheader.blade.php +++ b/resources/themes/architect/views/layouts/partials/contentheader.blade.php @@ -35,9 +35,12 @@ @endif + @if(isset($page_actions) && $page_actions->contains('delete'))
  • - + + +
  • @endif @@ -51,7 +54,6 @@ @section('page-scripts') \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 7828f817..26ec1c67 100644 --- a/routes/web.php +++ b/routes/web.php @@ -43,6 +43,7 @@ Route::controller(HomeController::class)->group(function() { Route::match(['get','post'],'entry/add','entry_add'); Route::post('entry/create','entry_create'); + Route::post('entry/delete','entry_delete'); Route::get('entry/export/{id}','entry_export'); Route::post('entry/password/check/','entry_password_check'); Route::post('entry/attr/add/{id}','entry_attr_add'); @@ -51,5 +52,7 @@ Route::controller(HomeController::class)->group(function() { Route::post('entry/update/pending','entry_pending_update'); Route::post('import/process/{type}','import'); + + Route::view('modal/delete/{dn}','modals.entry-delete'); }); }); \ No newline at end of file