middleware('checkUserPermission'); $this->roleService = $roleService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $roles = $this->roleService->handleList($request); return $this->response->success($roles); } /** * 创建 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'nickname' => 'required|string', 'name' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) { if (Role::checkNameIsUnique($value)) { $fail('角色代码 已存在'); } },], 'guard_name' => 'required|string', // 'menus' => 'required|array', 'sort' => 'required|integer', 'status' => 'required|integer', ], [ 'nickname' => '角色名称', 'name' => '角色代码', 'guard_name' => '授权对象', ]); $role = $this->roleService->handleStore($data); return $this->response->created($role, '创建成功'); } /** * 详情 * @param int $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $role = $this->roleService->handleProfile($request->get('id')); return $this->response->success($role); } /** * 修改 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'nickname' => 'required|string', 'name' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Role::checkNameIsUnique($value, $request->get('id'))) { $fail('角色代码 已存在'); } },], 'guard_name' => 'required|string', // 'menus' => 'required|array', 'sort' => 'required|integer', 'status' => 'required|integer', ], [ 'nickname' => '角色名称', 'name' => '角色代码', 'guard_name' => '授权对象', ]); $role = $this->roleService->handleUpdate($data); return $this->response->success($role, '更新成功'); } /** * 删除 * * @param int $id */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->roleService->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 保存菜单权限 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function saveMenusPermissions(Request $request) { $this->validate($request, ['id' => 'required|integer', 'menus' => 'required|array'], [], [ 'id' => '角色id', 'menus' => '菜单', ]); $this->roleService->handleSaveMenus($request); return $this->response->ok('操作成功'); } /** * 保存Apis权限 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function saveApisPermissions(Request $request) { $this->validate($request, ['id' => 'required|integer', 'apis' => 'required|array'], [], [ 'id' => '角色id', 'menus' => 'API', ]); $this->roleService->handleSaveApis($request); return $this->response->ok('操作成功'); } /** * 角色权限值列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function getRolePermissions(Request $request) { $this->validate($request, ['id' => 'required|integer']); $menus = $this->roleService->handleMenusLists($request); $data = $this->roleService->handleDataLists($request); $apis = $this->roleService->handleApisLists($request); return $this->response->success(compact('menus', 'data', 'apis')); } /** * 角色选项 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function selectOptions(Request $request) { $lists = $this->roleService->handleSelectOptions($request); return $this->response->success($lists); } }