v1.0.0
This commit is contained in:
75
src/routes/web.php
Normal file
75
src/routes/web.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
use App\Livewire\Admin\Panel as AdminPanel;
|
||||
use App\Livewire\Auth\Login;
|
||||
use App\Livewire\Client\Dashboard as ClientDashboard;
|
||||
use App\Livewire\Client\NewTicket as ClientNewTicket;
|
||||
use App\Livewire\Client\TicketShow as ClientTicketShow;
|
||||
use App\Livewire\Landing;
|
||||
use App\Livewire\Operator\NewTicket as OperatorNewTicket;
|
||||
use App\Livewire\Operator\Queue as OperatorQueue;
|
||||
use App\Livewire\Operator\Stats as OperatorStats;
|
||||
use App\Livewire\Operator\TicketShow as OperatorTicketShow;
|
||||
use App\Models\Ticket;
|
||||
use App\Support\Settings;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/', Landing::class)->name('landing');
|
||||
|
||||
Route::get('/manifest.webmanifest', function () {
|
||||
return response()->json([
|
||||
'name' => Settings::get('company_name'),
|
||||
'short_name' => Settings::get('company_name'),
|
||||
'start_url' => '/',
|
||||
'scope' => '/',
|
||||
'display' => 'standalone',
|
||||
'background_color' => '#f3f5fe',
|
||||
'theme_color' => Settings::accentColor(),
|
||||
'lang' => 'pl',
|
||||
'icons' => [
|
||||
['src' => asset('pwa-icons/icon-192.png'), 'sizes' => '192x192', 'type' => 'image/png', 'purpose' => 'any'],
|
||||
['src' => asset('pwa-icons/icon-512.png'), 'sizes' => '512x512', 'type' => 'image/png', 'purpose' => 'any'],
|
||||
['src' => asset('pwa-icons/icon-192-maskable.png'), 'sizes' => '192x192', 'type' => 'image/png', 'purpose' => 'maskable'],
|
||||
['src' => asset('pwa-icons/icon-512-maskable.png'), 'sizes' => '512x512', 'type' => 'image/png', 'purpose' => 'maskable'],
|
||||
],
|
||||
])->header('Content-Type', 'application/manifest+json');
|
||||
})->name('manifest');
|
||||
|
||||
Route::get('/login', Login::class)->middleware('guest')->name('login');
|
||||
Route::post('/logout', function () {
|
||||
Auth::logout();
|
||||
request()->session()->invalidate();
|
||||
request()->session()->regenerateToken();
|
||||
|
||||
return redirect('/');
|
||||
})->middleware('auth')->name('logout');
|
||||
|
||||
Route::middleware(['auth', 'role:client'])->prefix('client')->name('client.')->group(function () {
|
||||
Route::get('/', ClientDashboard::class)->name('dashboard');
|
||||
Route::get('/new', ClientNewTicket::class)->name('new');
|
||||
Route::get('/tickets/{ticket}', ClientTicketShow::class)->name('ticket');
|
||||
});
|
||||
|
||||
Route::middleware(['auth', 'role:operator'])->prefix('operator')->name('operator.')->group(function () {
|
||||
Route::get('/', OperatorQueue::class)->name('queue');
|
||||
Route::get('/new', OperatorNewTicket::class)->name('new');
|
||||
Route::get('/stats', OperatorStats::class)->name('stats');
|
||||
Route::get('/tickets/{ticket}', OperatorTicketShow::class)->name('ticket');
|
||||
|
||||
// Fired via navigator.sendBeacon on tab/browser close (see the
|
||||
// MONITOR CZASU PRACY widget in ticket-show.blade.php) — a plain
|
||||
// Livewire call can't be relied on to complete once the page is
|
||||
// actually unloading, and sendBeacon needs a normal endpoint to hit.
|
||||
// Excluded from CSRF verification in bootstrap/app.php since a beacon
|
||||
// request can't carry the token header.
|
||||
Route::post('/tickets/{ticket}/stop-timer', function (Ticket $ticket) {
|
||||
$ticket->stopTimer();
|
||||
|
||||
return response()->noContent();
|
||||
})->name('ticket.stop-timer');
|
||||
});
|
||||
|
||||
Route::middleware(['auth', 'role:admin'])->prefix('admin')->name('admin.')->group(function () {
|
||||
Route::get('/', AdminPanel::class)->name('panel');
|
||||
});
|
||||
Reference in New Issue
Block a user