From f1600793b2f3f0898b321de734bf23b4fc3e547a Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 24 Mar 2025 19:10:47 +0000 Subject: [PATCH] feat: restrict inviting and removing users to workspace admins --- apps/web/src/views/members/index.tsx | 22 +++++++++++----------- packages/db/seed.sql | 13 ++++++++++++- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/apps/web/src/views/members/index.tsx b/apps/web/src/views/members/index.tsx index 64ed5027..6e0e85d8 100644 --- a/apps/web/src/views/members/index.tsx +++ b/apps/web/src/views/members/index.tsx @@ -2,6 +2,7 @@ import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2"; import { twMerge } from "tailwind-merge"; import Avatar from "~/components/Avatar"; +import Button from "~/components/Button"; import Dropdown from "~/components/Dropdown"; import Modal from "~/components/modal"; import { NewWorkspaceForm } from "~/components/NewWorkspaceForm"; @@ -111,7 +112,12 @@ export default function MembersPage() { )} -
+
- +
diff --git a/packages/db/seed.sql b/packages/db/seed.sql index a03bd2b0..6722182a 100644 --- a/packages/db/seed.sql +++ b/packages/db/seed.sql @@ -118,6 +118,17 @@ AS $$ ); $$; +CREATE OR REPLACE FUNCTION is_workspace_member(user_id UUID, workspace_id BIGINT) +RETURNS BOOLEAN +LANGUAGE SQL +AS $$ + SELECT EXISTS ( + SELECT 1 + FROM workspace_members + WHERE "userId" = user_id AND "workspaceId" = workspace_id + ); +$$; + alter table "_card_labels" enable row level security; alter table "_card_workspace_members" enable row level security; alter table "_card_activity" enable row level security; @@ -676,7 +687,7 @@ FOR SELECT TO authenticated USING ( "userId" = auth.uid() OR - is_workspace_admin(auth.uid(), "workspaceId") + is_workspace_member(auth.uid(), "workspaceId") ); CREATE POLICY "Allow admins to add workspace members"