route('workspace'); if (! $ulid) { return $next($request); } $workspace = Workspace::where('ulid', $ulid)->firstOrFail(); // 404 instead of 403 — don't leak existence across workspace boundaries $user = $request->user(); $isMember = $user && $user->workspaceMemberships()->where('workspace_id', $workspace->id)->exists(); $isOwner = $user && $workspace->owner_id === $user->id; if (! $isMember && ! $isOwner) { abort(404); } $request->merge(['current_workspace' => $workspace]); app()->instance('current_workspace', $workspace); return $next($request); } }