AdminUserController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AdminUserFilter;
  4. use App\Http\Requests\AdminUserProfileRequest;
  5. use App\Http\Requests\AdminUserRequest;
  6. use App\Http\Resources\AdminUserResource;
  7. use App\Models\AdminRole;
  8. use App\Models\AdminUser;
  9. use App\Utils\Admin;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Log;
  12. class AdminUserController extends AdminBaseController
  13. {
  14. public function user()
  15. {
  16. $user = Admin::user();
  17. return $this->ok(
  18. AdminUserResource::make($user)
  19. ->gatherAllPermissions()
  20. ->onlyRolePermissionSlugs()
  21. );
  22. }
  23. public function areaAdmin()
  24. {
  25. $areaAdmin = AdminUser::getAreaAdmin();
  26. if (count($areaAdmin) !== 0) {
  27. $data = [];
  28. foreach ($areaAdmin as $v) {
  29. $data[] = [
  30. 'id' => $v->id,
  31. 'name' => $v->name];
  32. }
  33. }
  34. $administrator = AdminUser::getAAdmin();
  35. foreach ($administrator as $v) {
  36. $data[] = [
  37. 'id' => $v->id,
  38. 'name' => $v->name];
  39. }
  40. return $this->ok($data);
  41. }
  42. public function editUser()
  43. {
  44. $user = Admin::user();
  45. $user->load(['roles', 'permissions']);
  46. return $this->ok(AdminUserResource::make($user));
  47. }
  48. public function updateUser(AdminUserProfileRequest $request)
  49. {
  50. $inputs = $request->validated();
  51. Admin::user()->updateUser($inputs);
  52. return $this->callAction('user', [])->setStatusCode(201);
  53. }
  54. public function index(AdminUserFilter $filter)
  55. {
  56. $id = Admin::user()->id;
  57. if (Admin::isAdministrator()) {
  58. $users = AdminUser::query()
  59. ->filter($filter)
  60. ->where('type', AdminUser::TYPE_ADMIN)
  61. ->with(['roles', 'permissions', 'areas'])
  62. ->orderByDesc('id')
  63. ->paginate();
  64. } elseif (Admin::isNormalAdministrator()) {
  65. $users = AdminUser::query()
  66. ->filter($filter)
  67. ->where('type', AdminUser::TYPE_ADMIN)
  68. ->where('id', '>', 1)
  69. ->where('id', '!=', $id)
  70. ->whereHas('roles', function ($q) {
  71. $q->where('slug', '!=', AdminRole::ADMINISTROTOR);
  72. })
  73. ->with(['roles', 'permissions', 'areas'])
  74. ->orderByDesc('id')
  75. ->paginate();
  76. } else {
  77. $users = AdminUser::query()
  78. ->filter($filter)
  79. ->where('type', AdminUser::TYPE_ADMIN)
  80. ->whereHas('roles', function ($q) {
  81. $q->where('slug', '!=', AdminRole::ADMINISTROTOR);
  82. })
  83. ->with(['roles', 'permissions', 'areas'])
  84. ->where('id', '!=', $id)
  85. ->where('pid', $id)
  86. ->orderByDesc('id')
  87. ->paginate();
  88. }
  89. return $this->ok(AdminUserResource::collection($users));
  90. }
  91. public function store(AdminUserRequest $request, AdminUser $user)
  92. {
  93. $id = Admin::user()->id;
  94. $inputs = $request->validated();
  95. $inputs['pid'] = $id;
  96. $user = $user::createUser($inputs);
  97. if (!empty($q = $request->post('roles', []))) {
  98. $user->roles()->attach($q);
  99. }
  100. if (!empty($q = $request->post('areas', []))) {
  101. $user->areas()->attach($q);
  102. }
  103. if (!empty($q = $request->post('permissions', []))) {
  104. $user->permissions()->attach($q);
  105. }
  106. return $this->created(AdminUserResource::make($user));
  107. }
  108. public function show(AdminUser $adminUser)
  109. {
  110. $adminUser->load(['roles', 'permissions']);
  111. return $this->ok(AdminUserResource::make($adminUser));
  112. }
  113. public function update(AdminUserRequest $request, AdminUser $adminUser)
  114. {
  115. $inputs = $request->validated();
  116. //Log::info($inputs);
  117. $adminUser->updateUser($inputs);
  118. if (isset($inputs['roles'])) {
  119. $adminUser->roles()->sync($inputs['roles']);
  120. }
  121. if (isset($inputs['areas'])) {
  122. $adminUser->areas()->sync($inputs['areas']);
  123. }
  124. if (isset($inputs['permissions'])) {
  125. $adminUser->permissions()->sync($inputs['permissions']);
  126. }
  127. return $this->created(AdminUserResource::make($adminUser));
  128. }
  129. public function destroy(AdminUser $adminUser)
  130. {
  131. $adminUser->delete();
  132. return $this->noContent();
  133. }
  134. public function edit(AdminUser $adminUser)
  135. {
  136. $adminUser->load(['roles', 'permissions', 'areas']);
  137. return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds());
  138. }
  139. }