get(); $authorities = app("AuthorityService")->format(Authority::query()->get()); $owners = Owner::query()->whereNull("deleted_at")->get(); $userWorkGroups = UserWorkgroup::query()->get(); return view('maintenance.role.index',compact("roles","authorities","userWorkGroups","owners")); } /** * @throws \Exception */ public function destroy() { $this->gate("角色-删除"); /** @var Role $role */ $role = Role::query()->find(request("id")); $role->owners()->sync([]); $role->userWorkGroups()->sync([]); $role->delete(); app("RoleService")->clearUserAuthority(request("id"),true,true,true);//清除角色下所有控制信息 $this->success(); } public function save() { $this->gate("角色-录入"); $id = request("id"); $name = request("name"); $role = null; if ($id)Role::query()->where("id",$id)->update(["name"=>$name]); else $role = Role::query()->create(["name"=>$name]); $this->success($role); } public function loadRelevance() { $this->gate("角色-编辑"); $authorities = array_column(DB::select(DB::raw("SELECT id_authority FROM authority_role WHERE id_role = ?"),[request("id")]),"id_authority"); $owners = array_column(DB::select(DB::raw("SELECT owner_id FROM owner_role WHERE role_id = ?"),[request("id")]),"owner_id"); $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"); $this->success(compact("authorities","owners","userWorkGroups")); } public function saveAuthority() { $this->gate("角色-编辑"); /** @var Role|\stdClass $role */ $role = new Role(); $role->id = request("id"); $role->authorities()->sync(request("authorities")); app("RoleService")->clearUserAuthority($role->id); $this->success(); } public function saveOwner() { $this->gate("角色-编辑"); /** @var Role|\stdClass $role */ $role = new Role(); $role->id = request("id"); $role->owners()->sync(request("owners")); app("RoleService")->clearUserAuthority($role->id,false,true); $this->success(); } public function saveUserWorkGroup() { $this->gate("角色-编辑"); /** @var Role|\stdClass $role */ $role = new Role(); $role->id = request("id"); $role->userWorkGroups()->sync(request("userWorkGroups")); app("RoleService")->clearUserAuthority($role->id,false,false,true); $this->success(); } }