RoleController.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. }
  36. /**
  37. * Update the specified resource in storage.
  38. */
  39. public function update(CreateOrUpdateRequest $request, string $id)
  40. {
  41. $role = Role::query()->findOrFail($id);
  42. $role->update($request->only([
  43. 'name', 'description'
  44. ]));
  45. return $this->noContent();
  46. }
  47. /**
  48. * Remove the specified resource from storage.
  49. */
  50. public function destroy(string $id)
  51. {
  52. Role::destroy($id);
  53. return $this->noContent();
  54. }
  55. public function permissions(string $id)
  56. {
  57. $role = Role::query()->findOrFail($id);
  58. return $this->success([
  59. 'data' => $role->permissions?->pluck('name'),
  60. ]);
  61. }
  62. public function assignPermissions(string $id, Request $request)
  63. {
  64. $role = Role::query()->findOrFail($id);
  65. $role->syncPermissions($request->input('permissions', []));
  66. return $this->noContent();
  67. }
  68. }