RoleController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Authority;
  4. use App\Components\AsyncResponse;
  5. use App\Owner;
  6. use App\Role;
  7. use App\UserWorkgroup;
  8. use Illuminate\Support\Facades\DB;
  9. class RoleController extends Controller
  10. {
  11. use AsyncResponse;
  12. public function index()
  13. {
  14. $roles = Role::query()->get();
  15. $authorities = app("AuthorityService")->format(Authority::query()->get());
  16. $owners = Owner::query()->whereNull("deleted_at")->get();
  17. $userWorkGroups = UserWorkgroup::query()->get();
  18. return view('maintenance.role.index',compact("roles","authorities","userWorkGroups","owners"));
  19. }
  20. /**
  21. * @throws \Exception
  22. */
  23. public function destroy()
  24. {
  25. /** @var Role $role */
  26. $role = Role::query()->find(request("id"));
  27. $role->owners()->sync([]);
  28. $role->userWorkGroups()->sync([]);
  29. $role->delete();
  30. app("RoleService")->clearUserAuthority(request("id"),true,true,true);//清除角色下所有控制信息
  31. $this->success();
  32. }
  33. public function save()
  34. {
  35. $id = request("id");
  36. $name = request("name");
  37. $role = null;
  38. if ($id)Role::query()->where("id",$id)->update(["name"=>$name]);
  39. else $role = Role::query()->create(["name"=>$name]);
  40. $this->success($role);
  41. }
  42. public function loadRelevance()
  43. {
  44. $authorities = array_column(DB::select(DB::raw("SELECT id_authority FROM authority_role WHERE id_role = ?"),[request("id")]),"id_authority");
  45. $owners = array_column(DB::select(DB::raw("SELECT owner_id FROM owner_role WHERE role_id = ?"),[request("id")]),"owner_id");
  46. $userWorkGroups = array_column(DB::select(DB::raw("SELECT user_work_group_id FROM role_user_work_group WHERE role_id = ?"),[request("id")]),"user_work_group_id");
  47. $this->success(compact("authorities","owners","userWorkGroups"));
  48. }
  49. public function saveAuthority()
  50. {
  51. /** @var Role|\stdClass $role */
  52. $role = new Role();
  53. $role->id = request("id");
  54. $role->authorities()->sync(request("authorities"));
  55. app("RoleService")->clearUserAuthority($role->id);
  56. $this->success();
  57. }
  58. public function saveOwner()
  59. {
  60. /** @var Role|\stdClass $role */
  61. $role = new Role();
  62. $role->id = request("id");
  63. $role->owners()->sync(request("owners"));
  64. app("RoleService")->clearUserAuthority($role->id,false,true);
  65. $this->success();
  66. }
  67. public function saveUserWorkGroup()
  68. {
  69. /** @var Role|\stdClass $role */
  70. $role = new Role();
  71. $role->id = request("id");
  72. $role->userWorkGroups()->sync(request("userWorkGroups"));
  73. app("RoleService")->clearUserAuthority($role->id,false,false,true);
  74. $this->success();
  75. }
  76. }