I'm trying to create a middleware in Laravel 5.6 that checks if the user is authenticate or not. My middleware :
checklogin.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class checklogin
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/welcome');
}
return $next($request);
}
}
I added this in kernel.php in protected $routeMiddleware :
'checklogin' => \App\Http\Middleware\checklogin::class,
I also added it on router :
Route::get('/login','loginController@index');
Route::post('/welcome','loginController@store')->middleware('checklogin');
and also used
use App\Http\Middleware\checklogin;
My loginController is :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use Session;
use Illuminate\Support\Facades\Redirect;
session_start();
class loginController extends Controller
{
public function index()
{
return view('/login');
}
public function store(Request $request)
{
$name = $request->name;
$result = DB::table('tbl_login')
->where('name',$name)
->first();
if ($result) {
Session::put('name',$result->name);
Session::put('id',$result->id);
return Redirect::to('/welcome');
}
else{
Session::put('messege','invalid email or password');
return Redirect::to('/login');
}
}
And my login.blade.php is :
<p class="alert-danger">
<?php
$messege = Session::get('messege');
if ($messege) {
echo "$messege";
Session::put('messege',null);
}
?>
</p>
<form method="POST" action="{{url('/welcome')}}">
@csrf
<label for="name" >Name</label>
<input id="name" type="text" name="name" value="" required autofocus>
<button type="submit" class="btn btn-primary">
login
</button>
</form>
But it shows this error message :
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
I am new to laravel. I am just started learning. I dont know where is the problem. Please help!