likwid/backend/migrations/20260128113000_moderation_ledger_delete_guard_fix.sql
Marco Allegretti f37033567a backend: add 4 files, rename 1 file
Verified changes:
- add backend/migrations/20260128113000_moderation_ledger_delete_guard_fix.sql
- rename backend/migrations/20260127150000_demo_seed_data.sql -> backend/migrations_demo/20260127150000_demo_seed_data.sql
- add backend/migrations_demo/20260128114000_demo_moderation_log_deterministic_ids.sql
- add backend/migrations_demo/20260128115000_demo_seed_user_roles.sql
- add backend/migrations_demo/20260128130000_demo_convert_topic_delegations_to_community.sql

Diffstat:
- 5 files changed, 114 insertions(+)
2026-01-29 00:37:50 +01:00

17 lines
732 B
PL/PgSQL

-- Fix moderation ledger delete protection: missing allow_ledger_delete setting must default to false
CREATE OR REPLACE FUNCTION ledger_prevent_delete()
RETURNS TRIGGER AS $$
BEGIN
-- Allow deletion only by superuser (for legal compliance like GDPR)
IF NOT COALESCE(current_setting('likwid.allow_ledger_delete', true), 'false')::boolean THEN
RAISE EXCEPTION 'Moderation ledger entries cannot be deleted. Set likwid.allow_ledger_delete = true for legal compliance deletions.';
END IF;
-- Log the deletion attempt
INSERT INTO ledger_deletion_log (entry_id, deleted_by, reason)
VALUES (OLD.id, current_user, current_setting('likwid.deletion_reason', true));
RETURN OLD;
END;
$$ LANGUAGE plpgsql;