Causa del 403: Supabase evalúa siempre la política INSERT cuando se usa .upsert(), incluso si la fila ya existe. client_editor no tiene INSERT en processes, entonces cualquier .upsert() sobre procesos existentes fallaba con 403.
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
Fix: nuevo método updateEditable() en process-repo.ts que usa .update().eq('id', process.id) con solo los campos editables (sin bpmn_xml, owner_id, created_by, id). Todos los paths de edición en process-store.ts y library-store.ts ahora usan updateEditable(). El .upsert() original queda únicamente para la creación inicial desde ImportPage y setCurrentProcess — rutas que client_editor nunca puede alcanzar (el import está bloqueado por el guard de rol).
This commit is contained in:
@@ -72,6 +72,28 @@ export const supabaseProcessRepo = {
|
||||
if (error) throw error
|
||||
},
|
||||
|
||||
// Actualiza solo campos editables por el usuario (sin bpmn_xml, owner_id, created_by).
|
||||
// Usa UPDATE en lugar de upsert para evitar el chequeo de INSERT policy (que client_editor no tiene).
|
||||
async updateEditable(process: Process, userId: string): Promise<void> {
|
||||
const { error } = await supabase
|
||||
.from('processes')
|
||||
.update({
|
||||
name: process.name,
|
||||
client: process.clientName,
|
||||
currency: process.currency,
|
||||
overhead_percentage: process.overheadPercentage,
|
||||
annual_frequency: process.annualFrequency,
|
||||
analysis_horizon_years: process.analysisHorizonYears,
|
||||
automation_investment: process.automationInvestment,
|
||||
tags: process.tags,
|
||||
group_id: process.groupId,
|
||||
updated_by: userId,
|
||||
updated_at: new Date().toISOString(),
|
||||
})
|
||||
.eq('id', process.id)
|
||||
if (error) throw error
|
||||
},
|
||||
|
||||
async getById(id: string): Promise<Process | undefined> {
|
||||
const { data, error } = await supabase
|
||||
.from('processes')
|
||||
|
||||
Reference in New Issue
Block a user