Files
accounted/supabase/migrations/20260408130000_sie_files_storage_bucket.sql
T
Mattssonandgreptile-apps[bot] 211033410c Fix/import data (#200)
* fix: enhance import data handling and consent management across components

* feat: Enhance SIE import functionality with validation and error handling improvements

- Added validation errors and warnings state management in SIEImportWizard.
- Improved error handling for duplicate, validation, and parsing errors during SIE file import.
- Enhanced user feedback with actionable guidance for common import errors.
- Updated SIEUploadStep to display validation errors and warnings.
- Improved error messages in API routes for better clarity and user experience.
- Added file size and type validation in the SIE parse route.
- Enhanced parsing logic to provide more detailed error messages for unbalanced vouchers and missing amounts.
- Created a new storage bucket for SIE file archival in Supabase with appropriate policies for user access.
- Updated tests to reflect changes in error messages and validation logic.

* fix: Improve type assertion for response in getPage method

* Update extensions/general/arcim-migration/lib/migration-orchestrator.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update supabase/migrations/20260408130000_sie_files_storage_bucket.sql

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix: Add company ID verification for consent handling in accept and disconnect endpoints

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-08 18:17:00 +02:00

51 lines
1.9 KiB
SQL

-- Migration: Create 'sie-files' storage bucket for SIE file archival
-- The SIE import flow archives imported files to Supabase Storage for
-- BFL 7 kap 1-2§ retention compliance, but the bucket was never created.
-- Path convention: {company_id}/{import_id}.se
-- =============================================================================
-- 1. Create the 'sie-files' bucket (private, 10MB limit, text only)
-- =============================================================================
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
VALUES (
'sie-files',
'sie-files',
false,
52428800, -- 50 MB, matches MAX_FILE_SIZE in the parse route
ARRAY['text/plain']
)
ON CONFLICT (id) DO NOTHING;
ON CONFLICT (id) DO NOTHING;
-- =============================================================================
-- 2. INSERT policy: Users can upload to companies they belong to
-- =============================================================================
CREATE POLICY "sie_files_insert"
ON storage.objects
FOR INSERT
TO authenticated
WITH CHECK (
bucket_id = 'sie-files'
AND (storage.foldername(name))[1]::uuid IN (SELECT public.user_company_ids())
);
-- =============================================================================
-- 3. SELECT policy: Users can read files from companies they belong to
-- =============================================================================
CREATE POLICY "sie_files_select"
ON storage.objects
FOR SELECT
TO authenticated
USING (
bucket_id = 'sie-files'
AND (storage.foldername(name))[1]::uuid IN (SELECT public.user_company_ids())
);
-- =============================================================================
-- No UPDATE or DELETE policies — WORM compliance for BFL retention
-- Service role bypasses RLS for admin/cron access
-- =============================================================================