Laravel在控制器中创建新用户

时间:2015-12-06 19:52:41

标签: php laravel

如何调用create方法从控制器中注册用户。

注册新用户时,用户已经登录。 在做的时候:

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

密码未经过哈希处理,因此必须使用其他方法调用完成注册过程。在默认注册过程使用的postRegister方法中,有一行

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

那我怎么能调用呢     $ this-> create($ request-> all())

使用我的自定义控制器以及它需要哪些参数。

任何想法 提前感谢任何反馈。

 /**
     * 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

1 个答案:

答案 0 :(得分:0)

User::create()方法本身不会对密码进行哈希处理,因此您必须自己完成。

Laravel的散列函数为bcrypt(),因此您的$userData数组应如下所示:

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