feat: intégration Vision — licence copymail, statut dashboard, clé dans config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ require_once __DIR__ . '/../includes/layout.php';
|
||||
admin_check();
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$fields = ['domain', 'hostname', 'smtp_port', 'submission_port', 'imap_port', 'imaps_port', 'smb_workgroup'];
|
||||
$fields = ['domain', 'hostname', 'smtp_port', 'submission_port', 'imap_port', 'imaps_port', 'smb_workgroup', 'vision_license_key'];
|
||||
foreach ($fields as $f) {
|
||||
$val = trim($_POST[$f] ?? '');
|
||||
if ($val !== '') cfg_set($f, $val);
|
||||
@@ -85,6 +85,32 @@ html_navbar('domain');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mb-4">
|
||||
<div class="card-header fw-semibold"><i class="bi bi-shield-check me-2"></i>Licence Vision</div>
|
||||
<div class="card-body">
|
||||
<?php
|
||||
require_once __DIR__ . '/../includes/vision.php';
|
||||
$lic = vision_check();
|
||||
$licClass = $lic['valid'] ? 'success' : 'danger';
|
||||
$licIcon = $lic['valid'] ? 'check-circle-fill' : 'x-circle-fill';
|
||||
$licMsg = $lic['valid']
|
||||
? ('Valide — ' . htmlspecialchars($lic['client'] ?? '') . (!empty($lic['expires']) ? ' — expire le ' . date('d/m/Y', strtotime($lic['expires'])) : ''))
|
||||
: htmlspecialchars($lic['msg'] ?? 'Non valide');
|
||||
if (!empty($lic['degraded'])) $licClass = 'warning';
|
||||
?>
|
||||
<div class="alert alert-<?= $licClass ?> py-2 mb-3">
|
||||
<i class="bi bi-<?= $licIcon ?> me-2"></i><?= $licMsg ?>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<label class="form-label">Clé de licence</label>
|
||||
<input type="text" name="vision_license_key" class="form-control font-monospace"
|
||||
value="<?= htmlspecialchars(cfg('vision_license_key', '')) ?>"
|
||||
placeholder="COPYDEV-XXXXXXXX-XXXXXXXX-XXXXXXXX">
|
||||
<div class="form-text">Générée depuis <strong>Vision</strong> → onglet Licences → produit CopyMail.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-floppy-fill me-1"></i>Sauvegarder & Appliquer
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
require_once __DIR__ . '/../includes/db.php';
|
||||
require_once __DIR__ . '/../includes/auth.php';
|
||||
require_once __DIR__ . '/../includes/layout.php';
|
||||
require_once __DIR__ . '/../includes/vision.php';
|
||||
|
||||
admin_check();
|
||||
$licence = vision_check();
|
||||
|
||||
$services = [
|
||||
'postfix' => ['Postfix (SMTP)', 'bi-envelope-at'],
|
||||
@@ -38,6 +40,23 @@ html_navbar('status');
|
||||
<div class="container-fluid">
|
||||
<h5 class="mb-4"><i class="bi bi-activity me-2"></i>Tableau de bord</h5>
|
||||
|
||||
<!-- Statut licence -->
|
||||
<?php
|
||||
$lClass = $licence['valid'] ? 'success' : (isset($licence['unconfigured']) ? 'secondary' : 'danger');
|
||||
if (!empty($licence['degraded'])) $lClass = 'warning';
|
||||
$lIcon = $licence['valid'] ? 'shield-check' : 'shield-x';
|
||||
$lText = $licence['valid']
|
||||
? 'Licence valide — ' . htmlspecialchars($licence['client'] ?? 'CopyMail')
|
||||
. (!empty($licence['expires']) ? ' — expire le ' . date('d/m/Y', strtotime($licence['expires'])) : '')
|
||||
: htmlspecialchars($licence['msg'] ?? 'Licence non valide');
|
||||
?>
|
||||
<div class="alert alert-<?= $lClass ?> d-flex align-items-center justify-content-between py-2 mb-4">
|
||||
<span><i class="bi bi-<?= $lIcon ?> me-2"></i><?= $lText ?></span>
|
||||
<?php if (!$licence['valid'] || isset($licence['unconfigured'])): ?>
|
||||
<a href="/admin/domain.php" class="btn btn-sm btn-outline-<?= $lClass ?>">Configurer</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<!-- Stats -->
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-sm-4">
|
||||
|
||||
Reference in New Issue
Block a user