You don't return, so the instead you return back instead.
if (Auth::attempt($credentials, $remember)) {
$request->session()->regenerate();
return redirect()->intended('/home');
}
Hi guys,
Some time ago I implemented a custom login following Laravel's documentation. This is what it looks like currently:
namespace App\Http\Controllers;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
use Mockery\Generator\StringManipulation\Pass\Pass;
class AuthController extends Controller
{
public function index()
{
return view('auth.login');
}
public function authenticate(Request $request)
{
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
]);
$remember = $request->remember;
if (Auth::attempt($credentials, $remember)) {
$request->session()->regenerate();
return redirect()->intended('/home');
}
return back()->withErrors([
'status' => 'Uw gebruikersnaam en/of wachtwoord zijn onjuist.',
]);
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
}
public function showPasswordRequestForm() {
return view('auth.forgot-password');
}
public function sendPasswordResetMail(Request $request): \Illuminate\Http\RedirectResponse
{
$request->validate(['email' => 'required|email']);
$status = Password::sendResetLink(
$request->only('email')
);
return $status === Password::RESET_LINK_SENT
? back()->with(['status' => __($status, ['email' => $request->email])])
: back()->withErrors(['email' => __($status)]);
}
public function showPasswordResetForm($token) {
$email = request()->query('email');
$user = Password::broker()->getUser(['email' => $email, 'token' => $token]);
if (!Password::broker()->tokenExists($user, $token)) {
return redirect()->route('password.request')
->withErrors(['email' => 'De link in uw e-mail is verlopen.
Vul uw mailadres hieronder in om een nieuwe link te ontvangen.
Let op: deze link is 60 minuten geldig.']);
}
return view('auth.reset-password')->with('token', $token);
}
public function resetPassword(Request $request): \Illuminate\Http\RedirectResponse
{
$request->validate([
'token' => 'required',
'email' => 'required|email',
'password' => 'required|min:8|confirmed',
]);
$status = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user, $password) {
$user->forceFill([
'password' => Hash::make($password)
])->setRememberToken(Str::random(60));
$user->save();
event(new PasswordReset($user));
}
);
return $status === Password::PASSWORD_RESET
? redirect()->route('login')->with('status', __($status))
: back()->withErrors(['email' => [__($status)]]);
}
}
No issues with logging in at all. What i've added recently is this part inside the authenticate-method:
return redirected()->intended('/home')
This should normally ensure that the user, after logging in, gets back to the page that it intended to visit after the auth middleware intercepted the request. However, this is not the case. I'm always being redirected to the '/home' route which is also the RouteServiceProvider HOME variable.
What am I doing wrong? I've created multiple test routes which all have the Auth-middleware assigned to it, but it always gives me the same result.
Please or to participate in this conversation.