121 lines
5.5 KiB
PHP
121 lines
5.5 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\TaskFeedController;
|
|
use App\Http\Controllers\Auth\LoginController;
|
|
use App\Http\Controllers\Auth\SignUpController;
|
|
use App\Http\Controllers\Setup\SetupWizard;
|
|
use App\Http\Controllers\UI\Domain\DomainDnsController;
|
|
use App\Http\Controllers\UI\Mail\AliasController;
|
|
use App\Http\Controllers\UI\Mail\MailboxController;
|
|
use App\Http\Controllers\UI\V2\Mail\MailboxController as V2MailboxController;
|
|
use App\Http\Controllers\UI\Security\SecurityController;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', function () {
|
|
try {
|
|
$setupDone = \App\Models\Setting::get('setup_completed', '0') === '1';
|
|
} catch (\Throwable) {
|
|
$setupDone = false;
|
|
}
|
|
if (!$setupDone) {
|
|
return redirect()->route('setup');
|
|
}
|
|
return Auth::check()
|
|
? redirect()->route('ui.dashboard')
|
|
: redirect()->route('login');
|
|
});
|
|
|
|
Route::get('/hp', function () {
|
|
return view('landing.index');
|
|
})->name('landing');
|
|
|
|
Route::middleware('auth.user')->name('auth.')->group(function () {
|
|
Route::get('/auth/2fa', \App\Livewire\Auth\TwoFaChallenge::class)->name('2fa');
|
|
});
|
|
|
|
Route::middleware(['auth.user', 'require2fa'])->name('ui.')->group(function () {
|
|
#DASHBOARD ROUTE
|
|
Route::get('/', \App\Livewire\Ui\Nx\Dashboard::class)->name('dashboard');
|
|
// Route::get('/dashboard', [\App\Http\Controllers\UI\DashboardController::class, 'index'])->name('dashboard');
|
|
// Route::get('/dashboard-redesign', [\App\Http\Controllers\UI\DashboardController::class, 'redesign'])->name('dashboard.redesign');
|
|
|
|
|
|
#SYSTEM ROUTES
|
|
Route::prefix('system')->name('system.')->group(function () {
|
|
Route::get('/settings', \App\Livewire\Ui\System\SettingsForm::class)->name('settings');
|
|
Route::get('/users', \App\Livewire\Ui\System\UserTable::class)->middleware('role:admin')->name('users');
|
|
Route::get('/api', \App\Livewire\Ui\System\ApiKeyTable::class)->name('api');
|
|
Route::get('/webhooks', \App\Livewire\Ui\System\WebhookTable::class)->name('webhooks');
|
|
Route::get('/sandbox', \App\Livewire\Ui\System\SandboxMailbox::class)->name('sandbox');
|
|
Route::get('/backups', \App\Livewire\Ui\System\BackupJobList::class)->name('backups');
|
|
Route::get('/update', \App\Livewire\Ui\System\UpdatePage::class)->name('update');
|
|
});
|
|
|
|
#SECURITY ROUTES
|
|
Route::prefix('security')->name('security.')->group(function () {
|
|
Route::get('/', [SecurityController::class, 'index'])->name('index');
|
|
Route::get('/fail2ban', \App\Livewire\Ui\Security\Fail2banSettings::class)->name('fail2ban');
|
|
Route::get('/ssl', \App\Livewire\Ui\Security\SslCertificatesTable::class)->name('ssl');
|
|
Route::get('/rspamd', \App\Livewire\Ui\Security\RspamdForm::class)->name('rspamd');
|
|
Route::get('/tls-ciphers', \App\Livewire\Ui\Security\TlsCiphersForm::class)->name('tls');
|
|
Route::get('/audit-logs', \App\Livewire\Ui\Security\AuditLogsTable::class)->name('audit');
|
|
});
|
|
|
|
#DOMAIN ROUTES
|
|
Route::name('domains.')->group(function () {
|
|
Route::get('/domains', \App\Livewire\Ui\Nx\Domain\DomainList::class)->name('index');
|
|
Route::get('/domains/dns', \App\Livewire\Ui\Nx\Domain\DnsDkim::class)->name('dns');
|
|
});
|
|
|
|
#MAIL ROUTES
|
|
Route::name('mail.')->group(function () {
|
|
// Route::get('/mailboxes', [MailboxController::class, 'index'])->name('mailboxes.index');
|
|
// Route::get('/aliases', [AliasController::class, 'index'])->name('aliases.index');
|
|
Route::get('/mailboxes', \App\Livewire\Ui\Nx\Mail\MailboxList::class)->name('mailboxes.index');
|
|
Route::get('/aliases', \App\Livewire\Ui\Nx\Mail\AliasList::class)->name('aliases.index');
|
|
Route::get('/quarantine', \App\Livewire\Ui\Nx\Mail\QuarantineList::class)->name('quarantine.index');
|
|
Route::get('/queues', \App\Livewire\Ui\Nx\Mail\QueueList::class)->name('queues.index');
|
|
});
|
|
|
|
#V2 REDESIGN ROUTES — prefix + name('v2.') entfernen wenn live
|
|
Route::prefix('v2')->name('v2.')->group(function () {
|
|
Route::name('mail.')->group(function () {
|
|
Route::get('/mailboxes', [V2MailboxController::class, 'index'])->name('mailboxes.index');
|
|
});
|
|
});
|
|
|
|
#NX ROUTES — prefix('nx')->name('nx.') entfernen wenn live, dann identisch zu Prod-Namen
|
|
// Route::prefix('nx')->name('nx.')->group(function () {
|
|
// Route::get('/dashboard', \App\Livewire\Ui\Nx\Dashboard::class)->name('dashboard.redesign');
|
|
// Route::prefix('mail')->name('mail.')->group(function () {
|
|
// Route::get('/mailboxes', \App\Livewire\Ui\Nx\Mail\MailboxList::class)->name('mailboxes.index');
|
|
// Route::get('/aliases', \App\Livewire\Ui\Nx\Mail\AliasList::class)->name('aliases.index');
|
|
// });
|
|
// });
|
|
|
|
#LOGOUT ROUTE
|
|
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
|
|
});
|
|
|
|
|
|
|
|
//Route::middleware(['auth'])
|
|
// ->get('/security/recovery-codes/download', [RecoveryCodeDownloadController::class, 'download'])
|
|
// ->name('security.recovery.download')
|
|
// ->middleware('signed'); // wichtig: signierte URL
|
|
|
|
|
|
Route::middleware(['web', 'auth']) // nutzt Session, kein Token nötig
|
|
->get('/ui/tasks/active', [TaskFeedController::class, 'active'])
|
|
->name('ui.tasks.active');
|
|
|
|
|
|
Route::middleware('guest.only')->group(function () {
|
|
Route::get('/login', [LoginController::class, 'show'])->name('login');
|
|
Route::get('/signup', [SignUpController::class, 'show'])->middleware('signup.open')->name('signup');
|
|
});
|
|
|
|
Route::get('/setup', \App\Livewire\Setup\Wizard::class)->name('setup');
|
|
|