From 7a0cc846163401ae958190a1946a3d91ee777d47 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 25 Mar 2024 17:06:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../System/AdminUserController.php | 29 ++++++++++++++----- .../System/AdminUserChangePasswordRequest.php | 28 ++++++++++++++++++ app/Admin/routes.php | 1 + 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 app/Admin/Requests/System/AdminUserChangePasswordRequest.php diff --git a/app/Admin/Controllers/System/AdminUserController.php b/app/Admin/Controllers/System/AdminUserController.php index 6452f53..fed9a40 100644 --- a/app/Admin/Controllers/System/AdminUserController.php +++ b/app/Admin/Controllers/System/AdminUserController.php @@ -2,9 +2,11 @@ namespace App\Admin\Controllers\System; +use App\Admin\Controllers\AdminController; +use App\Admin\Requests\System\AdminUserChangePasswordRequest; use App\Admin\Services\AdminUserService; +use Illuminate\Support\Facades\Hash; use Slowlyo\OwlAdmin\Admin; -use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Operation; use Slowlyo\OwlAdmin\Renderers\Page; @@ -30,6 +32,7 @@ class AdminUserController extends AdminController ->size('md') ->placeholder(__('admin.admin_user.search_username')) )) + ->quickSaveItemApi($this->getQuickEditItemPath(['lock'])) ->itemCheckableOn('${id !== 1}') ->columns([ amisMake()->TableColumn('id', 'ID')->sortable(), @@ -42,7 +45,7 @@ class AdminUserController extends AdminController amisMake()->TableColumn('lock', __('admin.admin_user.lock'))->quickEdit(SwitchControl::make()->saveImmediately(true)->mode('inline')->disabledOn('${id === 1}')), amisMake()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), Operation::make()->label(__('admin.actions'))->buttons([ - $this->editPassword() + $this->changePasswordButton() ->visible(Admin::user()->can('admin.system.admin_users.change_password')) ->visibleOn('${id != 1}'), $this->rowEditButton(true) @@ -82,20 +85,30 @@ class AdminUserController extends AdminController return $this->baseDetail()->body([]); } - public function editPassword() + public function changePassword($id, AdminUserChangePasswordRequest $request) + { + $model = Admin::adminUserModel(); + + $user = $model->findOrFail($id); + $user->update([ + 'password' => Hash::make($request->input('password')), + ]); + + return $this->autoResponse('success', __('admin.save')); + } + + protected function changePasswordButton() { return amisMake()->DialogAction()->icon('fa-regular fa-lightbulb')->label(__('admin.admin_user.edit_password'))->level('link')->dialog( amisMake()->Dialog()->title(__('admin.admin_user.edit_password'))->body([ amisMake()->Form()->title('') ->api([ 'method' => 'PUT', - 'url' => admin_url('system/admin_users/$id'), + 'url' => admin_url('system/admin_users/$id/change-password'), ]) ->body([ - amisMake()->TextControl('id')->value('${id}')->hidden(true), - amisMake()->TextControl('username')->value('${username}')->hidden(true), - amisMake()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 6]), - amisMake()->TextControl('confirm_password', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 6]), + amisMake()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 5]), + amisMake()->TextControl('password_confirmation', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 5]), ]), ])->size('md') ); diff --git a/app/Admin/Requests/System/AdminUserChangePasswordRequest.php b/app/Admin/Requests/System/AdminUserChangePasswordRequest.php new file mode 100644 index 0000000..5dded2b --- /dev/null +++ b/app/Admin/Requests/System/AdminUserChangePasswordRequest.php @@ -0,0 +1,28 @@ + ['bail', 'required', 'confirmed', 'min:6'], + ]; + } + + /** + * {@inheritdoc} + */ + public function attributes() + { + return [ + 'password' => '密码', + ]; + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 8e04c7e..acd8661 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -51,6 +51,7 @@ Route::group([ ], function (Router $router) { // 账号管理 $router->resource('admin_users', AdminUserController::class); + $router->put('/admin_users/{admin_user}/change-password', [AdminUserController::class, 'changePassword'])->name('admin_users.change_password'); // 角色管理 $router->resource('admin_roles', AdminRoleController::class); $router->post('admin_roles/{admin_role}/menus', [AdminRoleController::class, 'saveMenus'])->name('admin_roles.set_menus');