group(function (): void { Route::get('/login', [AuthController::class, 'create'])->name('login'); Route::post('/login', [AuthController::class, 'store'])->middleware('throttle:5,1')->name('login.store'); }); Route::middleware(['auth', EnsureAccountActive::class])->group(function (): void { Route::post('/logout', [AuthController::class, 'destroy'])->name('logout'); Route::get('/', DashboardController::class)->name('dashboard'); Route::get('/notifications', [NotificationController::class, 'index'])->name('notifications.index'); Route::post('/notifications/read', [NotificationController::class, 'readAll'])->name('notifications.read-all'); Route::post('/notifications/{notification}/read', [NotificationController::class, 'read'])->name('notifications.read'); Route::get('/printers', BambuddyController::class)->name('printers.index'); Route::delete('/printers/{printer}', [PrinterController::class, 'destroy'])->name('printers.destroy'); Route::get('/shipping', [ShippingController::class, 'index'])->name('shipping'); Route::post('/shipping/quotes', [ShippingController::class, 'quote'])->name('shipping.quote'); Route::post('/shipping/collections/dates', [ShippingController::class, 'collectionDates'])->name('shipping.collection-dates'); Route::post('/shipping/collections/book', [ShippingController::class, 'bookCollection'])->name('shipping.book-collection'); Route::post('/shipping/collections/reset', [ShippingController::class, 'resetBooking'])->name('shipping.reset-booking'); Route::get('/shipping/labels/{orderLineId}', [ShippingController::class, 'label'])->name('shipping.label'); Route::post('/shipping/parcel2go/connect', [Parcel2GoConnectionController::class, 'connect'])->name('parcel2go.connect'); Route::get('/shipping/parcel2go/callback', [Parcel2GoConnectionController::class, 'callback'])->name('parcel2go.callback'); Route::get('/etsy', [EtsyController::class, 'index'])->name('etsy.index'); Route::post('/etsy/connect', [EtsyController::class, 'connect'])->name('etsy.connect'); Route::get('/etsy/callback', [EtsyController::class, 'callback'])->name('etsy.callback'); Route::get('/settings', [EtsySettingsController::class, 'index'])->name('settings.index'); Route::put('/settings/etsy', [EtsySettingsController::class, 'update'])->name('settings.etsy.update'); Route::put('/settings/integrations/{provider}', [IntegrationSettingsController::class, 'update'])->name('settings.integrations.update'); Route::put('/settings/schedules', [ScheduleSettingsController::class, 'update'])->name('settings.schedules.update'); Route::post('/settings/schedules/{job}/run', [ScheduleSettingsController::class, 'run'])->name('settings.schedules.run'); Route::get('/dryer', [DryerController::class, 'index'])->name('dryer'); Route::get('/dryer/status', [DryerController::class, 'status'])->name('dryer.status'); Route::post('/dryer/control', [DryerController::class, 'control'])->name('dryer.control'); Route::post('/dryer/faults/acknowledge', [DryerController::class, 'acknowledge'])->name('dryer.acknowledge'); Route::get('/projects', [ProjectController::class, 'index'])->name('projects.index'); Route::get('/projects/create', [ProjectController::class, 'create'])->name('projects.create'); Route::post('/projects', [ProjectController::class, 'store'])->name('projects.store'); Route::get('/projects/{project}', [ProjectController::class, 'show'])->name('projects.show'); Route::get('/projects/{project}/edit', [ProjectController::class, 'edit'])->name('projects.edit'); Route::patch('/projects/{project}', [ProjectController::class, 'update'])->name('projects.update'); Route::post('/projects/{project}/archive', [ProjectController::class, 'archive'])->name('projects.archive'); Route::post('/projects/{project}/revisions', [ProjectRevisionController::class, 'store'])->name('projects.revisions.store'); Route::post('/projects/{project}/revisions/{revision}/approve', [ProjectRevisionController::class, 'approve'])->name('projects.revisions.approve'); Route::post('/projects/{project}/revisions/{revision}/confirm-current', [ProjectCurrentRevisionController::class, 'update'])->name('projects.revisions.confirm-current'); Route::delete('/projects/{project}/current-revision', [ProjectCurrentRevisionController::class, 'destroy'])->name('projects.current-revision.clear'); Route::get('/projects/{project}/files/{file}/download', [ProjectFileController::class, 'download'])->name('projects.files.download'); Route::post('/projects/{project}/files/{file}/render', [ProjectFileRenderController::class, 'store'])->name('projects.files.render'); Route::get('/projects/{project}/files/{file}/render/preview', [ProjectFileRenderController::class, 'preview'])->name('projects.files.render.preview'); Route::get('/projects/{project}/files/{file}/render/download', [ProjectFileRenderController::class, 'download'])->name('projects.files.render.download'); Route::post('/projects/{project}/listings', [ProjectListingLinkController::class, 'store'])->name('projects.listings.store'); Route::delete('/projects/{project}/listings/{listingLink}', [ProjectListingLinkController::class, 'destroy'])->name('projects.listings.destroy'); Route::post('/projects/{project}/cost-snapshots', [ProjectCostSnapshotController::class, 'store'])->name('projects.cost-snapshots.store'); Route::post('/projects/{project}/listings/{listingLink}/release', [ProjectReleaseController::class, 'store'])->name('projects.listings.release'); Route::post('/projects/{project}/listings/{listingLink}/revert', [ProjectReleaseController::class, 'revert'])->name('projects.listings.revert'); Route::get('/users', [UserController::class, 'index'])->name('users.index'); Route::post('/users', [UserController::class, 'store'])->name('users.store'); Route::patch('/users/{user}', [UserController::class, 'update'])->name('users.update'); Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('users.destroy'); });