fix(workspace): unique slug generation, null-safe middleware auth guard
parent
49f2e3b00f
commit
587aa09b40
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue