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); }
相关文章: