- Add password-protected links with session-based unlock flow - Add redirect warning (interstitial) pages before external URLs - Add smart targeting rules: device-based, country/geo, A/B weighted rotation - Add configurable per-IP rate limiting with 429 + Retry-After headers - Add daily stats aggregation & log pruning (short-url:aggregate-and-prune) - Add IncrementVisitJob as queue-based counter buffering fallback - Add ShortUrlDailyStats model with JSON stat columns per day - Add two new migrations: targeting/security fields, daily_stats table - Add password-prompt.blade.php and warning.blade.php views - Extend Settings GUI with Performance & Security tab (aggregation + rate limiting) - Extend ShortUrlForm with Targeting & Security section - Add POST route for password form submission (was GET-only → 405) - Replace enum(device_type) with string(20) for cross-DB compatibility - Remove ->after() MySQL-only hints from ALTER TABLE migrations - Fix aggregation test: use whereDate() instead of assertDatabaseHas for date column - Extend en/pl translations for all new features - Expand README.md with full v1.2.0 documentation (476 lines)
14 lines
413 B
PHP
14 lines
413 B
PHP
<?php
|
|
|
|
use Bjanczak\FilamentShortUrl\Http\Controllers\ShortUrlRedirectController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::match(
|
|
['GET', 'POST'],
|
|
config('filament-short-url.route_prefix', 's').'/{key}',
|
|
ShortUrlRedirectController::class
|
|
)
|
|
->name('short-url.redirect')
|
|
->where('key', '[a-zA-Z0-9_-]+')
|
|
->middleware(config('filament-short-url.middleware', ['web', 'throttle:120,1']));
|