55 lines
3.1 KiB
PHP
55 lines
3.1 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\CertificateDownloadController;
|
|
use App\Http\Controllers\CertificatePreviewController;
|
|
use App\Http\Controllers\LanguageController;
|
|
use App\Http\Controllers\MarketingController;
|
|
use App\Http\Controllers\MoneybirdWebhookController;
|
|
use App\Http\Controllers\SharePageController;
|
|
use App\Http\Controllers\VerifyController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', [MarketingController::class, 'home'])->name('home');
|
|
Route::get('/security', [MarketingController::class, 'security'])->name('marketing.security');
|
|
Route::get('/pricing', [MarketingController::class, 'pricing'])->name('marketing.pricing');
|
|
Route::get('/terms', [MarketingController::class, 'terms'])->name('marketing.terms');
|
|
Route::get('/privacy', [MarketingController::class, 'privacy'])->name('marketing.privacy');
|
|
Route::get('/dpa', [MarketingController::class, 'dpa'])->name('marketing.dpa');
|
|
|
|
// Available to guests and authenticated users alike.
|
|
Route::get('language/{locale}', LanguageController::class)->name('language.switch');
|
|
|
|
// Public certificate authenticity check. No auth — anyone with a
|
|
// certificate number and the holder's last name can confirm it's valid.
|
|
Route::get('verify', [VerifyController::class, 'show'])->name('verify.show');
|
|
Route::post('verify', [VerifyController::class, 'check'])->middleware('throttle:10,1')->name('verify.check');
|
|
|
|
// Moneybird calls this to report invoice/payment events. No auth — verified
|
|
// by comparing the webhook's shared token instead (see the controller).
|
|
Route::post('webhooks/moneybird', MoneybirdWebhookController::class)->name('webhooks.moneybird');
|
|
|
|
Route::middleware(['auth', 'verified'])->group(function () {
|
|
Route::livewire('dashboard', 'pages::dashboard')->name('dashboard');
|
|
|
|
Route::livewire('certificates', 'pages::certificates.index')->name('certificates.index');
|
|
Route::livewire('certificates/create', 'pages::certificates.create')->name('certificates.create');
|
|
Route::livewire('certificates/{certificate}', 'pages::certificates.show')->name('certificates.show');
|
|
Route::livewire('certificates/{certificate}/edit', 'pages::certificates.edit')->name('certificates.edit');
|
|
Route::get('certificates/{certificate}/download', CertificateDownloadController::class)->name('certificates.download');
|
|
Route::get('certificates/{certificate}/preview', CertificatePreviewController::class)->name('certificates.preview');
|
|
|
|
Route::livewire('categories', 'pages::categories.index')->name('categories.index');
|
|
|
|
Route::livewire('shares', 'pages::shares.index')->name('shares.index');
|
|
});
|
|
|
|
// External recipients: authorized by the unguessable share token (and the
|
|
// optional share password), not by login.
|
|
Route::prefix('shared/{share:token}')->name('shared.')->scopeBindings()->group(function () {
|
|
Route::get('/', [SharePageController::class, 'show'])->name('show');
|
|
Route::post('unlock', [SharePageController::class, 'unlock'])->middleware('throttle:10,1')->name('unlock');
|
|
Route::get('zip', [SharePageController::class, 'zip'])->name('zip');
|
|
Route::get('certificates/{certificate}', [SharePageController::class, 'download'])->name('certificate');
|
|
});
|
|
|
|
require __DIR__.'/settings.php';
|