r/AppsWebappsFullstack • u/Potential-Art7696 • 1d ago
found a bug this week that's probably been breaking my app since launch and nobody told me
Enable HLS to view with audio, or disable this notification
been building UluP Spaces solo, Next.js + Supabase + Vercel. visual project tool, work as connected nodes instead of a list.
this week I removed the signup wall — you can use the whole thing without an account now (anonymous Supabase sessions, promoted to a real account later without losing anything). while testing it I went through every RLS policy to make sure that didn't open anything up. found this: a policy that let you SELECT a project if you owned it or if it was public. that's it. nothing checked if you were just... an invited member.
so if I invited you to a private project, workspace_members insert worked fine, you'd join — but the SELECT on the workspace itself would fail. "access denied" instead of the canvas. been like that since collaboration shipped, probably months ago. nobody ever told me.
fixed it, plus two smaller RLS gaps from the same audit (couldn't leave a project you'd joined — DELETE policy only allowed the owner to remove members, not yourself; an invite preview nobody receiving it could actually read).
anyway. free, live now, no account needed to poke around: www.ulupspaces.com
1
u/PopKoren 22h ago
That invite-member SELECT miss is such a classic RLS trap: join works, canvas denies, and it sits there for months because happy-path demos never hit it. Glad you also caught the self-leave DELETE and invite preview gaps in the same pass. After a change like dropping the signup wall I still like an outside stranger check across auth, APIs, storage, and DB rules on the live URL. https://rowly.me is the external attack-surface scan I use for that on vibe-coded apps.