[DEPLOY] Migrazione a subdomain nis2.certisource.it

Rimozione prefisso /nis2/ da tutti i path frontend e router:
- index.php: basePath '' (da '/nis2')
- api.js: baseUrl '/api' (da '/nis2/api')
- Tutti i file HTML: path assoluti senza prefisso /nis2/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile 2026-02-19 14:05:08 +01:00
parent 92f9366ef4
commit ba21534e6a
14 changed files with 73 additions and 73 deletions

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pannello Amministrazione - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.admin-stats-grid {
display: grid;
@ -268,7 +268,7 @@
</div>
<div class="card-body">
<div class="quick-links-grid">
<a href="/nis2/admin/organizations.html" class="quick-link-card">
<a href="/admin/organizations.html" class="quick-link-card">
<div class="quick-link-icon">
<svg viewBox="0 0 20 20" fill="currentColor"><path d="M4 4a2 2 0 012-2h8a2 2 0 012 2v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"/></svg>
</div>
@ -277,7 +277,7 @@
<p>Visualizza e gestisci tutte le organizzazioni registrate sulla piattaforma.</p>
</div>
</a>
<a href="/nis2/admin/users.html" class="quick-link-card">
<a href="/admin/users.html" class="quick-link-card">
<div class="quick-link-icon">
<svg viewBox="0 0 20 20" fill="currentColor"><path d="M9 6a3 3 0 11-6 0 3 3 0 016 0zM17 6a3 3 0 11-6 0 3 3 0 016 0zM12.93 17c.046-.327.07-.66.07-1a6.97 6.97 0 00-1.5-4.33A5 5 0 0119 16v1h-6.07zM6 11a5 5 0 015 5v1H1v-1a5 5 0 015-5z"/></svg>
</div>
@ -293,9 +293,9 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
@ -308,12 +308,12 @@
const me = await api.getMe();
if (!me.success || !me.data || me.data.role !== 'super_admin') {
showNotification('Accesso non autorizzato. Solo gli amministratori possono accedere a questa pagina.', 'error');
setTimeout(() => { window.location.href = '/nis2/dashboard.html'; }, 1500);
setTimeout(() => { window.location.href = '/dashboard.html'; }, 1500);
return;
}
loadAdminStats();
} catch (e) {
window.location.href = '/nis2/dashboard.html';
window.location.href = '/dashboard.html';
}
})();

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestione Organizzazioni - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.entity-type-badge {
display: inline-flex;
@ -111,7 +111,7 @@
<div class="content-body">
<!-- Breadcrumb -->
<div class="admin-breadcrumb">
<a href="/nis2/admin/index.html">Amministrazione</a>
<a href="/admin/index.html">Amministrazione</a>
<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
<span>Organizzazioni</span>
</div>
@ -128,9 +128,9 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
@ -145,12 +145,12 @@
const me = await api.getMe();
if (!me.success || !me.data || me.data.role !== 'super_admin') {
showNotification('Accesso non autorizzato.', 'error');
setTimeout(() => { window.location.href = '/nis2/dashboard.html'; }, 1500);
setTimeout(() => { window.location.href = '/dashboard.html'; }, 1500);
return;
}
loadOrganizations(1);
} catch (e) {
window.location.href = '/nis2/dashboard.html';
window.location.href = '/dashboard.html';
}
})();

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestione Utenti - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.role-badge {
display: inline-flex;
@ -131,7 +131,7 @@
<div class="content-body">
<!-- Breadcrumb -->
<div class="admin-breadcrumb">
<a href="/nis2/admin/index.html">Amministrazione</a>
<a href="/admin/index.html">Amministrazione</a>
<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
<span>Utenti</span>
</div>
@ -148,9 +148,9 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
@ -165,12 +165,12 @@
const me = await api.getMe();
if (!me.success || !me.data || me.data.role !== 'super_admin') {
showNotification('Accesso non autorizzato.', 'error');
setTimeout(() => { window.location.href = '/nis2/dashboard.html'; }, 1500);
setTimeout(() => { window.location.href = '/dashboard.html'; }, 1500);
return;
}
loadUsers(1);
} catch (e) {
window.location.href = '/nis2/dashboard.html';
window.location.href = '/dashboard.html';
}
})();

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Inventario Asset - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Stats Cards ────────────────────────────────────────── */
.asset-stats {
@ -348,10 +348,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestione Incidenti - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Filters Bar ─────────────────────────────────────── */
.filters-bar {
@ -334,10 +334,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ──────────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NIS2 Agile - Piattaforma Compliance NIS2</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.landing { display: flex; flex-direction: column; min-height: 100vh; background: var(--gray-50, #f8fafc); }
.landing-header { background: white; border-bottom: 1px solid #e2e8f0; padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; }
@ -33,8 +33,8 @@
<header class="landing-header">
<div class="landing-logo">NIS2 <span>Agile</span></div>
<nav class="landing-nav">
<a href="/nis2/login.html" class="btn-login">Accedi</a>
<a href="/nis2/register.html" class="btn-register">Registrati</a>
<a href="/login.html" class="btn-login">Accedi</a>
<a href="/register.html" class="btn-register">Registrati</a>
</nav>
</header>
@ -42,7 +42,7 @@
<div class="hero-content">
<h1>Compliance <span>NIS2</span> semplificata</h1>
<p>Piattaforma integrata per guidare la tua azienda alla conformita con la Direttiva NIS2 (EU 2022/2555). Gap analysis, risk assessment, gestione incidenti, policy e formazione - tutto in un unico strumento con AI integrata.</p>
<a href="/nis2/register.html" class="cta">Inizia gratuitamente</a>
<a href="/register.html" class="cta">Inizia gratuitamente</a>
</div>
</section>

View File

@ -3,7 +3,7 @@
* NIS2 Agile - Front Controller / Router
*
* Tutte le richieste API passano da qui.
* URL Pattern: /nis2/api/{controller}/{action}/{id?}
* URL Pattern: /api/{controller}/{action}/{id?}
*/
// ═══════════════════════════════════════════════════════════════════════════
@ -37,7 +37,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
// ═══════════════════════════════════════════════════════════════════════════
$requestUri = $_SERVER['REQUEST_URI'] ?? '/';
$basePath = '/nis2';
$basePath = '';
$path = parse_url($requestUri, PHP_URL_PATH);
$path = preg_replace("#^{$basePath}#", '', $path);

View File

@ -5,7 +5,7 @@
*/
class NIS2API {
constructor(baseUrl = '/nis2/api') {
constructor(baseUrl = '/api') {
this.baseUrl = baseUrl;
this.token = localStorage.getItem('nis2_access_token');
this.refreshToken = localStorage.getItem('nis2_refresh_token');
@ -103,7 +103,7 @@ class NIS2API {
logout() {
this.post('/auth/logout', {}).catch(() => {});
this.clearTokens();
window.location.href = '/nis2/login.html';
window.location.href = '/login.html';
}
getMe() { return this.get('/auth/me'); }

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Policy - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Policy Page Styles ──────────────────────────────────── */
.filters-bar {
@ -316,10 +316,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Audit e Report - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav {
@ -405,10 +405,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestione Rischi - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── View Toggle ─────────────────────────────────────── */
.view-toggle {
@ -416,10 +416,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ──────────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impostazioni - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.settings-tabs {
display: flex;
@ -483,10 +483,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
@ -716,7 +716,7 @@
};
try {
const response = await fetch('/nis2/api/auth/profile', {
const response = await fetch('/api/auth/profile', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
@ -792,7 +792,7 @@
btn.textContent = 'Aggiornamento...';
try {
const response = await fetch('/nis2/api/auth/change-password', {
const response = await fetch('/api/auth/change-password', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@ -809,7 +809,7 @@
showNotification('Password modificata. Verrai disconnesso...', 'success');
setTimeout(() => {
api.clearTokens();
window.location.href = '/nis2/login.html';
window.location.href = '/login.html';
}, 2000);
} else {
showNotification(result.message || 'Errore nel cambio password.', 'error');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Supply Chain - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Supply Chain Page Styles ─────────────────────────── */
.filters-bar {
@ -457,10 +457,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formazione - NIS2 Agile</title>
<link rel="stylesheet" href="/nis2/css/style.css">
<link rel="stylesheet" href="/css/style.css">
<style>
/* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav {
@ -275,10 +275,10 @@
</main>
</div>
<script src="/nis2/js/api.js"></script>
<script src="/nis2/js/common.js"></script>
<script src="/nis2/js/i18n.js"></script>
<script src="/nis2/js/help.js"></script>
<script src="/js/api.js"></script>
<script src="/js/common.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/help.js"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');