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();
|
||||
return redirect()->intended('/dashboard/overview');
|
||||
}else{
|
||||
return redirect()->back();
|
||||
return redirect()->back()->with('failed-status', 'Pastikan data benar dan akun sudah terdaftar.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,9 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\RateLimiter;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
@ -19,6 +22,10 @@ public function register(): 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/custom.css')}}">
|
||||
<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>
|
||||
|
||||
<body class="nk-body bg-white npc-default pg-auth">
|
||||
@ -75,6 +76,9 @@
|
||||
<div class="text-center mt-5">
|
||||
<span class="fw-500">Belum memiliki akun? <a href="{{route('auth.register')}}">Buat akun</a></span>
|
||||
</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 class="nk-block nk-auth-footer">
|
||||
<div class="mt-3 text-center">
|
||||
@ -95,5 +99,26 @@
|
||||
<!-- JavaScript -->
|
||||
<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="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>
|
||||
|
||||
@ -56,8 +56,8 @@
|
||||
Route::get('/login', 'login')->name('login')->middleware('authenticated');
|
||||
|
||||
Route::name('auth.')->group(function(){
|
||||
Route::post('/login', 'loginAction')->name('login.action');
|
||||
Route::get('/register', 'register')->name('register')->middleware('authenticated');;
|
||||
Route::post('/login', 'loginAction')->name('login.action')->middleware('throttle:login');
|
||||
Route::get('/register', 'register')->name('register')->middleware('authenticated');
|
||||
Route::post('/register', 'registerAction')->name('register.action');
|
||||
Route::get('/register-success', 'registerSuccess')->name('register.success')->middleware('authenticated');;
|
||||
Route::get('/logout', 'logout')->name('logout');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user