diff --git a/README.md b/README.md index e7f8cc95..b76ed35e 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Entry Editing: - [ ] JpegPhoto Create/Delete - [ ] Binary attribute upload - [ ] If removing an objectClass, remove all attributes that only that objectclass provided - - [ ] Rename an entry + - [ ] Move an entry - [ ] Group membership selection - [ ] Attribute tag creation diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index cee922c6..47fa84b9 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -29,7 +29,7 @@ class HomeController extends Controller { private const LOGKEY = 'CHc'; - private const INTERNAL_POST = ['_auto_value','_key','_rdn','_rdn_value','_step','_template','_token','_userpassword_hash']; + private const INTERNAL_POST = ['_auto_value','_key','_rdn','_rdn_new','_rdn_value','_step','_template','_token','_userpassword_hash']; /** * Create a new object in the LDAP server @@ -307,6 +307,31 @@ class HomeController extends Controller ->with('o',$o); } + public function entry_rename(Request $request): \Illuminate\Http\RedirectResponse|\Illuminate\View\View + { + $from_dn = Crypt::decryptString($request->post('dn')); + Log::info(sprintf('%s:Renaming [%s] to [%s]',self::LOGKEY,$from_dn,$request->post('_rdn_new'))); + + $o = config('server')->fetch($from_dn); + + if (! $o) + return back() + ->withInput() + ->with('note',__('DN doesnt exist')); + + try { + $o->rename($request->post('_rdn_new')); + + } catch (\Exception $e) { + return Redirect::to('/') + ->with('failed',$e->getMessage()); + } + + return Redirect::to('/') + ->withInput(['_key'=>Crypt::encryptString('*dn|'.$o->getDN())]) + ->with('success',sprintf('%s: %s',__('Entry renamed'),$from_dn)); + } + /** * Update a DN entry * @@ -505,8 +530,8 @@ class HomeController extends Controller // Setup $cmd = NULL; $dn = NULL; - $key = $request->get('_key',old('_key')) - ? Crypt::decryptString($request->get('_key',old('_key'))) + $key = ($x=$request->get('_key',old('_key'))) + ? Crypt::decryptString($x) : NULL; // Determine if our key has a command @@ -518,9 +543,9 @@ class HomeController extends Controller $dn = ($m[2] !== '_NOP') ? $m[2] : NULL; } - } elseif (old('dn',$request->get('_key'))) { + } elseif ($x=old('dn',$request->get('_key'))) { $cmd = 'dn'; - $dn = Crypt::decryptString(old('dn',$request->get('_key'))); + $dn = Crypt::decryptString($x); } return ['cmd'=>$cmd,'dn'=>$dn]; diff --git a/resources/views/components/attribute/widget/options.blade.php b/resources/views/components/attribute/widget/options.blade.php index 09a07a43..f6f2b977 100644 --- a/resources/views/components/attribute/widget/options.blade.php +++ b/resources/views/components/attribute/widget/options.blade.php @@ -6,7 +6,7 @@ @php($clone=FALSE) @if($o->is_rdn) - + @lang('Rename') @elseif($edit && $o->can_addvalues) @switch(get_class($o)) @case(Certificate::class) @@ -26,7 +26,7 @@ @break @case(ObjectClass::class) - (! $new)]) data-bs-toggle="modal" data-bs-target="#new_objectclass-modal"> @lang('Add Objectclass') + (! $new)]) data-bs-toggle="modal" data-bs-target="#new_objectclass-modal"> @lang('Add Objectclass')