sojorn/migrations/directus/use_existing_policy.sql
Patrick Britton 0bb1dd4055 feat: organize SQL scripts into structured migration folders
- Create organized migration folder structure:
  - database/ - Core schema changes and migrations
  - tests/ - Test scripts and verification queries
  - directus/ - Directus CMS configuration scripts
  - fixes/ - Database fixes and patches
  - archive/ - Historical and deprecated scripts

- Move 60+ SQL files from root to appropriate folders
- Add comprehensive README with usage guidelines
- Consolidate old migrations_archive into new archive folder
- Maintain clear separation of concerns for different script types

Benefits:
- Cleaner project root directory
- Easier to find specific types of SQL scripts
- Better organization for maintenance and development
- Clear documentation for migration procedures
- Proper separation of production vs development scripts
2026-02-05 09:13:47 -06:00

51 lines
2.1 KiB
SQL

-- Use the existing Administrator policy to add moderation permissions
-- Get the existing Administrator policy ID
SELECT 'Administrator policy:' as info;
SELECT id, name FROM directus_policies WHERE name = 'Administrator';
-- Add permissions for moderation collections to the existing Administrator policy
INSERT INTO directus_permissions (collection, action, permissions, policy)
SELECT
'moderation_flags',
'*',
'{"_and": [{"_system": {"_eq": true}}]}',
(SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
WHERE NOT EXISTS (
SELECT 1 FROM directus_permissions
WHERE collection = 'moderation_flags'
AND policy = (SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
);
INSERT INTO directus_permissions (collection, action, permissions, policy)
SELECT
'user_status_history',
'*',
'{"_and": [{"_system": {"_eq": true}}]}',
(SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
WHERE NOT EXISTS (
SELECT 1 FROM directus_permissions
WHERE collection = 'user_status_history'
AND policy = (SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
);
-- Check if admin role is already assigned to Administrator policy
SELECT 'Admin role assignments:' as info;
SELECT role, policy FROM directus_access WHERE role = (SELECT id FROM directus_roles WHERE name = 'Administrator' LIMIT 1);
-- If not assigned, assign it
INSERT INTO directus_access (role, policy)
SELECT
(SELECT id FROM directus_roles WHERE name = 'Administrator' LIMIT 1),
(SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
WHERE NOT EXISTS (
SELECT 1 FROM directus_access
WHERE role = (SELECT id FROM directus_roles WHERE name = 'Administrator' LIMIT 1)
AND policy = (SELECT id FROM directus_policies WHERE name = 'Administrator' LIMIT 1)
);
SELECT 'Final permissions check:' as info;
SELECT p.name as policy_name, pe.collection, pe.action
FROM directus_policies p
JOIN directus_permissions pe ON p.id = pe.policy
WHERE p.name = 'Administrator' AND pe.collection IN ('moderation_flags', 'user_status_history');