mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
90 lines
4.4 KiB
SQL
90 lines
4.4 KiB
SQL
-- Script de migration pour synchroniser la base de données de production
|
|
-- avec le schéma de développement pour les catégories et permissions
|
|
|
|
-- 1. Mettre à jour les catégories en français
|
|
UPDATE permissions SET category = 'calendrier' WHERE category = 'Calendar';
|
|
UPDATE permissions SET category = 'tableau_de_bord' WHERE category = 'Dashboard';
|
|
UPDATE permissions SET category = 'livraisons' WHERE category = 'Deliveries';
|
|
UPDATE permissions SET category = 'commandes' WHERE category = 'Orders';
|
|
UPDATE permissions SET category = 'publicites' WHERE category = 'Publicities';
|
|
UPDATE permissions SET category = 'rapprochement' WHERE category = 'Reconciliation';
|
|
UPDATE permissions SET category = 'fournisseurs' WHERE category = 'Suppliers';
|
|
UPDATE permissions SET category = 'utilisateurs' WHERE category = 'Users';
|
|
UPDATE permissions SET category = 'commandes_clients' WHERE category = 'customer_orders';
|
|
UPDATE permissions SET category = 'magasins' WHERE category = 'groups';
|
|
|
|
-- 2. Ajouter les permissions tâches manquantes
|
|
INSERT INTO permissions (name, display_name, description, category, action, resource, is_system, created_at) VALUES
|
|
('tasks_read', 'Voir tâches', 'Accès en lecture aux tâches', 'gestion_taches', 'read', 'tasks', true, NOW()),
|
|
('tasks_create', 'Créer tâches', 'Création de nouvelles tâches', 'gestion_taches', 'create', 'tasks', true, NOW()),
|
|
('tasks_update', 'Modifier tâches', 'Modification de tâches existantes', 'gestion_taches', 'update', 'tasks', true, NOW()),
|
|
('tasks_delete', 'Supprimer tâches', 'Suppression de tâches', 'gestion_taches', 'delete', 'tasks', true, NOW()),
|
|
('tasks_assign', 'Assigner tâches', 'Attribution de tâches aux utilisateurs', 'gestion_taches', 'assign', 'tasks', true, NOW())
|
|
ON CONFLICT (name) DO UPDATE SET
|
|
display_name = EXCLUDED.display_name,
|
|
description = EXCLUDED.description,
|
|
category = EXCLUDED.category,
|
|
action = EXCLUDED.action,
|
|
resource = EXCLUDED.resource;
|
|
|
|
-- 3. Ajouter les permissions administration manquantes
|
|
INSERT INTO permissions (name, display_name, description, category, action, resource, is_system, created_at) VALUES
|
|
('system_admin', 'Administration système', 'Accès complet à l''administration du système', 'administration', 'admin', 'system', true, NOW()),
|
|
('nocodb_config', 'Configuration NocoDB', 'Gestion de la configuration NocoDB', 'administration', 'config', 'nocodb', true, NOW())
|
|
ON CONFLICT (name) DO UPDATE SET
|
|
display_name = EXCLUDED.display_name,
|
|
description = EXCLUDED.description,
|
|
category = EXCLUDED.category,
|
|
action = EXCLUDED.action,
|
|
resource = EXCLUDED.resource;
|
|
|
|
-- 4. Assigner les permissions tâches aux rôles existants
|
|
WITH task_permissions AS (
|
|
SELECT id FROM permissions WHERE category = 'gestion_taches'
|
|
),
|
|
roles_info AS (
|
|
SELECT id, name FROM roles WHERE name IN ('admin', 'manager', 'employee', 'directeur')
|
|
)
|
|
INSERT INTO role_permissions (role_id, permission_id, created_at)
|
|
SELECT r.id, p.id, NOW()
|
|
FROM roles_info r
|
|
CROSS JOIN task_permissions p
|
|
WHERE
|
|
-- Admin et directeur ont toutes les permissions tâches
|
|
(r.name IN ('admin', 'directeur'))
|
|
OR
|
|
-- Manager a read, create, update, assign
|
|
(r.name = 'manager' AND EXISTS(SELECT 1 FROM permissions WHERE id = p.id AND name IN ('tasks_read', 'tasks_create', 'tasks_update', 'tasks_assign')))
|
|
OR
|
|
-- Employee a read, create, update
|
|
(r.name = 'employee' AND EXISTS(SELECT 1 FROM permissions WHERE id = p.id AND name IN ('tasks_read', 'tasks_create', 'tasks_update')))
|
|
ON CONFLICT (role_id, permission_id) DO NOTHING;
|
|
|
|
-- 5. Assigner les permissions administration aux administrateurs et directeurs
|
|
WITH admin_permissions AS (
|
|
SELECT id FROM permissions WHERE category = 'administration'
|
|
),
|
|
admin_roles AS (
|
|
SELECT id FROM roles WHERE name IN ('admin', 'directeur')
|
|
)
|
|
INSERT INTO role_permissions (role_id, permission_id, created_at)
|
|
SELECT r.id, p.id, NOW()
|
|
FROM admin_roles r
|
|
CROSS JOIN admin_permissions p
|
|
ON CONFLICT (role_id, permission_id) DO NOTHING;
|
|
|
|
-- Vérification des résultats
|
|
SELECT 'VERIFICATION - Catégories mises à jour:' as check_type, category, COUNT(*) as count
|
|
FROM permissions
|
|
GROUP BY category
|
|
ORDER BY category;
|
|
|
|
SELECT 'VERIFICATION - Permissions tâches:' as check_type, name, display_name, category
|
|
FROM permissions
|
|
WHERE category = 'gestion_taches'
|
|
ORDER BY name;
|
|
|
|
SELECT 'VERIFICATION - Permissions administration:' as check_type, name, display_name, category
|
|
FROM permissions
|
|
WHERE category = 'administration'
|
|
ORDER BY name; |