sgm4231
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);
    }

分类:

技术点:

相关文章: