Implemented DN delete
This commit is contained in:
parent
c8c3939d59
commit
d97087b83f
@ -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);
|
||||
|
@ -35,9 +35,12 @@
|
||||
<button class="btn btn-outline-dark p-1 m-1" id="entry-edit" data-bs-toggle="tooltip" data-bs-placement="bottom" title="@lang('Edit Entry')"><i class="fas fa-fw fa-edit fs-5"></i></button>
|
||||
</li>
|
||||
@endif
|
||||
<!-- @todo Dont offer the delete button for an entry with children -->
|
||||
@if(isset($page_actions) && $page_actions->contains('delete'))
|
||||
<li>
|
||||
<button class="btn btn-outline-danger p-1 m-1" id="entry-delete" data-bs-custom-class="custom-tooltip-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="@lang('Delete Entry')"><i class="fas fa-fw fa-trash-can fs-5"></i></button>
|
||||
<span id="entry-delete" data-bs-toggle="modal" data-bs-target="#page-modal">
|
||||
<button class="btn btn-outline-danger p-1 m-1" data-bs-custom-class="custom-tooltip-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="@lang('Delete Entry')"><i class="fas fa-fw fa-trash-can fs-5"></i></button>
|
||||
</span>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
@ -51,7 +54,6 @@
|
||||
@section('page-scripts')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
console.log($('button[id=entry-edit]'));
|
||||
$('button[id=entry-edit]').on('click',function(item) {
|
||||
item.preventDefault();
|
||||
|
||||
|
1
resources/views/components/modal/close.blade.php
Normal file
1
resources/views/components/modal/close.blade.php
Normal file
@ -0,0 +1 @@
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">@lang('Close')</button>
|
@ -71,9 +71,16 @@
|
||||
@endsection
|
||||
|
||||
@section('page-modals')
|
||||
<!-- Frame Modals -->
|
||||
<div class="modal fade" id="page-modal" tabindex="-1" aria-labelledby="label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
|
||||
<div class="modal-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- EXPORT -->
|
||||
<div class="modal fade" id="entry_export-modal" tabindex="-1" aria-labelledby="entry_export-label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-fullscreen-xl-down">
|
||||
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="entry_export-label">LDIF for {{ $dn }}</h1>
|
||||
@ -210,6 +217,34 @@
|
||||
download('ldap-export.ldif',ldif.html());
|
||||
});
|
||||
|
||||
$('#page-modal').on('shown.bs.modal',function(item) {
|
||||
var that = $(this).find('.modal-content');
|
||||
|
||||
switch ($(item.relatedTarget).attr('id')) {
|
||||
case 'entry-delete':
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '{{ url('modal/delete') }}/'+dn,
|
||||
dataType: 'html',
|
||||
cache: false,
|
||||
beforeSend: function() {
|
||||
that.empty().append('<span class="p-3"><i class="fas fa-3x fa-spinner fa-pulse"></i></span>');
|
||||
},
|
||||
success: function(data) {
|
||||
that.empty().html(data);
|
||||
},
|
||||
error: function(e) {
|
||||
if (e.status != 412)
|
||||
alert('That didnt work? Please try again....');
|
||||
},
|
||||
})
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log('No action for button:'+$(item.relatedTarget).attr('id'));
|
||||
}
|
||||
});
|
||||
|
||||
$('#entry_export-modal').on('shown.bs.modal',function() {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
|
@ -12,6 +12,8 @@
|
||||
--}}
|
||||
|
||||
@section('main-content')
|
||||
<x-success/>
|
||||
|
||||
<div class="card card-solid mb-3">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
|
29
resources/views/modals/entry-delete.blade.php
Normal file
29
resources/views/modals/entry-delete.blade.php
Normal file
@ -0,0 +1,29 @@
|
||||
<div class="modal-header bg-danger text-white">
|
||||
<h1 class="modal-title fs-5" id="entry_export-label">
|
||||
<i class="fas fa-fw fa-exclamation-triangle"></i> <strong>@lang('WARNING')</strong>: @lang('Delete') <strong>{{ Crypt::decryptString($dn) }}</strong>
|
||||
</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
@lang('Deleting this DN will permanently delete it from your LDAP server.')
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<x-modal.close/>
|
||||
<button id="entry-delete" type="button" class="btn btn-sm btn-danger">@lang('Delete')</button>
|
||||
</div>
|
||||
|
||||
<form id="entry-delete-form" method="POST" action="{{ url('entry/delete') }}">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="dn" value="{{ $dn }}">
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('button[id=entry-delete]').on('click',function(item) {
|
||||
$('form#entry-delete-form').submit();
|
||||
});
|
||||
});
|
||||
</script>
|
@ -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');
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user