You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
8.2 KiB

5 months ago
<?php
use App\Http\Controllers\Api\Admin\AdminMenuController;
3 months ago
use App\Http\Controllers\Api\Admin\AdminUserController;
use App\Http\Controllers\Api\Admin\ApplicationController as AdminApplicationController;
5 months ago
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;
4 months ago
use App\Http\Controllers\Api\Admin\DashboardController as AdminDashboardController;
5 months ago
use App\Http\Controllers\Api\Admin\FormSchemaDefinitionController as AdminFormSchemaDefinitionController;
3 months ago
use App\Http\Controllers\Api\Admin\ManageReportController;
use App\Http\Controllers\Api\Admin\PublicSourceChannelController as AdminPublicSourceChannelController;
5 months ago
use App\Http\Controllers\Api\Admin\ReviewerController as AdminReviewerController;
use App\Http\Controllers\Api\Admin\ReviewerScopeController as AdminReviewerScopeController;
use App\Http\Controllers\Api\Admin\SignupChannelController as AdminSignupChannelController;
5 months ago
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\PublicSourceChannelController;
5 months ago
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::get('public/source-channels/resolve', [PublicSourceChannelController::class, 'resolve']);
5 months ago
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']);
3 months ago
Route::put('auth/password', [ReviewAuthController::class, 'changePassword']);
2 months ago
Route::post('auth/password', [ReviewAuthController::class, 'changePassword']);
Route::patch('auth/password', [ReviewAuthController::class, 'changePassword']);
5 months ago
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 () {
4 months ago
Route::put('auth/password', [AdminAuthController::class, 'changePassword']);
2 months ago
Route::post('auth/password', [AdminAuthController::class, 'changePassword']);
Route::patch('auth/password', [AdminAuthController::class, 'changePassword']);
5 months ago
Route::get('me/menus', [AdminMenuController::class, 'index']);
4 months ago
Route::get('competitions/{competition}/dashboard', [AdminDashboardController::class, 'show']);
3 months ago
Route::get('competitions/{competition}/manage/report', [ManageReportController::class, 'show']);
5 months ago
Route::get('competitions/{competition}/reviewer-scope-track-counts', [AdminReviewerScopeController::class, 'countsByTrack']);
Route::apiResource('public-source-channels', AdminPublicSourceChannelController::class)
->parameters([
'public-source-channels' => 'public_source_channel',
]);
5 months ago
Route::apiResource('competitions', AdminCompetitionController::class);
/** scoped() 无参即可;切勿写 `'track' => 'tracks'`,Laravel 会把 `tracks` 当成子表列名导致 SQL 错误 */
Route::apiResource('competitions.tracks', AdminCompetitionTrackController::class)->scoped();
Route::apiResource('competitions.signup-channels', AdminSignupChannelController::class)
->scoped()
->parameters([
'signup-channels' => 'signup_channel',
]);
3 months ago
Route::get('competitions/{competition}/applications/export/meta', [AdminApplicationController::class, 'exportMeta']);
3 months ago
Route::get('competitions/{competition}/applications/export', [AdminApplicationController::class, 'export']);
Route::get('competitions/{competition}/applications', [AdminApplicationController::class, 'index']);
3 months ago
Route::post('competitions/{competition}/applications/batch-review-result', [AdminApplicationController::class, 'batchReviewResult']);
Route::get('competitions/{competition}/applications/{application}/files/{file}/download', [AdminApplicationController::class, 'downloadFile'])
->whereNumber('competition')
->whereNumber('application')
->whereNumber('file');
2 months ago
Route::post('competitions/{competition}/applications/{application}/impersonate', [AdminApplicationController::class, 'impersonate'])
->whereNumber('competition')
->whereNumber('application');
Route::get('competitions/{competition}/applications/{application}', [AdminApplicationController::class, 'show'])
->whereNumber('competition')
->whereNumber('application');
2 months ago
Route::patch('competitions/{competition}/applications/{application}/review-eligible', [AdminApplicationController::class, 'updateReviewEligible'])
->whereNumber('competition')
->whereNumber('application');
5 months ago
Route::apiResource('competitions.form-schemas', AdminFormSchemaDefinitionController::class)
->scoped()
->parameters([
'form-schemas' => 'form_schema',
]);
Route::apiResource('reviewers', AdminReviewerController::class);
2 months ago
Route::post('reviewers/{reviewer}/delete', [AdminReviewerController::class, 'destroy'])
->whereNumber('reviewer');
5 months ago
Route::get('reviewer-scopes', [AdminReviewerScopeController::class, 'index']);
Route::post('reviewer-scopes', [AdminReviewerScopeController::class, 'store']);
2 months ago
Route::delete('reviewer-scopes/{reviewer_scope}', [AdminReviewerScopeController::class, 'destroy'])
->whereNumber('reviewer_scope');
/** 部分网关/WAF 会挂起 DELETE/PUT;提供 POST 删除兜底 */
Route::post('reviewer-scopes/{reviewer_scope}/delete', [AdminReviewerScopeController::class, 'destroy'])
->whereNumber('reviewer_scope');
3 months ago
Route::apiResource('admin-users', AdminUserController::class)->parameters([
'admin-users' => 'admin_user',
]);
2 months ago
Route::post('admin-users/{admin_user}/delete', [AdminUserController::class, 'destroy'])
->whereNumber('admin_user');
5 months ago
});
});
});
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']);
3 months ago
Route::post('/applications/current/save', [ApplicationController::class, 'update']);
5 months ago
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']);
3 months ago
Route::post('/applications/current/files/{file}/delete', [ApplicationFileController::class, 'destroy']);
5 months ago
});