Custom Login System in Laravel
Custom Login System in Laravel
- Create LoginController like this
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use View;
class LoginController extends Controller
{
function login_view()
{
return view('login');
}
function login_api(Request $request)
{
$login_data = [filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username' => $request->email, 'password' => $request->password];
if (Auth::attempt($login_data))
{
return redirect('/admin/dashboard');
}
else
{
echo "Invalid Username Password";
}
}
function logout(Request $request)
{
Auth::logout();
return redirect('/login');
}
}
2. Create AdminController like this
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as Controller;
use Illuminate\Http\Request;
use View;
class AdminController extends Controller
{
function dashboard_view()
{
return view('dashboard');
}
}
3. Create Adminauth middleware like this
<?php
namespace App\Http\Middleware;
use Closure;
Use Auth;
Use Redirect;
class AdminAuth
{
public function handle($request, Closure $next)
{
if(!Auth::check())
{
return redirect('/login');
}
return $next($request);
}
}
4. Add this middleware in Kernel
protected $routeMiddleware = [
// other Middleware
'AdminAuth' => \App\Http\Middleware\AdminAuth::class,
];
5. Add this route in Web.php file
use App\Http\Controllers\LoginController;
use App\Http\Controllers\AdminController;
Route::get('/', [LoginController::class, 'login_view']);
Route::post('/login-api', [LoginController::class, 'login_api']);
Route::group(['prefix' => 'admin'], function ()
{
Route::group(['middleware' => 'AdminAuth'], function ()
{
Route::get('/dashboard', [AdminController::class, 'dashboard_view']);
});
});
6. Create login.blade.php file and put into view folder
<form action="{{ url('/login-api') }}" method="Post">
@csrf
Email : <input type="email" name="email">
Password : <input type="password" name="password">
<button> Login </button>
<form>
7. Create dashboard.blade.php file and put into view folder
<!DOCTYPE html>
<html lang="en">
<body>
Admin Dashboard
</body>
</html>
0 Comments