feat: ship creator journey v2 and profile updates

This commit is contained in:
2026-04-12 21:42:07 +02:00
parent a2457f4e49
commit d5cff21ea2
335 changed files with 20147 additions and 1545 deletions

View File

@@ -89,10 +89,10 @@ Route::prefix('explore')->name('explore.')->group(function () {
Route::get('/members', fn () => redirect()->route('creators.top', request()->query(), 301))->name('members.redirect');
Route::get('/memebers', fn () => redirect()->route('creators.top', request()->query(), 301))->name('memebers.redirect');
Route::get('/{type}', [ExploreController::class, 'byType'])
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('type', '[a-z0-9][a-z0-9\-]*')
->name('type');
Route::get('/{type}/{mode}', [ExploreController::class, 'byTypeMode'])
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('type', '[a-z0-9][a-z0-9\-]*')
->where('mode', 'trending|new-hot|best|latest')
->name('type.mode');
});
@@ -160,10 +160,10 @@ Route::middleware('throttle:60,1')->group(function () {
Route::prefix('rss/explore')->name('rss.explore.')->group(function () {
Route::get('/{type}', [ExploreFeedController::class, 'byType'])
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('type', '[a-z0-9][a-z0-9\-]*')
->name('type');
Route::get('/{type}/{mode}', [ExploreFeedController::class, 'byTypeMode'])
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('type', '[a-z0-9][a-z0-9\-]*')
->where('mode', 'trending|latest|best')
->name('type.mode');
});
@@ -623,6 +623,12 @@ Route::middleware(['auth', 'admin.moderation'])->prefix('cp/cards')->name('cp.ca
Route::patch('/categories/{category}', [\App\Http\Controllers\Settings\NovaCardAdminController::class, 'updateCategory'])->whereNumber('category')->name('categories.update');
});
Route::middleware(['artwork.maturity.access'])->prefix('cp/maturity')->name('cp.maturity.')->group(function () {
Route::get('/', [\App\Http\Controllers\Settings\ArtworkMaturityAdminController::class, 'index'])->name('index');
Route::get('/queue', [\App\Http\Controllers\Settings\ArtworkMaturityAdminController::class, 'list'])->name('list');
Route::post('/{artwork:id}/review', [\App\Http\Controllers\Settings\ArtworkMaturityAdminController::class, 'review'])->whereNumber('artwork')->name('review');
});
// ── SETTINGS / PROFILE EDIT ───────────────────────────────────────────────────
Route::middleware(['auth', 'normalize.username', 'ensure.onboarding.complete'])->group(function () {
Route::get('/profile', fn () => redirect()->route('dashboard.profile', [], 301))->name('legacy.profile.redirect');
@@ -644,6 +650,7 @@ Route::middleware(['auth', 'normalize.username', 'ensure.onboarding.complete'])-
->name('settings.email.verify');
Route::post('/settings/personal/update', [ProfileController::class, 'updatePersonalSection'])->middleware('forum.bot.protection:profile_update')->name('settings.personal.update');
Route::post('/settings/notifications/update', [ProfileController::class, 'updateNotificationsSection'])->middleware('forum.bot.protection:profile_update')->name('settings.notifications.update');
Route::post('/settings/content/update', [ProfileController::class, 'updateContentPreferencesSection'])->middleware('forum.bot.protection:profile_update')->name('settings.content.update');
Route::post('/settings/security/password', [ProfileController::class, 'updateSecurityPassword'])->middleware('forum.bot.protection:profile_update')->name('settings.security.password');
Route::get('/settings/collections/create', [CollectionManageController::class, 'create'])->name('settings.collections.create');
@@ -730,6 +737,9 @@ Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
return [
'id' => $ct->id,
'name' => $ct->name,
'slug' => $ct->slug,
'mascot_url' => $ct->mascot_url,
'cover_art_url' => $ct->cover_art_url,
'categories' => $ct->rootCategories->map(function ($c) {
return [
'id' => $c->id,
@@ -786,6 +796,9 @@ Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
return [
'id' => $ct->id,
'name' => $ct->name,
'slug' => $ct->slug,
'mascot_url' => $ct->mascot_url,
'cover_art_url' => $ct->cover_art_url,
'categories' => $ct->rootCategories->map(function ($c) {
return [
'id' => $c->id,
@@ -892,12 +905,12 @@ Route::bind('artwork', function ($value) {
});
Route::get('/{contentTypeSlug}/{categoryPath}/{artwork}', [BrowseGalleryController::class, 'showArtwork'])
->where('contentTypeSlug', 'photography|wallpapers|skins|other|digital-art')
->where('contentTypeSlug', '[a-z0-9][a-z0-9\-]*')
->where('categoryPath', '[^/]+(?:/[^/]+)*')
->name('artworks.show');
Route::get('/{contentTypeSlug}/{path?}', [BrowseGalleryController::class, 'content'])
->where('contentTypeSlug', 'photography|wallpapers|skins|other|digital-art')
->where('contentTypeSlug', '[a-z0-9][a-z0-9\-]*')
->where('path', '.*')
->name('content.route');