I am trying to login a user right after registration with the code below.
I am not seeing anything wrong in my code by I get the following error
Method [guard] does not exist.
I have as well imported use
IlluminateContractsAuthGuard;
RegisterUser
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
// $this->create($request->all());
$user = $this->create($request->all());
UserVerification::generate($user);
UserVerification::send($user, 'My Custom E-mail Subject');
$this->guard()->login($user)->with('status', 'Registration successfully done.');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
Advertisement
Answer
There is no method named guard in your controller. Use the login method in Auth.
Use Auth::login($user); to manually log in a user
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
// $this->create($request->all());
$user = $this->create($request->all());
UserVerification::generate($user);
UserVerification::send($user, 'My Custom E-mail Subject');
Auth::login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
If you want to use a custom guard you can specify the guard Auth::guard('guard-name')->login($user)