AdminRoleController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AdminRoleFilter;
  4. use App\Http\Requests\AdminRoleRequest;
  5. use App\Http\Resources\AdminRoleResource;
  6. use App\Models\AdminRole;
  7. use App\Utils\Admin;
  8. use Illuminate\Http\Request;
  9. use App\Http\Controllers\Controller;
  10. use Illuminate\Support\Facades\Log;
  11. class AdminRoleController extends Controller
  12. {
  13. public function store(AdminRoleRequest $request, AdminRole $model)
  14. {
  15. $id = Admin::user()->id;
  16. $inputs = $request->validated();
  17. $inputs['admin_id'] = $id;
  18. $role = $model->create($inputs);
  19. if (!empty($perms = $inputs['permissions'] ?? [])) {
  20. $role->permissions()->attach($perms);
  21. }
  22. // 添加菜单权限
  23. if (!empty($vue_routers = $inputs['menu'] ?? [])) {
  24. $vue_routers = setlist(object_array($vue_routers));
  25. $role->vue_routers()->attach(array_column($vue_routers,'id'));
  26. }
  27. return $this->created(AdminRoleResource::make($role));
  28. }
  29. public function edit(AdminRole $adminRole)
  30. {
  31. $adminRole->load(['permissions','vue_routers']);
  32. return $this->ok(AdminRoleResource::make($adminRole));
  33. }
  34. public function update(AdminRoleRequest $request, AdminRole $adminRole)
  35. {
  36. $inputs = $request->validated();
  37. //Log::info(json_encode($inputs));
  38. $adminRole->update($inputs);
  39. if (isset($inputs['permissions'])) {
  40. $adminRole->permissions()->sync($inputs['permissions']);
  41. }
  42. //更新菜单权限
  43. if (!empty($inputs['menu'])) {
  44. $vue_routeres = setlist(object_array($inputs['menu']));
  45. // Log::info($vue_routeres);
  46. // $vue_routeres = $inputs['vue_routers'];
  47. $adminRole->vue_routers()->sync(array_column($vue_routeres,'id'));
  48. }
  49. return $this->created(AdminRoleResource::make($adminRole));
  50. }
  51. public function destroy(AdminRole $adminRole)
  52. {
  53. $adminRole->delete();
  54. return $this->noContent();
  55. }
  56. public function index(Request $request, AdminRoleFilter $filter)
  57. {
  58. $id = Admin::user()->id;
  59. if (Admin::isAdministrator()) {
  60. $roles = AdminRole::query()
  61. ->with(['permissions'])
  62. ->filter($filter)
  63. // ->where('id','>',1)
  64. ->orderByDesc('id');
  65. $roles = $request->get('all') ? $roles->get() : $roles->paginate();
  66. } elseif (Admin::isNormalAdministrator()) {
  67. $roles = AdminRole::query()
  68. ->with(['permissions'])
  69. ->filter($filter)
  70. // ->where('id','>',1)
  71. ->where('id', '>', 1)
  72. ->orderByDesc('id');
  73. $roles = $request->get('all') ? $roles->get() : $roles->paginate();
  74. } else {
  75. $roles = AdminRole::query()
  76. ->with(['permissions'])
  77. ->filter($filter)
  78. ->where('id', '>', 2)
  79. ->where('admin_id', $id)
  80. ->orderByDesc('id');
  81. $roles = $request->get('all') ? $roles->get() : $roles->paginate();
  82. }
  83. return $this->ok(AdminRoleResource::collection($roles));
  84. }
  85. }