Commit workspace changes

This commit is contained in:
2026-04-05 19:42:33 +02:00
parent 148a3bbe43
commit 08ad757bcb
312 changed files with 35149 additions and 399 deletions

View File

@@ -19,6 +19,7 @@ use App\Http\Requests\Collections\UpdateCollectionPresentationRequest;
use App\Http\Requests\Collections\UpdateCollectionSeriesRequest;
use App\Models\Artwork;
use App\Models\Collection;
use App\Models\Group;
use App\Services\CollectionCollaborationService;
use App\Services\CollectionCampaignService;
use App\Services\CollectionCommentService;
@@ -56,6 +57,12 @@ class CollectionManageController extends Controller
$initialMode = $request->query('mode') === Collection::MODE_SMART
? Collection::MODE_SMART
: Collection::MODE_MANUAL;
$group = null;
if ($request->filled('group')) {
$group = Group::query()->with(['owner.profile', 'members'])->where('slug', (string) $request->query('group'))->first();
abort_if($group && ! $group->canManageCollections($request->user()), 403);
}
return Inertia::render('Collection/CollectionManage', [
'mode' => 'create',
@@ -67,7 +74,7 @@ class CollectionManageController extends Controller
'smartRuleOptions' => $this->collections->getSmartRuleOptions($request->user()),
'initialMode' => $initialMode,
'featuredLimit' => (int) config('collections.featured_limit', 3),
'owner' => $this->ownerPayload($request),
'owner' => $this->ownerPayload($request, $group),
'members' => [],
'submissions' => [],
'comments' => [],
@@ -75,7 +82,7 @@ class CollectionManageController extends Controller
'canonicalTarget' => null,
'inviteExpiryDays' => (int) config('collections.invites.expires_after_days', 7),
'endpoints' => [
'store' => route('settings.collections.store'),
'store' => route('settings.collections.store', $group ? ['group' => $group->slug] : []),
'smartPreview' => route('settings.collections.smart.preview'),
'profileCollections' => route('profile.tab', [
'username' => strtolower((string) $request->user()->username),
@@ -337,7 +344,11 @@ class CollectionManageController extends Controller
{
$artwork = $this->resolveArtworkFromRequest($request, 4);
abort_unless((int) $artwork->user_id === (int) $request->user()->id, 404);
if ((int) ($artwork->group_id ?? 0) > 0) {
abort_unless($artwork->group?->canManageCollections($request->user()) ?? false, 404);
} else {
abort_unless((int) $artwork->user_id === (int) $request->user()->id, 404);
}
return response()->json([
'data' => $this->collections->getCollectionOptionsForArtwork($request->user(), $artwork),
@@ -464,6 +475,21 @@ class CollectionManageController extends Controller
{
$user = $request->user();
if ($request->filled('group')) {
$group = Group::query()->with('owner.profile')->where('slug', (string) $request->query('group'))->first();
if ($group && $group->canManageCollections($user)) {
return [
'id' => $group->id,
'username' => null,
'name' => $group->name,
'avatar_url' => $group->avatarUrl(),
'group_slug' => $group->slug,
'profile_url' => $group->publicUrl(),
];
}
}
return [
'id' => $user->id,
'username' => $user->username,