group(function () { Route::get('public/competitions/by-slug/{slug}', [PublicCompetitionController::class, 'showBySlug']); Route::prefix('review')->group(function () { Route::post('auth/login', [ReviewAuthController::class, 'login']); Route::middleware(['auth:sanctum', 'reviewer'])->group(function () { Route::get('me', [ReviewAuthController::class, 'me']); Route::get('applications', [ReviewApplicationController::class, 'index']); Route::get('applications/{application}/files/{file}/download', [ReviewApplicationController::class, 'downloadFile']) ->whereNumber('application') ->whereNumber('file'); Route::post('applications/{application}/score', [ReviewApplicationController::class, 'submitScore']) ->whereNumber('application'); Route::get('applications/{application}', [ReviewApplicationController::class, 'show']) ->whereNumber('application'); }); }); Route::prefix('admin')->group(function () { Route::post('auth/login', [AdminAuthController::class, 'login']); Route::middleware(['auth:sanctum', 'admin'])->group(function () { Route::get('me/menus', [AdminMenuController::class, 'index']); Route::get('competitions/{competition}/reviewer-scope-track-counts', [AdminReviewerScopeController::class, 'countsByTrack']); Route::apiResource('competitions', AdminCompetitionController::class); /** scoped() 无参即可;切勿写 `'track' => 'tracks'`,Laravel 会把 `tracks` 当成子表列名导致 SQL 错误 */ Route::apiResource('competitions.tracks', AdminCompetitionTrackController::class)->scoped(); Route::apiResource('competitions.form-schemas', AdminFormSchemaDefinitionController::class) ->scoped() ->parameters([ 'form-schemas' => 'form_schema', ]); Route::apiResource('reviewers', AdminReviewerController::class); Route::get('reviewer-scopes', [AdminReviewerScopeController::class, 'index']); Route::post('reviewer-scopes', [AdminReviewerScopeController::class, 'store']); Route::delete('reviewer-scopes/{reviewer_scope}', [AdminReviewerScopeController::class, 'destroy']); }); }); }); Route::post('/auth/sms/send', [AuthSmsController::class, 'send']); Route::post('/auth/sms/login', [AuthSmsController::class, 'login']); Route::middleware('auth:sanctum')->group(function () { Route::get('/me', [UserProfileController::class, 'show']); Route::get('/applications/current', [ApplicationController::class, 'show']); Route::put('/applications/current', [ApplicationController::class, 'update']); Route::post('/applications/current/submit', [ApplicationController::class, 'submit']); Route::post('/applications/current/files', [ApplicationFileController::class, 'store']); Route::delete('/applications/current/files/{file}', [ApplicationFileController::class, 'destroy']); });