[]]); }); Route::get('/privacy/{file}', function (string $file) { $path = base_path("documents/mobile/privacy/{$file}.md"); abort_unless(File::exists($path), 404); return view('privacy', [ 'content' => File::get($path), ]); }); Route::get('/book/{id}', function ($id) { return view('book', ['id' => $id]); }); Route::redirect('/privacy', '/privacy/index'); Route::post('/theme/toggle', [BookController::class, 'toggleTheme'])->name('theme.toggle'); Route::post('/logout', function () { // Handle logout //Auth::logout(); return redirect('/login'); })->name('logout'); Route::prefix('library')->group(function () { Route::get('/', [CategoryController::class, 'index'])->name('library.home'); Route::get('/category/{id}', [CategoryController::class, 'show'])->name('library.category.show'); Route::get('/book/{id}', [BookController::class, 'show'])->name('library.book.show'); Route::get('/book/{id}/read', [BookController::class, 'read'])->name('library.book.read'); Route::get('/wiki', [BookController::class, 'read'])->name('library.wiki'); Route::get('/download', [BookController::class, 'read'])->name('library.download'); }); // 博客路由 Route::prefix('blog')->group(function () { Route::get('/{user}', [BlogController::class, 'index'])->name('blog.index')->where('user', '[a-zA-Z0-9_-]+'); Route::get('/{user}/categories', [BlogController::class, 'categories'])->name('blog.categories'); Route::get('/{user}/category/{category1}/{category2?}/{category3?}/{category4?}/{category5?}', [BlogController::class, 'category'])->name('blog.category'); Route::get('/{user}/archives', [BlogController::class, 'archives'])->name('blog.archives'); Route::get('/{user}/archives/{year}', [BlogController::class, 'archivesByYear'])->name('blog.archives.year'); Route::get('/{user}/tag/{tag}', [BlogController::class, 'tag'])->name('blog.tag'); Route::get('/{user}/search', [BlogController::class, 'search'])->name('blog.search'); Route::get('/{user}/{post}', [BlogController::class, 'show']) ->name('blog.show') ->where([ 'user' => '[a-zA-Z0-9_-]+', 'post' => '[a-zA-Z0-9_-]+', ]); }); Route::group(['prefix' => 'tools'], function () { Route::get('/nissaya_format_converter', function () { return view('nissaya_format_converter'); }); });