GroupController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace App\Api\v1\Controllers;
  3. use App\Models\Group;
  4. use App\Facades\Groups;
  5. use App\Api\v1\Requests\GroupStoreRequest;
  6. use App\Api\v1\Requests\GroupAssignRequest;
  7. use App\Api\v1\Resources\GroupResource;
  8. use App\Api\v1\Resources\TwoFAccountCollection;
  9. use App\Http\Controllers\Controller;
  10. use Illuminate\Support\Facades\App;
  11. class GroupController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @return \App\Api\v1\Resources\GroupResource
  17. */
  18. public function index()
  19. {
  20. $groups = Groups::getAll();
  21. return GroupResource::collection($groups);
  22. }
  23. /**
  24. * Store a newly created resource in storage.
  25. *
  26. * @param \App\Api\v1\Requests\GroupStoreRequest $request
  27. * @return \Illuminate\Http\JsonResponse
  28. */
  29. public function store(GroupStoreRequest $request)
  30. {
  31. $validated = $request->validated();
  32. $group = Groups::create($validated);
  33. return (new GroupResource($group))
  34. ->response()
  35. ->setStatusCode(201);
  36. }
  37. /**
  38. * Display the specified resource.
  39. *
  40. * @param \App\Models\Group $group
  41. * @return \App\Api\v1\Resources\GroupResource
  42. */
  43. public function show(Group $group)
  44. {
  45. return new GroupResource($group);
  46. }
  47. /**
  48. * Update the specified resource in storage.
  49. *
  50. * @param \App\Api\v1\Requests\GroupStoreRequest $request
  51. * @param \App\Models\Group $group
  52. * @return \App\Api\v1\Resources\GroupResource
  53. */
  54. public function update(GroupStoreRequest $request, Group $group)
  55. {
  56. $validated = $request->validated();
  57. Groups::update($group, $validated);
  58. return new GroupResource($group);
  59. }
  60. /**
  61. * Associate the specified accounts with the group
  62. *
  63. * @param \App\Api\v1\Requests\GroupAssignRequest $request
  64. * @param \App\Models\Group $group
  65. * @return \App\Api\v1\Resources\GroupResource
  66. */
  67. public function assignAccounts(GroupAssignRequest $request, Group $group)
  68. {
  69. $validated = $request->validated();
  70. Groups::assign($validated['ids'], $group);
  71. return new GroupResource($group);
  72. }
  73. /**
  74. * Get accounts assign to the group
  75. *
  76. * @param \App\Models\Group $group
  77. * @return \App\Api\v1\Resources\TwoFAccountCollection
  78. */
  79. public function accounts(Group $group)
  80. {
  81. $twofaccounts = Groups::getAccounts($group);
  82. return new TwoFAccountCollection($twofaccounts);
  83. }
  84. /**
  85. * Remove the specified resource from storage.
  86. *
  87. * @param \App\Models\Group $group
  88. * @return \Illuminate\Http\JsonResponse
  89. */
  90. public function destroy(Group $group)
  91. {
  92. Groups::delete($group->id);
  93. return response()->json(null, 204);
  94. }
  95. }