I am getting a redirect loop when trying to access the /admin route I only want the user admin with the right password from the config file to be able to perform the crud operations, I am planning to then add user routes. I am mainly creating a news portal. I am very new to Laravel.
Routes
Route::middleware(['OpenAdminLoginWhenPasswordIsNotCorrect', 'OpenAdminPanelWhenPasswordIsCorrect'])->group(function () {
Route::get('/admin', [AdminLogin::class, 'login'])->name('admin.login');
Route::post('/admin', [AdminLogin::class, 'loginSubmit'])->name('admin.login.submit');
Route::get('/admin/news', [NewsController::class, 'index'])->name('admin.news.index');
Route::get('/admin/news/create', [NewsController::class, 'create'])->name('admin.news.create');
Route::post('/admin/news/', [NewsController::class, 'store'])->name('admin.news.store');
Route::get('/admin/news/{news}/edit', [NewsController::class, 'edit'])->name('admin.news.edit');
Route::put('/admin/news/{news}/update', [NewsController::class, 'update'])->name('admin.news.update');
Route::delete('/admin/news/{news}/delete', [NewsController::class, 'delete'])->name('admin.news.delete');
});
Middlewares
class OpenAdminPanelWhenPasswordIsCorrect
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next)
{
$userHasAccessToTheContent = Session::get('userHasAccessToTheContent', false);
if ($userHasAccessToTheContent === true) {
return $next($request);
} else {
return redirect()->route('admin.news.index');
}
}
}
class OpenAdminLoginWhenPasswordIsNotCorrect
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next)
{
$userHasAccessToTheContent = Session::get('userHasAccessToTheContent', false);
if ($request->route()->named('admin.login')) {
return $next($request);
}
if ($userHasAccessToTheContent === false && $request->path() !== '/admin/news') {
return redirect()->route('admin.login');
} else {
return $next($request);
}
}
}
Controller
class AdminLogin extends Controller
{
public function login()
{
return view('admin.login');
}
public function loginSubmit(Request $request)
{
$password = $request->input('password');
$username = $request->input('username');
$expectedPass = config('admin.password');
$expectedUser = config('admin.username');
if ($username === $expectedUser && $password === $expectedPass) {
Session::put('userHasAccessToTheContent', true);
return redirect()->route('admin.news.index');
}
return redirect()->route('admin.login');
}
}
Tried checking the Middleware logic and asking barb and gpt with no luck