|
|
<?php
|
|
|
|
|
|
use App\Http\Controllers\Api\Admin\AdminMenuController;
|
|
|
use App\Http\Controllers\Api\Admin\AuthController as AdminAuthController;
|
|
|
use App\Http\Controllers\Api\Admin\CompetitionController as AdminCompetitionController;
|
|
|
use App\Http\Controllers\Api\Admin\CompetitionTrackController as AdminCompetitionTrackController;
|
|
|
use App\Http\Controllers\Api\Admin\FormSchemaDefinitionController as AdminFormSchemaDefinitionController;
|
|
|
use App\Http\Controllers\Api\Admin\ReviewerController as AdminReviewerController;
|
|
|
use App\Http\Controllers\Api\Admin\ReviewerScopeController as AdminReviewerScopeController;
|
|
|
use App\Http\Controllers\Api\ApplicationController;
|
|
|
use App\Http\Controllers\Api\ApplicationFileController;
|
|
|
use App\Http\Controllers\Api\AuthSmsController;
|
|
|
use App\Http\Controllers\Api\PublicCompetitionController;
|
|
|
use App\Http\Controllers\Api\ReviewApplicationController;
|
|
|
use App\Http\Controllers\Api\ReviewAuthController;
|
|
|
use App\Http\Controllers\Api\UserProfileController;
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
|
|
Route::prefix('v1')->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']);
|
|
|
});
|