Source Code
Route web.php
// Login
Route::get('/panel', [LoginController::class, 'index'])->name('panel')-
>middleware('guest');
Route::post('/panel', [LoginController::class, 'authentication'])-
>name('authentication');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
Model Users.php
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $guarded = ['id'];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
Controller LoginController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('panel.index');
}
public function authentication(Request $request)
{
$credentials = $request->validate([
'email' => 'required',
'password' => 'required',
]);
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
return redirect()->intended('/dashboard');
}
return back()->with('loginError', 'Login Failed!');
}
public function logout()
{
Auth::logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
return redirect('/panel');
}
}
Seeders DatabaseSeeder.php
\App\Models\User::create([
'username' => 'valdo',
'email' => '[email protected]',
'password' => bcrypt('superadmin'),
'role' => 'Superadmin'
]);
View Login.blade.php
<form class="login100-form validate-form" action="{{ route('authentication') }}"
method="POST">
@csrf
<span class="login100-form-title pb-5">
Login
</span>
<div class="panel panel-primary">
@if (session('loginError'))
<div class="alert alert-danger alert-dismissible
fade show" role="alert">
{{ session ('loginError') }}
<button type="button" class="btn-close"
data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<div class="tab-menu-heading">
<div class="tabs-menu1">
<!-- Tabs -->
<ul class="nav panel-tabs">
<li class="mx-0"><a href="#tab5"
class="active" data-bs-toggle="tab">Gmail</a></li>
</ul>
</div>
</div>
<div class="panel-body tabs-menu-body p-0 pt-5">
<div class="tab-content">
<div class="tab-pane active" id="tab5">
<div class="wrap-input100 validate-
input input-group" data-bs-validate="Valid email is required:
[email protected]">
<a href="javascript:void(0)"
class="input-group-text bg-white text-muted">
<i class="zmdi zmdi-email
text-muted" aria-hidden="true"></i>
</a>
<input class="input100 border-
start-0 form-control ms-0" type="text" placeholder="Email" name="email">
</div>
<div class="wrap-input100 validate-
input input-group" id="Password-toggle">
<a href="javascript:void(0)"
class="input-group-text bg-white text-muted">
<i class="zmdi zmdi-eye
text-muted" aria-hidden="true"></i>
</a>
<input class="input100 border-
start-0 form-control ms-0" type="password" placeholder="Password"
name="password">
</div>
<div class="container-login100-form-
btn">
<button class="login100-form-btn
btn-primary" type="submit">Login</button>
</div>
</div>
<div class="tab-pane" id="tab6">
<div id="mobile-num" class="wrap-
input100 validate-input input-group mb-4">
<a href="javascript:void(0)"
class="input-group-text bg-white text-muted">
<span>+91</span>
</a>
<input class="input100 border-
start-0 form-control ms-0">
</div>
<div id="login-otp" class="justify-
content-around mb-5">
<input class="form-control text-
center w-15" id="txt1" maxlength="1">
<input class="form-control text-
center w-15" id="txt2" maxlength="1">
<input class="form-control text-
center w-15" id="txt3" maxlength="1">
<input class="form-control text-
center w-15" id="txt4" maxlength="1">
</div>
<span>Note : Login with registered
mobile number to generate OTP.</span>
<div class="container-login100-form-
btn ">
<a href="javascript:void(0)"
class="login100-form-btn btn-primary" id="generate-otp">
Proceed
</a>
</div>
</div>
</div>
</div>
</div>
</form>