41 lines
1.3 KiB
PHP
41 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Models\ProjectComment;
|
|
use App\Models\TranscriptVersion;
|
|
use App\Models\TranscriptionProject;
|
|
use App\Models\User;
|
|
use App\Policies\CommentPolicy;
|
|
use App\Policies\TranscriptVersionPolicy;
|
|
use App\Policies\TranscriptionProjectPolicy;
|
|
use App\Policies\UserPolicy;
|
|
use Illuminate\Cache\RateLimiting\Limit;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Illuminate\Support\Facades\RateLimiter;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
public function register(): void {}
|
|
|
|
public function boot(): void
|
|
{
|
|
// Register Policies
|
|
Gate::policy(User::class, UserPolicy::class);
|
|
Gate::policy(TranscriptionProject::class, TranscriptionProjectPolicy::class);
|
|
Gate::policy(TranscriptVersion::class, TranscriptVersionPolicy::class);
|
|
Gate::policy(ProjectComment::class, CommentPolicy::class);
|
|
|
|
// Rate Limiters
|
|
RateLimiter::for('login', function (Request $request) {
|
|
return Limit::perMinute(5)->by($request->input('email') . '|' . $request->ip());
|
|
});
|
|
|
|
RateLimiter::for('upload', function (Request $request) {
|
|
return Limit::perHour(10)->by($request->user()?->id ?: $request->ip());
|
|
});
|
|
}
|
|
}
|