Skip to content

Commit 462c6a6

Browse files
itigges22claude
andcommitted
fix: add UPDATE/INSERT RLS policies for client workflow operations
Client approve/reject needs to UPDATE workflow_instances.current_node_id and UPDATE/INSERT workflow_active_steps. These operations were silently blocked by RLS because only SELECT policies existed for clients. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 163feff commit 462c6a6

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

supabase/migrations/20260324100000_client_portal_schema_fixes.sql

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,36 @@ CREATE POLICY client_portal_workflow_templates_select ON workflow_templates FOR
196196

197197
CREATE POLICY client_portal_accounts_select ON accounts FOR SELECT
198198
USING (user_is_client_for_account(id));
199+
200+
-- 7. Client UPDATE/INSERT policies for workflow state management
201+
202+
CREATE POLICY client_portal_workflow_instances_update ON workflow_instances FOR UPDATE
203+
USING (user_is_client_for_project(project_id))
204+
WITH CHECK (user_is_client_for_project(project_id));
205+
206+
CREATE POLICY client_portal_active_steps_update ON workflow_active_steps FOR UPDATE
207+
USING (
208+
EXISTS (
209+
SELECT 1 FROM workflow_instances wi
210+
WHERE wi.id = workflow_active_steps.workflow_instance_id
211+
AND user_is_client_for_project(wi.project_id)
212+
)
213+
);
214+
215+
CREATE POLICY client_portal_active_steps_insert ON workflow_active_steps FOR INSERT
216+
WITH CHECK (
217+
EXISTS (
218+
SELECT 1 FROM workflow_instances wi
219+
WHERE wi.id = workflow_active_steps.workflow_instance_id
220+
AND user_is_client_for_project(wi.project_id)
221+
)
222+
);
223+
224+
CREATE POLICY client_portal_workflow_connections_select ON workflow_connections FOR SELECT
225+
USING (
226+
EXISTS (
227+
SELECT 1 FROM workflow_instances wi
228+
WHERE wi.workflow_template_id = workflow_connections.workflow_template_id
229+
AND user_is_client_for_project(wi.project_id)
230+
)
231+
);

0 commit comments

Comments
 (0)