RoleController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Role\CreateOrUpdateRequest;
  5. use App\Http\Resources\API\RoleResource;
  6. use App\Models\Role;
  7. use Illuminate\Http\Request;
  8. class RoleController extends Controller
  9. {
  10. /**
  11. * Display a listing of the resource.
  12. */
  13. public function index()
  14. {
  15. $roles = Role::all();
  16. return RoleResource::collection($roles);
  17. }
  18. /**
  19. * Store a newly created resource in storage.
  20. */
  21. public function store(CreateOrUpdateRequest $request)
  22. {
  23. Role::create([
  24. ...$request->only(['name', 'description']),
  25. 'guard_name' => 'api',
  26. ]);
  27. return $this->created();
  28. }
  29. /**
  30. * Display the specified resource.
  31. */
  32. public function show(string $id)
  33. {
  34. //
  35. $role=Role::query()->findOrFail($id);
  36. return new RoleResource($role);
  37. }
  38. /**
  39. * Update the specified resource in storage.
  40. */
  41. public function update(CreateOrUpdateRequest $request, string $id)
  42. {
  43. $role = Role::query()->findOrFail($id);
  44. $role->update($request->only([
  45. 'name', 'description'
  46. ]));
  47. return $this->noContent();
  48. }
  49. /**
  50. * Remove the specified resource from storage.
  51. */
  52. public function destroy(string $id)
  53. {
  54. Role::destroy($id);
  55. return $this->noContent();
  56. }
  57. public function permissions(string $id)
  58. {
  59. $role = Role::query()->findOrFail($id);
  60. return $this->success([
  61. 'data' => $role->permissions?->pluck('name'),
  62. ]);
  63. }
  64. public function assignPermissions(string $id, Request $request)
  65. {
  66. $role = Role::query()->findOrFail($id);
  67. $role->syncPermissions($request->input('permissions', []));
  68. return $this->noContent();
  69. }
  70. }