fix(workspace): unique slug generation, null-safe middleware auth guard

main
boban 2026-05-16 00:43:55 +02:00
parent 49f2e3b00f
commit 587aa09b40
2 changed files with 14 additions and 2 deletions

View File

@ -13,7 +13,7 @@ class CreateWorkspace
{
$workspace = Workspace::create([
'name' => $data['name'],
'slug' => Str::slug($data['name']),
'slug' => $this->uniqueSlug(Str::slug($data['name'])),
'owner_id' => $owner->id,
]);
@ -30,4 +30,15 @@ class CreateWorkspace
return $workspace;
}
private function uniqueSlug(string $base): string
{
$slug = $base;
$i = 2;
while (Workspace::where('slug', $slug)->exists()) {
$slug = "{$base}-{$i}";
$i++;
}
return $slug;
}
}

View File

@ -19,7 +19,8 @@ class ResolveWorkspace
$workspace = Workspace::where('ulid', $ulid)->firstOrFail();
// 404 instead of 403 — don't leak existence across workspace boundaries
if (! $request->user()?->workspaceMemberships()->where('workspace_id', $workspace->id)->exists()) {
$user = $request->user();
if (! $user || ! $user->workspaceMemberships()->where('workspace_id', $workspace->id)->exists()) {
abort(404);
}