简体   繁体   English

Laravel从控制器内部创建新用户

[英]Laravel creating a new user from within a controller

How can I invoke the create method to register a user from within a controller. 如何调用create方法从控制器内部注册用户。

A user will already be logged in when register the new user. 注册新用户时,该用户已经登录。 When doing: 进行时:

User::create([
...
]);

The password is not hashed, so the register procedure must be done with another method call. 密码不会被散列,因此必须使用另一个方法调用来完成注册过程。 In the postRegister method used by the default register process, there is this line 在默认注册过程使用的postRegister方法中,有这行

Auth::login($this->create($request->all()));

So how can I invoke $this->create($request->all()) 那么如何调用$ this-> create($ request-> all())

From with my custom controller and what parameters does it require. 从我的自定义控制器开始,它需要什么参数。

Any ideas An thanks in advance for any feedback. 任何想法预先感谢您的任何反馈。

 /**
     * Invites a new user to the current users company.
     * @param Request $request
     * @return mixed
     */
    public function employeeInvite(Request $request) {


        $this->validate($request, [
           'email' => 'required|email',
        ]);

          // TODO: Check user is authorized to send invites


        $user = $this->users->getUserByEmail($request->email); // get user

        if($this->userExists($user)
            && $request->user()->email != $request->email
            && $this->userHasInvite($user->id, $request->user()->company_id) == false)
        {
            // send invite
            if($this->sendInvite($request->user()->company_id, $user->id)) {
                // if worked, create succses method to send back to the user
            }


        } else
        {
            // create user
            $userData = [
                'email' => $request->email,
                'password' => $this->random_password(6),
            ];
            $newUser = User::create($userData);

            // send invite
            $this->sendInvite($request->user()->company_id, $userData->id);
        }


        return redirect('members/company');
    } // end function employeeInvite

The User::create() method doesn't hash passwords by itself, so you will have to do it yourself. User::create()方法本身不会散列密码,因此您必须自己进行操作。

Laravel's hashing function is bcrypt() , so your $userData array should look like this: Laravel的哈希函数是bcrypt() ,因此$userData数组应如下所示:

$userData = [
    'email' => $request->email,
    'password' => bcrypt($this->random_password(6)),
];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM