feat: implement temporary signed URLs for attendance and assignment sharing routes
This commit is contained in:
parent
f75f43fb2e
commit
c738f4b5c2
@ -5,6 +5,7 @@
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class CopyAssignmentLinkAction extends Action
|
||||
{
|
||||
@ -24,7 +25,7 @@ protected function setUp(): void
|
||||
$course = $livewire->course;
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
|
||||
$url = route('share.assignment', [
|
||||
$url = URL::temporarySignedRoute('share.assignment', now()->addHour(), [
|
||||
'course' => $course->id,
|
||||
'session_id' => $session ? $session->id : null,
|
||||
]);
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class CopyAttendanceLinkAction extends Action
|
||||
{
|
||||
@ -25,7 +26,7 @@ protected function setUp(): void
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
$date = $session ? $session->date->toDateString() : null;
|
||||
|
||||
$url = route('share.attendance', ['course' => $course->id, 'date' => $date]);
|
||||
$url = URL::temporarySignedRoute('share.attendance', now()->addHour(), ['course' => $course->id, 'date' => $date]);
|
||||
|
||||
$livewire->js("if (navigator.clipboard) { navigator.clipboard.writeText('{$url}').catch(() => {}); }");
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Colors\Color;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class ShareAssignmentAction extends Action
|
||||
{
|
||||
@ -34,7 +35,7 @@ protected function setUp(): void
|
||||
$course = $livewire->course;
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
|
||||
$url = route('share.assignment', [
|
||||
$url = URL::temporarySignedRoute('share.assignment', now()->addHour(), [
|
||||
'course' => $course->id,
|
||||
'session_id' => $session ? $session->id : null,
|
||||
]);
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Colors\Color;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class ShareAttendanceAction extends Action
|
||||
{
|
||||
@ -35,7 +36,7 @@ protected function setUp(): void
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
$date = $session ? $session->date->toDateString() : null;
|
||||
|
||||
$url = route('share.attendance', ['course' => $course->id, 'date' => $date]);
|
||||
$url = URL::temporarySignedRoute('share.attendance', now()->addHour(), ['course' => $course->id, 'date' => $date]);
|
||||
|
||||
$text = "*Info Kelas {$course->name}*\nSesi ke-".($session->session_number ?? '-').' ('.($session->date->translatedFormat('d M Y') ?? '').")\n\nSilakan cek detail/rekap kehadiran melalui tautan ini:\n\n{$url}";
|
||||
|
||||
|
||||
@ -8,5 +8,5 @@
|
||||
return view('welcome');
|
||||
});
|
||||
|
||||
Route::get('/share/presensi/{course}', [ShareAttendanceController::class, 'show'])->name('share.attendance');
|
||||
Route::get('/share/tugas/{course}', [ShareAssignmentController::class, 'show'])->name('share.assignment');
|
||||
Route::get('/share/attendance/{course}', [ShareAttendanceController::class, 'show'])->name('share.attendance')->middleware('signed');
|
||||
Route::get('/share/assignment/{course}', [ShareAssignmentController::class, 'show'])->name('share.assignment')->middleware('signed');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user