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.

185 lines
12 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;
1 month ago
use App\Http\Controllers\Api\Admin\AudienceCheckinController as AdminAudienceCheckinController;
use App\Http\Controllers\Api\Admin\AudienceRegistrationController as AdminAudienceRegistrationController;
use App\Http\Controllers\Api\Admin\AudienceSessionController as AdminAudienceSessionController;
5 months ago
use App\Http\Controllers\Api\Admin\AuthController as AdminAuthController;
1 month ago
use App\Http\Controllers\Api\Admin\CompetitionAdminController as AdminCompetitionAdminController;
5 months ago
use App\Http\Controllers\Api\Admin\CompetitionController as AdminCompetitionController;
4 weeks ago
use App\Http\Controllers\Api\Admin\CompetitionLogoController as AdminCompetitionLogoController;
5 months ago
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;
1 month ago
use App\Http\Controllers\Api\AudienceAuthController;
use App\Http\Controllers\Api\AudienceController;
5 months ago
use App\Http\Controllers\Api\AuthSmsController;
1 month ago
use App\Http\Controllers\Api\ManageAuthController;
5 months ago
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');
});
});
1 month ago
Route::prefix('manage')->group(function () {
Route::post('auth/login', [ManageAuthController::class, 'login']);
Route::middleware(['auth:sanctum', 'portal'])->group(function () {
Route::get('me', [ManageAuthController::class, 'me']);
Route::put('auth/password', [ManageAuthController::class, 'changePassword']);
Route::post('auth/password', [ManageAuthController::class, 'changePassword']);
Route::patch('auth/password', [ManageAuthController::class, 'changePassword']);
});
});
5 months ago
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']);
Route::apiResource('public-source-channels', AdminPublicSourceChannelController::class)
->parameters([
'public-source-channels' => 'public_source_channel',
]);
5 months ago
Route::apiResource('competitions', AdminCompetitionController::class);
4 weeks ago
Route::post('competitions/{competition}/logo', [AdminCompetitionLogoController::class, 'store'])
->whereNumber('competition');
Route::delete('competitions/{competition}/logo', [AdminCompetitionLogoController::class, 'destroy'])
->whereNumber('competition');
5 months ago
/** scoped() 无参即可;切勿写 `'track' => 'tracks'`Laravel 会把 `tracks` 当成子表列名导致 SQL 错误 */
4 weeks ago
Route::apiResource('competitions.tracks', AdminCompetitionTrackController::class)
->except(['index'])
->scoped();
Route::apiResource('competitions.signup-channels', AdminSignupChannelController::class)
->scoped()
->parameters([
'signup-channels' => 'signup_channel',
]);
1 month ago
Route::apiResource('competitions.form-schemas', AdminFormSchemaDefinitionController::class)
->scoped()
->parameters([
'form-schemas' => 'form_schema',
]);
Route::post('competitions/{competition}/applications/{application}/impersonate', [AdminApplicationController::class, 'impersonate'])
->whereNumber('competition')
->whereNumber('application');
Route::apiResource('admin-users', AdminUserController::class)->parameters([
'admin-users' => 'admin_user',
]);
Route::post('admin-users/{admin_user}/delete', [AdminUserController::class, 'destroy'])
->whereNumber('admin_user');
});
Route::middleware(['auth:sanctum', 'competition.access'])->group(function () {
Route::get('competitions/{competition}/dashboard', [AdminDashboardController::class, 'show']);
Route::get('competitions/{competition}/manage/report', [ManageReportController::class, 'show']);
Route::get('competitions/{competition}/reviewer-scope-track-counts', [AdminReviewerScopeController::class, 'countsByTrack']);
4 weeks ago
Route::get('competitions/{competition}/reviewer-scope-region-counts', [AdminReviewerScopeController::class, 'countsByEventLocation']);
1 month ago
Route::apiResource('competitions.audience-sessions', AdminAudienceSessionController::class)
->parameters([
'audience-sessions' => 'audience_session',
])
->scoped();
Route::post('competitions/{competition}/audience-sessions/{audience_session}/delete', [AdminAudienceSessionController::class, 'destroy'])
->whereNumber('competition')
->whereNumber('audience_session');
Route::get('competitions/{competition}/audience-registrations/export', [AdminAudienceRegistrationController::class, 'export']);
Route::get('competitions/{competition}/audience-registrations', [AdminAudienceRegistrationController::class, 'index']);
Route::post('competitions/{competition}/audience-checkin', [AdminAudienceCheckinController::class, 'store']);
Route::get('competitions/{competition}/audience-checkin-stats', [AdminAudienceCheckinController::class, 'stats']);
Route::post('competitions/{competition}/audience-registrations/{audience_registration}/checkin', [AdminAudienceCheckinController::class, 'storeByRegistration'])
->whereNumber('competition')
->whereNumber('audience_registration');
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');
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');
4 weeks ago
Route::get('competitions/{competition}/tracks', [AdminCompetitionTrackController::class, 'index']);
Route::apiResource('competitions.admins', AdminCompetitionAdminController::class)
->parameters([
'admins' => 'competition_admin',
])
->scoped();
Route::post('competitions/{competition}/admins/{competition_admin}/delete', [AdminCompetitionAdminController::class, 'destroy'])
->whereNumber('competition')
->whereNumber('competition_admin');
1 month ago
Route::get('reviewers', [AdminReviewerController::class, 'index']);
4 weeks ago
Route::apiResource('reviewers', AdminReviewerController::class)->except(['index']);
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');
Route::post('reviewer-scopes/{reviewer_scope}/delete', [AdminReviewerScopeController::class, 'destroy'])
->whereNumber('reviewer_scope');
5 months ago
});
});
1 month ago
Route::prefix('audience')->middleware(['auth:sanctum', 'audience'])->group(function () {
Route::get('me', [AudienceController::class, 'me']);
Route::get('sessions', [AudienceController::class, 'sessions']);
Route::post('registrations', [AudienceController::class, 'storeRegistration']);
Route::get('registrations', [AudienceController::class, 'registrations']);
});
5 months ago
});
Route::post('/auth/sms/send', [AuthSmsController::class, 'send']);
Route::post('/auth/sms/login', [AuthSmsController::class, 'login']);
1 month ago
Route::post('/auth/sms/audience/login', [AudienceAuthController::class, 'login']);
5 months ago
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
});