public function update(Request $request, User $user) { // 验证规则. $rules = [ 'email' => [ 'nullable', 'email', Rule::unique('users', 'email')->ignore($user->id), ], 'name' => [ 'required', 'username', 'min:2', 'max:12', Rule::unique('users', 'name')->ignore($user->id), ], 'phone' => [ 'nullable', 'cn_phone', Rule::unique('users', 'phone')->ignore($user->id), ], 'roles' => [ 'required', 'array', Rule::in(Role::all()->keyBy('id')->keys()->toArray()), ], ]; // 消息 $messages = [ 'email.email' => '请输入正确的 E-Mail 格式', 'email.unique' => '邮箱已经存在', 'name.required' => '请输入用户名', 'name.username' => '用户名只能以非特殊字符和数字开头,不能包含特殊字符', 'name.min' => '用户名最少输入两个字', 'name.max' => '用户名最多输入十二个字', 'name.unique' => '用户名已经被其他用户所使用', 'phone.cn_phone' => '请输入大陆地区合法手机号码', 'phone.unique' => '手机号码已经存在', 'roles.required' => '必须选择用户组', 'roles.array' => '发送数据格式错误', 'roles.in' => '选择的用户组中存在不合法信息', ]; $this->validate($request, $rules, $messages); foreach ($request->only(['email', 'name', 'phone']) as $key => $value) { $user->$key = $value ?: null; } $oldPwdHash = $user->getImPwdHash(); if ($password = $request->input('password')) { $user->createPassword($password); } $easeMob = new EaseMobController(); $response = app('db.connection')->transaction(function () use ($user, $request, $easeMob, $oldPwdHash) { $user->save(); $user->roles()->sync( $request->input('roles') ); // 环信重置密码 $request->user_id = $user->id; $request->old_pwd_hash = $oldPwdHash; $im = $easeMob->resetPassword($request); if ($im->getStatusCode() != 201) { return false; } return true; }); return response()->json([ 'messages' => [ $response === true ? '更新成功' : '更新失败', ], ])->setStatusCode($response === true ? 201 : 422); }
转载于:https://www.cnblogs.com/sgm4231/p/10564662.html