feat: rate limiter 3 login per-minute
feat: failed login message
This commit is contained in:
parent
f2be35c45b
commit
607f83d3c6
@ -27,7 +27,7 @@ public function loginAction(LoginRequest $request){
|
|||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
return redirect()->intended('/dashboard/overview');
|
return redirect()->intended('/dashboard/overview');
|
||||||
}else{
|
}else{
|
||||||
return redirect()->back();
|
return redirect()->back()->with('failed-status', 'Pastikan data benar dan akun sudah terdaftar.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Cache\RateLimiting\Limit;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\RateLimiter;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
@ -19,6 +22,10 @@ public function register(): void
|
|||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
//
|
RateLimiter::for('login', function (Request $request) {
|
||||||
|
return Limit::perMinute(3)->by($request->ip())->response(function (Request $request) {
|
||||||
|
return redirect()->back()->with('toManyRequest', 'Harap tunggu 1 menit untuk login ulang.');
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
<link rel="stylesheet" href="{{asset('assets/dashboard/css/dashlite.css?ver=3.0.3')}}">
|
<link rel="stylesheet" href="{{asset('assets/dashboard/css/dashlite.css?ver=3.0.3')}}">
|
||||||
<link rel="stylesheet" href="{{asset('assets/dashboard/css/custom.css')}}">
|
<link rel="stylesheet" href="{{asset('assets/dashboard/css/custom.css')}}">
|
||||||
<link id="skin-default" rel="stylesheet" href="{{asset('assets/dashboard/css/theme.css?ver=3.0.3')}}">
|
<link id="skin-default" rel="stylesheet" href="{{asset('assets/dashboard/css/theme.css?ver=3.0.3')}}">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="nk-body bg-white npc-default pg-auth">
|
<body class="nk-body bg-white npc-default pg-auth">
|
||||||
@ -75,6 +76,9 @@
|
|||||||
<div class="text-center mt-5">
|
<div class="text-center mt-5">
|
||||||
<span class="fw-500">Belum memiliki akun? <a href="{{route('auth.register')}}">Buat akun</a></span>
|
<span class="fw-500">Belum memiliki akun? <a href="{{route('auth.register')}}">Buat akun</a></span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="text-center text-primary mt-1">
|
||||||
|
<span class="fw-500 text-decoration-underline"><a href="{{route('homepage.landing')}}">Beranda</a></span>
|
||||||
|
</div>
|
||||||
</div><!-- .nk-block -->
|
</div><!-- .nk-block -->
|
||||||
<div class="nk-block nk-auth-footer">
|
<div class="nk-block nk-auth-footer">
|
||||||
<div class="mt-3 text-center">
|
<div class="mt-3 text-center">
|
||||||
@ -95,5 +99,26 @@
|
|||||||
<!-- JavaScript -->
|
<!-- JavaScript -->
|
||||||
<script src="{{asset('assets/dashboard/js/bundle.js?ver=3.0.3')}}"></script>
|
<script src="{{asset('assets/dashboard/js/bundle.js?ver=3.0.3')}}"></script>
|
||||||
<script src="{{asset('assets/dashboard/js/scripts.js?ver=3.0.3')}}"></script>
|
<script src="{{asset('assets/dashboard/js/scripts.js?ver=3.0.3')}}"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
|
||||||
|
|
||||||
|
@if (session('toManyRequest'))
|
||||||
|
<script>
|
||||||
|
Swal.fire({
|
||||||
|
icon: 'warning',
|
||||||
|
title: 'Terlalu banyak login',
|
||||||
|
text: '{{session('toManyRequest')}}',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@elseif (session('failed-status'))
|
||||||
|
<script>
|
||||||
|
Swal.fire({
|
||||||
|
icon: 'error',
|
||||||
|
title: 'Login Gagal',
|
||||||
|
text: '{{ session('failed-status') }}',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endif
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -56,8 +56,8 @@
|
|||||||
Route::get('/login', 'login')->name('login')->middleware('authenticated');
|
Route::get('/login', 'login')->name('login')->middleware('authenticated');
|
||||||
|
|
||||||
Route::name('auth.')->group(function(){
|
Route::name('auth.')->group(function(){
|
||||||
Route::post('/login', 'loginAction')->name('login.action');
|
Route::post('/login', 'loginAction')->name('login.action')->middleware('throttle:login');
|
||||||
Route::get('/register', 'register')->name('register')->middleware('authenticated');;
|
Route::get('/register', 'register')->name('register')->middleware('authenticated');
|
||||||
Route::post('/register', 'registerAction')->name('register.action');
|
Route::post('/register', 'registerAction')->name('register.action');
|
||||||
Route::get('/register-success', 'registerSuccess')->name('register.success')->middleware('authenticated');;
|
Route::get('/register-success', 'registerSuccess')->name('register.success')->middleware('authenticated');;
|
||||||
Route::get('/logout', 'logout')->name('logout');
|
Route::get('/logout', 'logout')->name('logout');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user