You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
<?php |
|
|
|
namespace App\Providers; |
|
|
|
use Illuminate\Cache\RateLimiting\Limit; |
|
use Illuminate\Http\Request; |
|
use Illuminate\Support\Facades\RateLimiter; |
|
use Illuminate\Support\Facades\URL; |
|
use Illuminate\Support\ServiceProvider; |
|
use Laravel\Passport\Passport; |
|
|
|
class AppServiceProvider extends ServiceProvider |
|
{ |
|
public function register(): void |
|
{ |
|
// |
|
} |
|
|
|
public function boot(): void |
|
{ |
|
if (config('app.env') === 'production') { |
|
URL::forceScheme('https'); |
|
} |
|
|
|
Passport::tokensCan(config('api.scopes')); |
|
|
|
RateLimiter::for('login', function (Request $request) { |
|
$username = strtolower(trim((string) $request->input('username', ''))); |
|
|
|
return Limit::perMinute(20)->by($username !== '' ? 'login:'.$username : 'login-ip:'.$request->ip()); |
|
}); |
|
|
|
RateLimiter::for('audit-beacon', function (Request $request) { |
|
$sessionId = $request->session()->getId(); |
|
|
|
return Limit::perMinute(180)->by($sessionId !== '' ? 'audit:'.$sessionId : 'audit-ip:'.$request->ip()); |
|
}); |
|
} |
|
}
|
|
|