|
|
<?php
|
|
|
|
|
|
use App\Http\Controllers\Api\ApplicationFileController;
|
|
|
use Illuminate\Support\Facades\File;
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
|
|
/*
|
|
|
|--------------------------------------------------------------------------
|
|
|
| Web Routes
|
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
|
|
| Here is where you can register web routes for your application. These
|
|
|
| routes are loaded by the RouteServiceProvider and all of them will
|
|
|
| be assigned to the "web" middleware group. Make something great!
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
Route::get('/', function () {
|
|
|
return view('welcome');
|
|
|
});
|
|
|
|
|
|
/** 选手端附件预览:签名临时 URL,避免仅依赖 public/storage → storage/app/public 的软链(未 link 时 /storage/... 404) */
|
|
|
Route::get('/participant/application-files/{file}', [ApplicationFileController::class, 'downloadSigned'])
|
|
|
->middleware('signed')
|
|
|
->whereNumber('file')
|
|
|
->name('participant.application-file.download');
|
|
|
|
|
|
/** cxxfds-web 生产构建产出目录:public/admin */
|
|
|
Route::redirect('/admin', '/admin/', 301);
|
|
|
|
|
|
Route::get('/admin/{path?}', function (?string $path = null) {
|
|
|
if ($path !== null && $path !== '') {
|
|
|
$candidate = public_path('admin/'.$path);
|
|
|
if (File::isFile($candidate)) {
|
|
|
return response()->file($candidate);
|
|
|
}
|
|
|
}
|
|
|
$index = public_path('admin/index.html');
|
|
|
if (! File::exists($index)) {
|
|
|
abort(503, 'Admin frontend not built. Run npm run build in cxxfds-web.');
|
|
|
}
|
|
|
|
|
|
return response()->file($index, ['Content-Type' => 'text/html; charset=UTF-8']);
|
|
|
})->where('path', '.*')->name('admin.spa');
|