findOrFail($id); $roleName = $request->get('role_name'); if ($roleName) { $role = Role::query()->where("guard_name", "api")->where('name', $roleName)->firstOrFail(); $user->role_id = $role->id; $user->save(); } $roles = $roleName ? [$roleName] : []; $user->syncRoles($roles); return $this->noContent(); } public function index(Request $request){ //超管能看到所有用户 if(Auth::user()->super_admin){ $user = User::query()->filter($request->all())->paginate(); return UserSimpleResource::collection($user); } //普通管理员能看到自己公司的用户 $user=User::query() ->where('company_id',Auth::user()->company_id) ->filter($request->all()) ->paginate(); return UserInfoResource::collection($user); } /** * add a new User * @return \Illuminate\Http\Response */ public function store(CreateRequest $request){ $password = Hash::make($request->password); $user=$request->all(); $user['password']=$password; User::create([ ...$user, 'created_by' => Auth::id(), ]); // TODO:发送邮箱给目标用户 return $this->created(); } /** * batchCreate User,为ditto时参考上一条 * @return \Illuminate\Http\Response */ public function batchStore(BatchCreateRequest $request){ $userData = $request->users; DB::transaction(function () use ($userData) { foreach ($userData as $k => $data) { $user = new User(); if ($k != 0) { $userData[$k]["department_id"] = $userData[$k]["department_id"] == 'ditto' ? $userData[$k - 1]["department_id"] : $userData[$k]["department_id"]; $userData[$k]["role_id"] = $userData[$k]["role_id"] == 'ditto' ? $userData[$k - 1]["role_id"] : $userData[$k]["role_id"]; } $userData[$k]['password'] = Hash::make($userData[$k]['password']); $user->fill([ ...$userData[$k], 'created_by' => Auth::id(), ]); // TODO:发送邮箱给目标用户 $user->save(); } }); // TODO:发送邮箱给目标用户 return $this->created(); } /** * enable or ban users 启用或禁用用户 * @param Request $request * @return \Illuminate\Http\Response */ public function status(Request $request,string $status){ //只能删除自己公司的;超管除外 if (Auth::user()->super_admin){ User::whereIn('id', $request->user_id)->update(['status' => $status]); } else{ User::whereIn('id', $request->user_id)->where('company_id',Auth::user()->company_id)->update(['status' => $status]); } return $this->created(); } public function destroy(string $id) { $user = User::query()->findOrFail($id); $user->delete(); return $this->noContent(); } public function show(string $id) { $user = User::query()->findOrFail($id); return new UserInfoResource($user); } public function update(UpdateRequest $request,string $id) { $user = User::findOrFail($id); $newPassword=null; if(Auth::user()->super_admin){ $user->fill([ ...$request->except(['username']), 'password'=> $request->password ? Hash::make($request->password):Auth::user()->password, ]); $user->save(); return $this->noContent(); } $user->fill([ ...$request->except(['role_id','department_id','company_id']), 'password'=> $request->password ? Hash::make($request->password):Auth::user()->password, ]); $user->save(); return $this->noContent(); } // /** // * @param CreateRequest $request // * @return \Illuminate\Http\Response // * 修改个人信息 // */ // public function updateInfo(UpdateRequest $request) // { // $user = User::findOrFail(Auth::user()->id); // $user->fill([ // ...$request->except(['username','role_id','department_id','company_id']) // ]); // $user->save(); // return $this->noContent(); // } // // /** // * @param AdminUpdateRequest $request 修改主体 // * @param string $id 用户id // * @return \Illuminate\Http\Response // * 超管修改用户的信息 // */ // public function updateUserInfo(AdminUpdateRequest $request, string $id) // { // $user = User::findOrFail($id); // $user->fill([ // ...$request->all() // ]); // $user->save(); // return $this->noContent(); // // } }