'Why am I routed to login form rather than the route that I specified - Laravel

I have a customized Laravel login controller. If I don't have a record in a particular table I want to redirect to a selfRegister page. The login function gets to the code that checks for this record and fails to find it. I then do a redirect, but instead of going to selfregister function on my userController i wind up back at the login form and I have no idea why.

web.php

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\ActivityController;
use App\Http\Controllers\NoteController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\GetNameController;
use App\Http\Controllers\UserController;


/*
  |--------------------------------------------------------------------------
  | Web Routes
  |--------------------------------------------------------------------------
  |
  | Here is where you can register web routes for your application. These
  | routes are loaded by the RouteServiceProvider within a group which
  | contains the "web" middleware group. Now create something great!
  |
 */

Auth::routes();

Route::any('/user/selfregister',[UserController::class, 'selfRegister'])->name('selfRegister');

Route::group(['middleware' => 'auth'], function () {
    
    Route::any('/user/profile', [UserController::class, 'profile']);
.
.
.

From LoginController

public function login(Request $request)
{
    if($this->validateLogin($request)){
        return $this->sendFailedLoginResponse($request);
    }
    
    $req = $request->all();
    $app_acc = New Application_access();
    $app_acc->user_name = $req['user_name'];
    $app_acc->access_date = date('Y-m-d h:i:s');
    if ($this->attemptLogin($request)) { 
        echo('logged in 1<br>');
        $app_acc->access_disposition = 'login';
        $app_acc->save();
        $reset_p = New Reset_password();
        echo('logged in 2<br>');
        if($reset_p->buildReset(Auth::user()->user_contact_id)){
            $user = Users::find(auth()->user()->user_contact_id);               
            $user->activated = 0;
            $user->save();
            return redirect('/user/passwordupdate');
        };
            
        return $this->sendLoginResponse($request);
    } else {
        // login failed
        // ******
        // check if user is in the contact table
        
        $contact = DB::table('contacts_t')->select('*')
            ->where('con_email',"=",$req['user_name'])
            ->first();
            
        if (!$contact) {
            // if we did not find the contact then redirect to self register
            return redirect()->route('selfRegister');
            //return redirect()->route('/user/selfregister');
        }       
        return $this->sendLoginResponse($request);
    }
    
    return $this->sendFailedLoginResponse($request);        
    
}

From UserController

    public function selfRegister() {
        die('selfRegister');
.
.
.

From Login.blade.php

.
.
.
                <div class="centerLogin">
                    <form enctype="multipart/form-data" method="POST" action="{{ route('login') }}">
                        @csrf
                        <div class="form-group row mt-3"> 
.
.
.


Solution 1:[1]

    <?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\ActivityController;
use App\Http\Controllers\NoteController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\GetNameController;
use App\Http\Controllers\UserController;


/*
  |--------------------------------------------------------------------------
  | Web Routes
  |--------------------------------------------------------------------------
  |
  | Here is where you can register web routes for your application. These
  | routes are loaded by the RouteServiceProvider within a group which
  | contains the "web" middleware group. Now create something great!
  |
 */

Route::get('/user/selfregister',[UserController::class, 'selfRegister'])->name('selfRegister');


Auth::routes();


Route::group(['middleware' => 'auth'], function () {
    
    Route::any('/user/profile', [UserController::class, 'profile']);
.
.
.

Try like this. Move your route before Auth::routes(); and change it to get.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 gguney