Files
nis2-agile/application/cli/migrate_061_doc_permissions.php
DevEnv nis2-agileandClaude Opus 4.8 e245e76671 [FEAT] Permessi documentali profilabili per ruolo (Impostazioni > Permessi documentali) — v1.24.2
I diritti sul ciclo di vita dei documenti SGSI sono ora configurabili per ruolo (matrice Ruolo x Azione, org-scoped) invece che cablati.
- mig.061: tabella isms_doc_permissions (org x capability x role x allowed)
- IsmsModelController: requireDocCapability() sostituisce i requireOrgRole cablati nelle 7 transizioni (edit/submit/approve/publish/reject/archive/new_version); default = comportamento precedente; super_admin sempre ok; endpoint GET/PUT /api/isms/docPermissions (canEdit)
- settings.html: tab 'Permessi documentali' con matrice checkbox (lettura per i membri, salvataggio Amministratore/Direzione)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 14:25:07 +02:00

21 lines
881 B
PHP

<?php
/**
* migrate_061_doc_permissions.php — Permessi documentali profilabili per ruolo (org-scoped).
* Tabella matrice Ruolo x Azione del ciclo di vita documenti ISMS. IDEMPOTENTE.
*/
if (PHP_SAPI !== 'cli') { http_response_code(403); exit("CLI only\n"); }
require_once __DIR__ . '/../config/env.php';
require_once __DIR__ . '/../config/database.php';
$pdo = Database::getInstance();
$pdo->exec("CREATE TABLE IF NOT EXISTS isms_doc_permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
organization_id INT NOT NULL,
capability VARCHAR(20) NOT NULL,
role VARCHAR(30) NOT NULL,
allowed TINYINT(1) NOT NULL DEFAULT 1,
updated_at DATETIME NULL,
UNIQUE KEY uk_docperm (organization_id, capability, role),
INDEX idx_docperm_org (organization_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
echo "Migrazione 061 — tabella isms_doc_permissions OK. Prossima mig=062.\n";