Files
gestion-certificats2/app/src/Views/dashboard/index.php
google-labs-jules[bot] e6e517011b Correction de la mise en page du tableau de bord pour les liens de certificats
Cette modification corrige la mise en page des certificats intermédiaires et finaux sur le tableau de bord pour s'assurer que leurs informations et liens de téléchargement respectifs s'affichent sur une seule ligne, de manière cohérente avec les certificats racine.

Modifications apportées :

1.  **HTML (`app/src/Views/dashboard/index.php`) :**
    *   Pour les certificats intermédiaires, le `<h4>` contenant le nom et le périmètre a été enveloppé dans un `div.certificate-info`. Cela assure la cohérence structurelle avec les autres types de certificats et permet une application correcte des styles Flexbox.

2.  **CSS (`app/public/css/style.css`) :**
    *   Ajout d'une règle `.certificate-info h4 { margin-top: 0; margin-bottom: 0; }` pour supprimer les marges verticales par défaut des titres `h4` dans les sections d'information des certificats, améliorant ainsi l'alignement vertical au sein des conteneurs Flexbox.
    *   Les styles Flexbox existants pour `.certificate-entry`, `.certificate-info`, et `.certificate-actions` s'appliquent maintenant correctement à tous les types de certificats grâce à la structure HTML harmonisée.

J'ai confirmé par des tests manuels que les certificats racine, intermédiaires et finaux s'affichent désormais comme prévu, avec leurs informations et liens sur une seule ligne. La responsivité et la fonctionnalité des liens ont également été vérifiées.
2025-06-16 11:55:42 +00:00

119 lines
8.6 KiB
PHP

