From 10c1fa687a7f522e54fb10b4e19fe631b0099068 Mon Sep 17 00:00:00 2001 From: Geriano Date: Sun, 17 Jul 2022 11:00:11 +0700 Subject: [PATCH] create permission crud --- .../Superuser/PermissionController.php | 98 ++++++++++ app/Http/Kernel.php | 2 + resources/js/Layouts/DashboardLayout.vue | 13 +- .../js/Pages/Superuser/Permission/Index.vue | 183 ++++++++++++++++++ resources/js/app.js | 55 +++++- routes/api.php | 4 + routes/web.php | 25 +-- 7 files changed, 362 insertions(+), 18 deletions(-) create mode 100644 app/Http/Controllers/Superuser/PermissionController.php create mode 100644 resources/js/Pages/Superuser/Permission/Index.vue diff --git a/app/Http/Controllers/Superuser/PermissionController.php b/app/Http/Controllers/Superuser/PermissionController.php new file mode 100644 index 0000000..18a3b3b --- /dev/null +++ b/app/Http/Controllers/Superuser/PermissionController.php @@ -0,0 +1,98 @@ +validate([ + 'name' => 'required|string|unique:permissions', + ]); + + if ($permission = Permission::create([ 'name' => $request->name, 'guard_name' => 'web' ])) { + return redirect()->back()->with('success', __( + 'permission `:name` has been created', [ + 'name' => $permission->name, + ] + )); + } + + return redirect()->back()->with('error', __( + 'can\'t create permission' + )); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Permission $permission + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Permission $permission) + { + $request->validate([ + 'name' => ['required', 'string', Rule::unique('permissions')->ignore($permission->id)] + ]); + + if ($permission->update(['name' => $request->name])) { + return redirect()->back()->with('success', __( + 'permission has been updated', + )); + } + + return redirect()->back()->with('error', __( + 'can\'t update permission' + )); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Permission $permission + * @return \Illuminate\Http\Response + */ + public function destroy(Permission $permission) + { + if ($permission->delete()) { + return redirect()->back()->with('success', __( + 'permission has been deleted' + )); + } + + return redirect()->back()->with('error', __( + 'can\'t delete permission' + )); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 3d219ed..3dda92a 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -64,5 +64,7 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, + 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, ]; } diff --git a/resources/js/Layouts/DashboardLayout.vue b/resources/js/Layouts/DashboardLayout.vue index 4d27615..e177585 100644 --- a/resources/js/Layouts/DashboardLayout.vue +++ b/resources/js/Layouts/DashboardLayout.vue @@ -1,6 +1,6 @@ + +