DevEnv nis2-agile
7bb92b1971
[FEAT] invite: recipient data (nome/cognome/email/piva) pre-compila form registrazione + invite_url->register.html
2026-03-10 11:57:19 +01:00
DevEnv nis2-agile
47a7a25d35
[FIX] InviteController: array_slice(-0) → $where corretto per COUNT query
...
array_slice($where, 0, -0) in PHP restituisce array vuoto (−0=0),
generando SQL invalido "WHERE " → PDOException 1064.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 16:50:37 +01:00
DevEnv nis2-agile
9ccf2a72b5
[FIX] Database::execute() → Database::query() in 5 controller
...
Database non ha metodo execute() — corretto in:
InviteController, ServicesController, WebhookController,
NormativeController, WhistleblowingController.
Causa del HTTP 500 su tutti gli endpoint /api/invites/*.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 16:49:58 +01:00
DevEnv nis2-agile
d407fd0510
[MKTG-API] Documentazione + auth API Key per licenze
...
- InviteController: requireLicenseAuth() accetta X-API-Key (scope admin:licenses)
oppure JWT super_admin — tutti i metodi admin aggiornati
- mktg-api-doc.html: risponde alle 6 domande del marketing con esempi curl,
tabelle risposta, riepilogo endpoint, link Postman collection
- nis2-license-api.postman.json: collection completa (login, create, list,
revoke, regenerate, validate, provision) con pre-script salva JWT/invite_id
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 16:05:18 +01:00
DevEnv nis2-agile
cb0988da27
[LICENSE] Gestione licenze marketing + campi commerciali estesi
...
- licenseExt.html: dashboard marketing per generare/gestire licenze
Login JWT super_admin, stats strip (totali/usate/orgs/utenti),
form genera con label/piano/durata/max-aziende/max-utenti/prezzo/reseller,
lista paginata con filtri stato+canale, dettaglio modale, revoca/rigenera,
export CSV e copia token/URL
- Migration 013: invites +max_users_per_org, +price_eur, +reseller_name
organizations +license_max_users (da provisioning)
- InviteController::create() gestisce nuovi campi, validate() espone max_users_per_org
- ServicesController::provision() salva license_max_users nell'org
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 15:34:38 +01:00
DevEnv nis2-agile
612befd66d
[INVITE] Sistema inviti/licenze B2B + provisioning con invite_token
...
- InviteController: CRUD inviti (gen, list, show, revoke, rigenera, validate)
- Token inv_* sha256-hashed, one-shot o multi-use, canali, scadenza
- ServicesController::provision() accetta invite_token al posto di X-Provision-Secret
Piano e durata forzati dall'invito, markUsed() chiaamto dopo provisioning riuscito
- index.php: routing /api/invites/* aggiunto (controller + action map)
- integrazioniext.html: nuovo tab "Inviti & Licenze" con flow completo, endpoints,
esempi curl/php, guida lg231 aggiornata con sezione provisioning automatico
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 15:22:25 +01:00