Skip to content

Commit

Permalink
Fix for archiving active document
Browse files Browse the repository at this point in the history
  • Loading branch information
lwjameson committed Oct 18, 2024
1 parent 4b717dd commit 98f5782
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion SQL Scripts/functions/archive_document_rpc.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ BEGIN
-- If the user is the creator or an Org Admin, archive the document
IF _row.created_by = auth.uid() OR is_admin_organization(auth.uid())
THEN
IF NOT EXISTS(SELECT 1 FROM public.project_documents pd WHERE pd.id = _document_id AND pd.is_archived IS FALSE )
IF NOT EXISTS(SELECT 1 FROM public.project_documents pd WHERE pd.document_id = _document_id AND pd.is_archived IS FALSE )
THEN
UPDATE public.documents d
SET is_archived = TRUE
Expand Down
38 changes: 38 additions & 0 deletions supabase/migrations/20241018201234_fix_archive_document_spc.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
set check_function_bodies = off;

CREATE OR REPLACE FUNCTION public.archive_document_rpc(_document_id uuid)
RETURNS boolean
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
DECLARE
_row public.documents % rowtype;
BEGIN
-- Check project policy that project documents can be updated by this user
IF NOT (check_action_policy_organization(auth.uid(), 'documents', 'UPDATE'))
THEN
RETURN FALSE;
END IF;

-- Get the document
SELECT * INTO _row FROM public.documents d WHERE d.id = _document_id;

-- If the user is the creator or an Org Admin, archive the document
IF _row.created_by = auth.uid() OR is_admin_organization(auth.uid())
THEN
IF NOT EXISTS(SELECT 1 FROM public.project_documents pd WHERE pd.document_id = _document_id AND pd.is_archived IS FALSE )
THEN
UPDATE public.documents d
SET is_archived = TRUE
WHERE d.id = _document_id;

RETURN TRUE;
END IF;
END IF;

RETURN FALSE;
END
$function$
;


0 comments on commit 98f5782

Please sign in to comment.