From d3a179793da8ebb8d2f6cdbb4c227a7a710538da Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 29 Apr 2025 14:06:00 +0330 Subject: [PATCH] create permission section --- .../Admin/PermissionManagementController.php | 59 ++++++++++ .../Admin/RoleManagementController.php | 101 ++++++++++++++++++ .../Resources/Admin/PermissionResource.php | 23 ++++ .../app/Http/Resources/Admin/RoleResource.php | 24 +++++ laravel/app/Models/Role.php | 12 +++ laravel/database/factories/RoleFactory.php | 23 ++++ laravel/database/seeders/RoleSeeder.php | 17 +++ 7 files changed, 259 insertions(+) create mode 100644 laravel/app/Http/Controllers/Admin/PermissionManagementController.php create mode 100644 laravel/app/Http/Controllers/Admin/RoleManagementController.php create mode 100644 laravel/app/Http/Resources/Admin/PermissionResource.php create mode 100644 laravel/app/Http/Resources/Admin/RoleResource.php create mode 100644 laravel/app/Models/Role.php create mode 100644 laravel/database/factories/RoleFactory.php create mode 100644 laravel/database/seeders/RoleSeeder.php diff --git a/laravel/app/Http/Controllers/Admin/PermissionManagementController.php b/laravel/app/Http/Controllers/Admin/PermissionManagementController.php new file mode 100644 index 0000000..8b0bc62 --- /dev/null +++ b/laravel/app/Http/Controllers/Admin/PermissionManagementController.php @@ -0,0 +1,59 @@ +successResponse(PermissionResource::collection(Permission::all())); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + */ + public function show(string $id) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + // + } +} diff --git a/laravel/app/Http/Controllers/Admin/RoleManagementController.php b/laravel/app/Http/Controllers/Admin/RoleManagementController.php new file mode 100644 index 0000000..4ad96cb --- /dev/null +++ b/laravel/app/Http/Controllers/Admin/RoleManagementController.php @@ -0,0 +1,101 @@ +json($data); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request): JsonResponse + { + DB::transaction(function () use ($request) { + $role = Role::create([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + ]); + + $role->syncPermissions($request->permissions); + }); + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(Role $role): JsonResponse + { + return $this->successResponse(new RoleResource($role)); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Role $role): JsonResponse + { + DB::transaction(function () use ($request, $role) { + $role->update([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + ]); + + $role->syncPermissions($request->permissions); + }); + + return $this->successResponse(); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Role $role): JsonResponse + { + DB::transaction(function () use ($role) { + $role->syncPermissions([]); + + $role->delete(); + }); + + return $this->successResponse(); + } + + public function list(): JsonResponse + { + return $this->successResponse(RoleResource::collection(Role::all())); + } +} diff --git a/laravel/app/Http/Resources/Admin/PermissionResource.php b/laravel/app/Http/Resources/Admin/PermissionResource.php new file mode 100644 index 0000000..2e1c1d4 --- /dev/null +++ b/laravel/app/Http/Resources/Admin/PermissionResource.php @@ -0,0 +1,23 @@ + + */ + public function toArray(Request $request): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'name_fa' => $this->name_fa, + ]; + } +} diff --git a/laravel/app/Http/Resources/Admin/RoleResource.php b/laravel/app/Http/Resources/Admin/RoleResource.php new file mode 100644 index 0000000..1623980 --- /dev/null +++ b/laravel/app/Http/Resources/Admin/RoleResource.php @@ -0,0 +1,24 @@ + + */ + public function toArray(Request $request): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'name_fa' => $this->name_fa, + 'permissions' => $this->permissions->pluck('name'), + ]; + } +} diff --git a/laravel/app/Models/Role.php b/laravel/app/Models/Role.php new file mode 100644 index 0000000..a129360 --- /dev/null +++ b/laravel/app/Models/Role.php @@ -0,0 +1,12 @@ + + */ +class RoleFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/laravel/database/seeders/RoleSeeder.php b/laravel/database/seeders/RoleSeeder.php new file mode 100644 index 0000000..f129660 --- /dev/null +++ b/laravel/database/seeders/RoleSeeder.php @@ -0,0 +1,17 @@ +