From 0182e2f350d0edcd51d55158ec27582baf000e91 Mon Sep 17 00:00:00 2001 From: Wisp X Date: Thu, 10 Feb 2022 15:43:02 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E7=94=A8=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Admin/UserController.php | 33 ++++++++++ app/Http/Requests/Admin/UserRequest.php | 34 +++++++++++ app/Models/User.php | 11 ++++ resources/views/admin/user/edit.blade.php | 61 +++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 app/Http/Requests/Admin/UserRequest.php create mode 100644 resources/views/admin/user/edit.blade.php diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 3affd0f4..5a33ffdc 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -3,9 +3,12 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Http\Requests\Admin\UserRequest; use App\Models\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; +use Illuminate\Http\Response; +use Illuminate\Support\Facades\DB; use Illuminate\View\View; class UserController extends Controller @@ -21,4 +24,34 @@ class UserController extends Controller $statuses = [-1 => '全部', 1 => '正常', 0 => '冻结']; return view('admin.user.index', compact('users', 'statuses')); } + + public function edit(Request $request): View + { + $user = User::query()->findOrFail($request->route('id')); + return view('admin.user.edit', compact('user')); + } + + public function update(UserRequest $request): Response + { + /** @var User $user */ + $user = User::query()->findOrFail($request->route('id')); + $user->fill($request->validated()); + if (!$user->save()) { + return $this->error('保存失败'); + } + return $this->success('保存成功'); + } + + public function delete(Request $request): Response + { + /** @var User $user */ + if ($user = User::query()->find($request->route('id'))) { + DB::transaction(function () use ($user) { + $user->images()->update(['user_id' => null]); + $user->albums()->delete(); + $user->delete(); + }); + } + return $this->success('删除成功'); + } } diff --git a/app/Http/Requests/Admin/UserRequest.php b/app/Http/Requests/Admin/UserRequest.php new file mode 100644 index 00000000..ae4e73be --- /dev/null +++ b/app/Http/Requests/Admin/UserRequest.php @@ -0,0 +1,34 @@ + 'required|between:2,30', + 'capacity' => 'required|numeric', + 'password' => ['nullable', Rules\Password::defaults()], + 'status' => 'in:1,0' + ]; + } + + public function attributes() + { + return [ + 'name' => '组名称', + 'capacity' => '总容量', + 'password' => '密码', + 'status' => '状态', + ]; + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 5a7247b9..c8670d49 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; use Laravel\Sanctum\HasApiTokens; /** @@ -89,6 +91,15 @@ class User extends Authenticatable implements MustVerifyEmail UserConfigKey::IsAutoClearPreview => false, ])->merge($user->configs ?: []); }); + + static::saving(function (self $user) { + if ($user->password) { + $user->password = Hash::make($user->password); + $user->remember_token = Str::random(60); + } else { + unset($user->password); + } + }); } public function group(): BelongsTo diff --git a/resources/views/admin/user/edit.blade.php b/resources/views/admin/user/edit.blade.php new file mode 100644 index 00000000..f8deb3e0 --- /dev/null +++ b/resources/views/admin/user/edit.blade.php @@ -0,0 +1,61 @@ +@section('title', '编辑用户') + + +
+ +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ @if($user->id != Auth::user()->id) +
+ + 正常 + 冻结 + +
+ @endif +
+
+
+ 取消 + 确认保存 +
+
+
+
+
+ + @push('scripts') + + @endpush + +