🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
|
||||
-- Corrigir a função generate_task_ref para evitar ambiguidade na coluna task_ref
|
||||
CREATE OR REPLACE FUNCTION public.generate_task_ref()
|
||||
RETURNS TEXT
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
next_num INTEGER;
|
||||
new_task_ref TEXT;
|
||||
BEGIN
|
||||
SELECT COALESCE(MAX(CAST(SUBSTRING(tasks.task_ref FROM 'T-(\d+)') AS INTEGER)), 0) + 1
|
||||
INTO next_num
|
||||
FROM public.tasks
|
||||
WHERE tasks.task_ref ~ '^T-\d+$';
|
||||
|
||||
new_task_ref := 'T-' || LPAD(next_num::TEXT, 4, '0');
|
||||
RETURN new_task_ref;
|
||||
END;
|
||||
$$;
|
||||
|
||||
-- Verificar e recriar as políticas RLS para garantir que estão funcionando corretamente
|
||||
DROP POLICY IF EXISTS "Users can view tasks assigned to them or created by them" ON public.tasks;
|
||||
DROP POLICY IF EXISTS "Authenticated users can create tasks" ON public.tasks;
|
||||
DROP POLICY IF EXISTS "Users can update their own tasks or assigned tasks" ON public.tasks;
|
||||
DROP POLICY IF EXISTS "Users can delete their own tasks" ON public.tasks;
|
||||
|
||||
-- Recriar as políticas RLS
|
||||
CREATE POLICY "Users can view tasks assigned to them or created by them"
|
||||
ON public.tasks
|
||||
FOR SELECT
|
||||
USING (
|
||||
auth.uid() = created_by OR
|
||||
auth.uid() = ANY(assigned_to) OR
|
||||
public.has_role(auth.uid(), 'admin')
|
||||
);
|
||||
|
||||
CREATE POLICY "Authenticated users can create tasks"
|
||||
ON public.tasks
|
||||
FOR INSERT
|
||||
WITH CHECK (auth.uid() = created_by);
|
||||
|
||||
CREATE POLICY "Users can update their own tasks or assigned tasks"
|
||||
ON public.tasks
|
||||
FOR UPDATE
|
||||
USING (
|
||||
auth.uid() = created_by OR
|
||||
auth.uid() = ANY(assigned_to) OR
|
||||
public.has_role(auth.uid(), 'admin')
|
||||
);
|
||||
|
||||
CREATE POLICY "Users can delete their own tasks"
|
||||
ON public.tasks
|
||||
FOR DELETE
|
||||
USING (
|
||||
auth.uid() = created_by OR
|
||||
public.has_role(auth.uid(), 'admin')
|
||||
);
|
||||
Reference in New Issue
Block a user