lernschiff/routes/web.php

44 lines
1.9 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
Route::get('/', fn() => redirect('/dashboard'));
// Test route for middleware test — only reachable with school-admin or teacher role
Route::middleware(['auth', 'role:school-admin,teacher'])->group(function () {
Route::get('/school/dashboard', fn() => response('ok'))->name('school.dashboard');
});
Route::middleware(['auth', 'license'])->group(function () {
Route::get('/dashboard', \App\Livewire\Dashboard\Index::class)->name('dashboard');
Route::get('/subjects', \App\Livewire\Subjects\Index::class)->name('subjects');
Route::get('/tasks', \App\Livewire\Tasks\Index::class)->name('tasks');
Route::get('/tasks/{slug}/run', \App\Livewire\Tasks\Run::class)
->where('slug', '[a-z0-9-]+')
->name('tasks.run');
Route::get('/photo', \App\Livewire\PhotoHelp\Index::class)->name('photo');
Route::get('/rewards', \App\Livewire\Rewards\Index::class)->name('rewards');
Route::get('/progress', \App\Livewire\Progress\Index::class)->name('progress');
Route::get('/notifications', \App\Livewire\Notifications\Index::class)->name('notifications');
Route::get('/settings', \App\Livewire\Settings\Index::class)->name('settings');
});
Route::post('/logout', function (\App\Livewire\Actions\Logout $logout) {
$logout();
return redirect()->route('login');
})->middleware('auth')->name('logout');
Route::get('/lizenz-abgelaufen', fn() => view('lizenz-abgelaufen'))->name('lizenz.abgelaufen');
Route::view('profile', 'profile')->middleware(['auth'])->name('profile');
require __DIR__.'/auth.php';
// Quick-Login: double-defense (isLocal + ALLOW_QUICK_LOGIN env)
if (app()->isLocal() && env('ALLOW_QUICK_LOGIN', false)) {
Route::get('/dev/quick-login', \App\Livewire\DevQuickLogin::class)->name('dev.quick-login');
}
// API v1 routes (used by CrossSubdomainSessionTest)
require __DIR__ . '/api_v1.php';