<?php
// Variables attendues du contrôleur: $translations, $currentLang, $darkModeClass, $username, $userRole
require_once APP_ROOT_DIR . '/src/Views/shared/header.php';
?>
<div class="container">
<h1><?= str_replace('{username}', htmlspecialchars($username), htmlspecialchars($translations['welcome'])) ?></h1>
<nav>
<ul>
<li><a href="/certificates"><?= htmlspecialchars($translations['certificates']) ?></a></li>
<li><a href="/perimeters"><?= htmlspecialchars($translations['functional_perimeters']) ?></a></li>
<?php if ($userRole === 'admin'): ?>
<li><a href="/users"><?= htmlspecialchars($translations['users']) ?></a></li>
<?php endif; ?>
<li><a href="/logout" class="button logout-button"><?= htmlspecialchars($translations['logout']) ?></a></li>
</ul>
</nav>
<section class="quick-actions">
<h2><?= htmlspecialchars($translations['quick_actions']) ?></h2>
<ul>
<li><a href="/certificates/create" class="button create-button"><?= htmlspecialchars($translations['create_new_certificate']) ?></a></li>
<li><a href="/perimeters/create" class="button create-button"><?= htmlspecialchars($translations['create_new_perimeter']) ?></a></li>
<?php if ($userRole === 'admin'): ?>
<li><a href="/users/create" class="button create-button"><?= htmlspecialchars($translations['new_user']) ?></a></li>
<?php endif; ?>
</ul>
</section>
<section class="certificates-overview">
<h2><?= htmlspecialchars($translations['certificates_overview_title'] ?? 'Certificates Overview') ?></h2>
<!-- Root Certificate -->
<h3><?= htmlspecialchars($translations['root_certificate_title'] ?? 'Root Certificate') ?></h3>
<?php if (isset($structuredCertificates['root']) && $structuredCertificates['root']): ?>
<div class="certificate-entry">
<span><strong><?= htmlspecialchars($translations['name'] ?? 'Name:') ?></strong> <?= htmlspecialchars($structuredCertificates['root']['name']) ?></span>
<div class="certificate-actions">
<a href="/certificates/download?type=root&file=ca.cert.pem" class="button">
<?= htmlspecialchars($translations['download_certificate_pem'] ?? 'Download Certificate (.pem)') ?>
</a>
<a href="/certificates/download?type=root&file=ca.key.pem" class="button" style="margin-left: 10px;">
<?= htmlspecialchars($translations['download_key_pem'] ?? 'Download Private Key (.key)') ?>
</a>
</div>
</div>
<?php else: ?>
<p><?= htmlspecialchars($translations['root_certificate_not_configured'] ?? 'Root certificate is not configured.') ?></p>
<?php endif; ?>
<!-- Intermediate Certificates -->
<h3><?= htmlspecialchars($translations['intermediate_certificates_title'] ?? 'Intermediate Certificates') ?></h3>
<?php if (isset($structuredCertificates['intermediates']) && !empty($structuredCertificates['intermediates'])): ?>
<?php foreach ($structuredCertificates['intermediates'] as $intermediate): ?>
<div class="intermediate-certificate">
<div class="certificate-entry">
<div class="certificate-info">
<h4><?= htmlspecialchars($intermediate['name']) ?> (<?= htmlspecialchars($translations['perimeter'] ?? 'Perimeter:') ?> <?= htmlspecialchars($intermediate['perimeter_name']) ?>)</h4>
</div>
<div class="certificate-actions">
<a href="/certificates/download?type=intermediate&perimeter=<?= urlencode($intermediate['perimeter_name']) ?>&file=<?= urlencode($intermediate['name']) ?>" class="button">
<?= htmlspecialchars($translations['download_certificate_pem'] ?? 'Download Certificate (.pem)') ?>
</a>
<?php if (isset($userRole) && $userRole === 'admin'): ?>
<?php
// Suppose que le nom du fichier clé est le nom du cert avec .key.pem au lieu de .cert.pem
$intermediateKeyName = str_replace('.cert.pem', '.key.pem', $intermediate['name']);
?>
<a href="/certificates/download?type=intermediate&perimeter=<?= urlencode($intermediate['perimeter_name']) ?>&file=<?= urlencode($intermediateKeyName) ?>" class="button" style="margin-left: 10px;">
<?= htmlspecialchars($translations['download_private_key'] ?? 'Télécharger Clé Privée (.key)') ?>
</a>
<?php endif; ?>
</div>
</div>
<h5><?= htmlspecialchars($translations['associated_final_certificates_title'] ?? 'Associated Final Certificates') ?></h5>
<?php if (isset($intermediate['final_certificates']) && !empty($intermediate['final_certificates'])): ?>
<ul>
<?php foreach ($intermediate['final_certificates'] as $finalCert): ?>
<li class="certificate-entry">
<div class="certificate-info">
<?= htmlspecialchars($finalCert['name']) ?>
(<?= htmlspecialchars($translations['type'] ?? 'Type:') ?> <?= htmlspecialchars($finalCert['type']) ?>,
<?= htmlspecialchars($translations['expires'] ?? 'Expires:') ?> <?= htmlspecialchars($finalCert['expiration_date']) ?>,
<?= htmlspecialchars($translations['revoked'] ?? 'Revoked:') ?> <?= $finalCert['is_revoked'] ? htmlspecialchars($translations['yes'] ?? 'Yes') : htmlspecialchars($translations['no'] ?? 'No') ?>)
</div>
<div class="certificate-actions">
<a href="/certificates/download?type=simple&perimeter=<?= urlencode($intermediate['perimeter_name']) ?>&file=<?= urlencode($finalCert['name']) ?>" class="button download-button-small">
<?= htmlspecialchars($translations['download_certificate_pem'] ?? 'Download Certificate (.pem)') ?>
</a>
<?php if (isset($userRole) && $userRole === 'admin'): ?>
<?php
// Suppose que le nom du fichier clé est le nom du cert avec .key.pem au lieu de .cert.pem
$finalKeyName = str_replace('.cert.pem', '.key.pem', $finalCert['name']);
?>
<a href="/certificates/download?type=simple&perimeter=<?= urlencode($intermediate['perimeter_name']) ?>&file=<?= urlencode($finalKeyName) ?>" class="button download-button-small" style="margin-left: 5px;">
<?= htmlspecialchars($translations['download_private_key'] ?? 'Télécharger Clé Privée (.key)') ?>
</a>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p><?= htmlspecialchars($translations['no_associated_final_certificates'] ?? 'No final certificates associated with this intermediate.') ?></p>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php else: ?>
<p><?= htmlspecialchars($translations['no_intermediate_certificates_found'] ?? 'No intermediate certificates found.') ?></p>
<?php endif; ?>
</section>
</div>
<?php
require_once APP_ROOT_DIR . '/src/Views/shared/footer.php';
?>