Wire new routes and environment keys for the recent modules.
Register AdSense, artwork review, comment captcha, lazy collections, and upload review props, and document the matching env vars and CLI commands.
This commit is contained in:
+14
-1
@@ -486,6 +486,11 @@ Route::middleware(['web', 'auth', 'admin.moderation'])->prefix('admin/uploads')-
|
||||
Route::get('pending', [\App\Http\Controllers\Api\Admin\UploadModerationController::class, 'pending'])
|
||||
->name('pending');
|
||||
|
||||
Route::get('{id}/preview', [\App\Http\Controllers\Api\Admin\UploadModerationController::class, 'preview'])
|
||||
->middleware('signed')
|
||||
->whereUuid('id')
|
||||
->name('preview');
|
||||
|
||||
Route::post('{id}/approve', [\App\Http\Controllers\Api\Admin\UploadModerationController::class, 'approve'])
|
||||
->whereUuid('id')
|
||||
->name('approve');
|
||||
@@ -495,6 +500,12 @@ Route::middleware(['web', 'auth', 'admin.moderation'])->prefix('admin/uploads')-
|
||||
->name('reject');
|
||||
});
|
||||
|
||||
Route::middleware(['web', 'auth', 'admin.moderation'])->prefix('admin/artwork-review')->name('api.admin.artwork-review.')->group(function () {
|
||||
Route::get('pending', [\App\Http\Controllers\Api\Admin\ArtworkModerationController::class, 'pending'])->name('pending');
|
||||
Route::post('{id}/approve', [\App\Http\Controllers\Api\Admin\ArtworkModerationController::class, 'approve'])->whereNumber('id')->name('approve');
|
||||
Route::post('{id}/reject', [\App\Http\Controllers\Api\Admin\ArtworkModerationController::class, 'reject'])->whereNumber('id')->name('reject');
|
||||
});
|
||||
|
||||
Route::middleware(['web', 'auth', 'admin.moderation'])->prefix('admin/reports')->name('api.admin.reports.')->group(function () {
|
||||
Route::get('queue', [\App\Http\Controllers\Api\Admin\ModerationReportQueueController::class, 'index'])
|
||||
->name('queue');
|
||||
@@ -713,7 +724,7 @@ Route::middleware(['web', 'throttle:60,1'])
|
||||
->whereNumber('id')
|
||||
->name('api.artworks.comments.index');
|
||||
|
||||
Route::middleware(['web', 'auth', 'verified', 'normalize.username', 'throttle:20,1'])->group(function () {
|
||||
Route::middleware(['web', 'auth', 'verified', 'normalize.username', 'throttle:20,1', 'comment.captcha', 'forum.spam.detection:artwork_comment'])->group(function () {
|
||||
Route::post('artworks/{id}/comments', [\App\Http\Controllers\Api\ArtworkCommentController::class, 'store'])
|
||||
->whereNumber('id')
|
||||
->name('api.artworks.comments.store');
|
||||
@@ -901,6 +912,7 @@ Route::middleware(['web', 'auth', 'normalize.username', 'throttle:60,1'])
|
||||
// ── Profile API (public, throttled) ─────────────────────────────────────────
|
||||
// GET /api/profile/{username}/artworks?sort=latest|trending|rising|views|favs&cursor=...
|
||||
// GET /api/profile/{username}/favourites?cursor=...
|
||||
// GET /api/profile/{username}/collections
|
||||
// GET /api/profile/{username}/stats
|
||||
Route::middleware(['web', 'throttle:60,1'])
|
||||
->prefix('profile/{username}')
|
||||
@@ -909,6 +921,7 @@ Route::middleware(['web', 'throttle:60,1'])
|
||||
->group(function () {
|
||||
Route::get('artworks', [\App\Http\Controllers\Api\ProfileApiController::class, 'artworks'])->name('artworks');
|
||||
Route::get('favourites', [\App\Http\Controllers\Api\ProfileApiController::class, 'favourites'])->name('favourites');
|
||||
Route::get('collections', [\App\Http\Controllers\Api\ProfileApiController::class, 'collections'])->name('collections');
|
||||
Route::get('stats', [\App\Http\Controllers\Api\ProfileApiController::class, 'stats'])->name('stats');
|
||||
Route::get('featured-artworks', [\App\Http\Controllers\User\ProfileController::class, 'featuredArtworks'])->name('featured-artworks');
|
||||
Route::get('world-history', [\App\Http\Controllers\User\ProfileController::class, 'worldHistory'])->name('world-history');
|
||||
|
||||
@@ -40,6 +40,7 @@ use App\Http\Controllers\RSS\TagFeedController;
|
||||
use App\Http\Controllers\RSS\CreatorFeedController;
|
||||
use App\Http\Controllers\RSS\BlogFeedController;
|
||||
use App\Http\Controllers\Admin\AdminController;
|
||||
use App\Http\Controllers\Admin\AdsenseAnalyticsController;
|
||||
use App\Http\Controllers\Moderation\StaffApplicationsController;
|
||||
use App\Http\Controllers\Moderation\StoriesController as ModerationStoriesController;
|
||||
use App\Http\Controllers\Moderation\UsernameQueueController;
|
||||
@@ -78,6 +79,7 @@ use App\Http\Controllers\Settings\CollectionManageController;
|
||||
use App\Http\Controllers\Settings\CollectionProgrammingController;
|
||||
use App\Http\Controllers\Settings\CollectionSurfaceController;
|
||||
use App\Services\GroupMembershipService;
|
||||
use App\Services\Moderation\ArtworkUploadPolicy;
|
||||
use Inertia\Inertia;
|
||||
|
||||
Route::get('/build-info.json', BuildInfoController::class)->name('build-info');
|
||||
@@ -976,6 +978,10 @@ Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
|
||||
'filesCdnUrl' => config('cdn.files_url'),
|
||||
'chunkSize' => (int) config('uploads.chunk.max_bytes', 5242880),
|
||||
'chunkRequestTimeoutMs' => (int) config('uploads.chunk.request_timeout_ms', 45000),
|
||||
'max_secondary_categories' => (int) config('categories.max_secondary_categories', 5),
|
||||
'requires_upload_review' => $user
|
||||
? (bool) app(ArtworkUploadPolicy::class)->assess($user)['requires_review']
|
||||
: false,
|
||||
'feature_flags' => [
|
||||
'uploads_v2' => (bool) config('features.uploads_v2', false),
|
||||
],
|
||||
@@ -1036,6 +1042,10 @@ Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
|
||||
'filesCdnUrl' => config('cdn.files_url'),
|
||||
'chunkSize' => (int) config('uploads.chunk.max_bytes', 5242880),
|
||||
'chunkRequestTimeoutMs' => (int) config('uploads.chunk.request_timeout_ms', 45000),
|
||||
'max_secondary_categories' => (int) config('categories.max_secondary_categories', 5),
|
||||
'requires_upload_review' => $user
|
||||
? (bool) app(ArtworkUploadPolicy::class)->assess($user)['requires_review']
|
||||
: false,
|
||||
'feature_flags' => [
|
||||
'uploads_v2' => (bool) config('features.uploads_v2', false),
|
||||
],
|
||||
@@ -1069,6 +1079,18 @@ Route::middleware(['auth', 'verified', 'ensure.onboarding.complete'])->prefix('m
|
||||
Route::get('/{id}', [\App\Http\Controllers\Messaging\MessagesPageController::class, 'show'])->whereNumber('id')->name('show');
|
||||
});
|
||||
|
||||
Route::middleware(['auth', 'admin.role'])
|
||||
->prefix('admin/adsense')
|
||||
->name('admin.adsense.')
|
||||
->group(function (): void {
|
||||
Route::get('/', [AdsenseAnalyticsController::class, 'index'])->name('index');
|
||||
Route::get('/connect', [AdsenseAnalyticsController::class, 'connect'])->name('connect');
|
||||
Route::get('/oauth/callback', [AdsenseAnalyticsController::class, 'callback'])->name('callback');
|
||||
Route::post('/account', [AdsenseAnalyticsController::class, 'selectAccount'])->name('account');
|
||||
Route::post('/sync', [AdsenseAnalyticsController::class, 'sync'])->name('sync');
|
||||
Route::delete('/disconnect', [AdsenseAnalyticsController::class, 'disconnect'])->name('disconnect');
|
||||
});
|
||||
|
||||
Route::middleware(['auth'])
|
||||
->prefix('admin')
|
||||
->group(function () {
|
||||
|
||||
Reference in New Issue
Block a user