0.18.9Dernière version
- Requested by the Product Owner: the licence portal added to the website as in CertiHANA, and everything prepared to host the full site (spec W2, defaults recorded there).
- Licence portal (website/portal, PHP 8.1 / MySQL, no dependencies, served at /portal/): one vendor login; Issue tab signs CertiPOS licences (tenant slug, register and user seats, modules, optional node lock, validity; ES256 compact JWS exactly as Es256LicenceVerifier reads it), Clients with licence history, reissue (supersede) and recording of tokens issued elsewhere, Requests from the website's demo form (notification + acknowledgement, status, notes, convert to client), Files (chunked uploads, SHA-256, revocable share links), Settings (identity, SMTP with password / Microsoft 365 app / relay, reminders); daily expiry reminders from cron. Brand 1.0 UI with the site's own fonts. Harnesses on SQLite: licensing_test.php, requests_test.php, files_test.php.
- Vendor key: tools/licensing/gen-vendor-key.php created the CERTICONS signing key (license-private.pem, git-ignored, to be backed up offline); its public key is shipped in appsettings.json (CertiPos:License:PublicKeyPem), so every installed server verifies portal-issued licences. PortalLicenceTests proves a portal-signed token in the product's verifier (skipped where php is absent) and that the shipped key is a valid P-256 key.
- Website: the demo form posts to /contact.php of its own origin by default (the portal stores and mails it; PUBLIC_LEADS_ENDPOINT still redirects it to the server's /web/leads); footer link to the portal (nofollow), robots.txt disallows /portal/ and /contact.php; public/.htaccess with HTTPS, canonical host, headers, caching and the 404 page; npm run package writes installer/output/CertiPOS-website-<version>.zip for the document root.
- Portal of the product (System → Licence): a licence request block (organisation slug, seats in use, version) with Copy and E-mail request.
- Docs: docs/Website_Hosting_cPanel.md (installation, SMTP options, cron, daily workflow, backup, troubleshooting), website/README.md, website/portal/README.md, tools/licensing/README.md.