GroupController.php 3.1 KB

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