diff --git a/app/src/Controllers/CertificateController.php b/app/src/Controllers/CertificateController.php index b92b5e9..bbb5b9f 100644 --- a/app/src/Controllers/CertificateController.php +++ b/app/src/Controllers/CertificateController.php @@ -238,16 +238,14 @@ class CertificateController exit(); } - // Empêcher la révocation des certificats Root ou Intermédiaires via l'interface - if ($cert['type'] === 'root' || $cert['type'] === 'intermediate') { - $_SESSION['error'] = $this->langService->__('cert_revoke_error_ca_revocation'); + // Empêcher la révocation des certificats Root via l'interface + if ($cert['type'] === 'root') { + $_SESSION['error'] = $this->langService->__('cert_revoke_error_ca_revocation'); // Peut-être une clé dédiée pour root si le message doit être différent header('Location: /certificates'); exit(); } - // Préparer le nom de base du certificat pour le script (sans l'extension .pem) - $certBaseName = str_replace('.cert.pem', '.cert', $cert['name']); - $functionalPerimeterName = $cert['perimeter_name']; + $functionalPerimeterName = $cert['perimeter_name']; // Déjà récupéré plus haut, mais utile ici aussi // Vérifier si le certificat n'est pas déjà révoqué dans la DB if ($cert['is_revoked']) { @@ -256,29 +254,79 @@ class CertificateController exit(); } - // Appeler le script shell de révocation - $command = escapeshellcmd(SCRIPTS_PATH . '/revoke_cert.sh') . ' ' . - escapeshellarg($certBaseName) . ' ' . - escapeshellarg($functionalPerimeterName); + if ($cert['type'] === 'intermediate') { + // Logique de révocation pour les certificats intermédiaires + $intermediateCertPath = "/opt/tls/intermediate/" . $functionalPerimeterName . "/certs/" . $cert['name']; + $rootCaConfigPath = "/opt/tls/root/openssl.cnf"; // Chemin vers la configuration OpenSSL du CA Racine + $rootCaCrlPath = "/opt/tls/root/crl/crl.pem"; // Chemin vers la CRL du CA Racine - $this->logService->log('info', "Tentative de révocation du certificat '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$command'", $userId, $ipAddress); + // Commande pour révoquer le certificat intermédiaire avec le CA Racine + $revokeCmd = sprintf( + "openssl ca -batch -config %s -revoke %s", + escapeshellarg($rootCaConfigPath), + escapeshellarg($intermediateCertPath) + ); - $output = shell_exec($command . ' 2>&1'); + $this->logService->log('info', "Tentative de révocation du certificat intermédiaire '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$revokeCmd'", $userId, $ipAddress); + $outputRevoke = shell_exec($revokeCmd . ' 2>&1'); - if (strpos($output, "Certificat '$certBaseName' révoqué avec succès.") !== false) { - // Mettre à jour le statut du certificat dans la base de données - $stmt = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); - $stmt->execute([$certificateId]); + if (strpos($outputRevoke, "Data Base Updated") !== false || strpos($outputRevoke, "Successfully revoked certificate") !== false) { + // Commande pour régénérer la CRL du CA Racine + $generateCrlCmd = sprintf( + "openssl ca -batch -config %s -gencrl -out %s", + escapeshellarg($rootCaConfigPath), + escapeshellarg($rootCaCrlPath) + ); + + $this->logService->log('info', "Révocation réussie. Tentative de mise à jour de la CRL du CA Racine. Commande: '$generateCrlCmd'", $userId, $ipAddress); + $outputCrl = shell_exec($generateCrlCmd . ' 2>&1'); + + // Vérifier si la CRL a été générée et si le fichier existe + if ((strpos($outputCrl, "CRL Generated") !== false || strpos($outputCrl, "CRL generated") !== false) && file_exists($rootCaCrlPath)) { + // Mettre à jour le statut du certificat dans la base de données + $stmt_update = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); + $stmt_update->execute([$certificateId]); + + $this->logService->log('info', "Certificat intermédiaire '{$cert['name']}' révoqué et CRL du CA Racine mise à jour.", $userId, $ipAddress); + $_SESSION['success'] = $this->langService->__('cert_revoke_success_intermediate', ['name' => $cert['name']]); + } else { + $this->logService->log('error', "Échec de la mise à jour de la CRL du CA Racine pour le cert intermédiaire '{$cert['name']}'. Output CRL: $outputCrl. Output Revoke: $outputRevoke", $userId, $ipAddress); + $_SESSION['error'] = $this->langService->__('cert_revoke_warn_crl_update_failed_intermediate', ['name' => $cert['name']]); + } + } else { + $_SESSION['error'] = $this->langService->__('cert_revoke_error_intermediate', ['name' => $cert['name'], 'output' => htmlspecialchars($outputRevoke)]); + $this->logService->log('error', "Échec de la révocation du certificat intermédiaire '{$cert['name']}'. Output: $outputRevoke", $userId, $ipAddress); + } + header('Location: /certificates'); + exit(); - $this->logService->log('info', "Certificat '{$cert['name']}' révoqué et enregistré en DB.", $userId, $ipAddress); - $_SESSION['success'] = $this->langService->__('cert_revoke_success'); } else { - $_SESSION['error'] = $this->langService->__('cert_revoke_error', ['output' => htmlspecialchars($output)]); - $this->logService->log('error', "Échec révocation certificat '{$cert['name']}': $output", $userId, $ipAddress); - } + // Logique existante pour les certificats 'simple' + $certBaseName = str_replace('.cert.pem', '.cert', $cert['name']); - header('Location: /certificates'); - exit(); + // Appeler le script shell de révocation + $command = escapeshellcmd(SCRIPTS_PATH . '/revoke_cert.sh') . ' ' . + escapeshellarg($certBaseName) . ' ' . + escapeshellarg($functionalPerimeterName); + + $this->logService->log('info', "Tentative de révocation du certificat simple '{$cert['name']}' pour le périmètre '$functionalPerimeterName'. Commande: '$command'", $userId, $ipAddress); + + $output = shell_exec($command . ' 2>&1'); + + if (strpos($output, "Certificat '$certBaseName' révoqué avec succès.") !== false) { + // Mettre à jour le statut du certificat dans la base de données + $stmt_update = $this->db->prepare("UPDATE certificates SET is_revoked = TRUE, revoked_at = NOW() WHERE id = ?"); + $stmt_update->execute([$certificateId]); + + $this->logService->log('info', "Certificat simple '{$cert['name']}' révoqué et enregistré en DB.", $userId, $ipAddress); + $_SESSION['success'] = $this->langService->__('cert_revoke_success'); + } else { + $_SESSION['error'] = $this->langService->__('cert_revoke_error', ['output' => htmlspecialchars($output)]); + $this->logService->log('error', "Échec révocation certificat simple '{$cert['name']}': $output", $userId, $ipAddress); + } + header('Location: /certificates'); + exit(); + } } /** diff --git a/app/src/Lang/ar.json b/app/src/Lang/ar.json index 091d274..dc58b11 100644 --- a/app/src/Lang/ar.json +++ b/app/src/Lang/ar.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Arabic", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Arabic", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Arabic", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Arabic", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Arabic", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Arabic", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Arabic", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Arabic", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Arabic", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Arabic", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Arabic" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Arabic", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/de.json b/app/src/Lang/de.json index 90c16d4..688a858 100644 --- a/app/src/Lang/de.json +++ b/app/src/Lang/de.json @@ -61,7 +61,7 @@ "cert_create_error": "Fehler beim Erstellen des Zertifikats: {output}", "cert_revoke_error_id_missing": "Zertifikats-ID für den Widerruf fehlt.", "cert_revoke_error_not_found": "Zertifikat für den Widerruf nicht gefunden.", - "cert_revoke_error_ca_revocation": "ROOT- und INTERMEDIATE-Zertifikate können aus PKI-Sicherheitsgründen nicht über die Schnittstelle widerrufen werden.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Dieses Zertifikat ist bereits widerrufen.", "cert_revoke_success": "Zertifikat erfolgreich widerrufen.", "cert_revoke_error": "Fehler beim Widerrufen des Zertifikats: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Benutzer '{username}' erfolgreich gelöscht.", "user_delete_error_not_found": "Benutzer zum Löschen nicht gefunden.", "user_delete_error_db": "Fehler beim Löschen des Benutzers aus der Datenbank.", - "self_delete_not_allowed": "Sie können sich nicht selbst löschen." + "self_delete_not_allowed": "Sie können sich nicht selbst löschen.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/en.json b/app/src/Lang/en.json index 6951f8a..c386ecd 100644 --- a/app/src/Lang/en.json +++ b/app/src/Lang/en.json @@ -61,7 +61,7 @@ "cert_create_error": "Error creating certificate: {output}", "cert_revoke_error_id_missing": "Certificate ID missing for revocation.", "cert_revoke_error_not_found": "Certificate not found for revocation.", - "cert_revoke_error_ca_revocation": "ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.", + "cert_revoke_error_ca_revocation": "ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "This certificate is already revoked.", "cert_revoke_success": "Certificate revoked successfully.", "cert_revoke_error": "Error revoking certificate: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "User '{username}' deleted successfully.", "user_delete_error_not_found": "User not found for deletion.", "user_delete_error_db": "Error deleting user from the database.", - "self_delete_not_allowed": "You cannot delete yourself." + "self_delete_not_allowed": "You cannot delete yourself.", + "cert_revoke_success_intermediate": "Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/es.json b/app/src/Lang/es.json index 66cb7ab..6066b3b 100644 --- a/app/src/Lang/es.json +++ b/app/src/Lang/es.json @@ -61,7 +61,7 @@ "cert_create_error": "Error al crear el certificado: {output}", "cert_revoke_error_id_missing": "ID de certificado faltante para la revocación.", "cert_revoke_error_not_found": "Certificado no encontrado para la revocación.", - "cert_revoke_error_ca_revocation": "Los certificados ROOT e INTERMEDIOS no pueden ser revocados a través de la interfaz por razones de seguridad PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Este certificado ya ha sido revocado.", "cert_revoke_success": "Certificado revocado correctamente.", "cert_revoke_error": "Error al revocar el certificado: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Usuario '{username}' eliminado correctamente.", "user_delete_error_not_found": "Usuario no encontrado para la eliminación.", "user_delete_error_db": "Error al eliminar el usuario de la base de datos.", - "self_delete_not_allowed": "No puedes eliminarte a ti mismo." + "self_delete_not_allowed": "No puedes eliminarte a ti mismo.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/fr.json b/app/src/Lang/fr.json index 203b1bb..d1d0dcc 100644 --- a/app/src/Lang/fr.json +++ b/app/src/Lang/fr.json @@ -61,7 +61,7 @@ "cert_create_error": "Erreur lors de la création du certificat: {output}", "cert_revoke_error_id_missing": "ID du certificat manquant pour la révocation.", "cert_revoke_error_not_found": "Certificat introuvable pour la révocation.", - "cert_revoke_error_ca_revocation": "Les certificats ROOT et INTERMÉDIAIRES ne peuvent pas être révoqués via l'interface pour des raisons de sécurité PKI.", + "cert_revoke_error_ca_revocation": "Les certificats ROOT ne peuvent pas être révoqués via l'interface pour des raisons de sécurité PKI.", "cert_revoke_error_already_revoked": "Ce certificat est déjà révoqué.", "cert_revoke_success": "Certificat révoqué avec succès.", "cert_revoke_error": "Erreur lors de la révocation du certificat: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utilisateur '{username}' supprimé avec succès.", "user_delete_error_not_found": "Utilisateur introuvable pour la suppression.", "user_delete_error_db": "Erreur lors de la suppression de l'utilisateur dans la base de données.", - "self_delete_not_allowed": "Vous ne pouvez pas vous supprimer vous-même." + "self_delete_not_allowed": "Vous ne pouvez pas vous supprimer vous-même.", + "cert_revoke_success_intermediate": "Le certificat intermédiaire '{name}' a été révoqué avec succès et la CRL du CA Racine a été mise à jour.", + "cert_revoke_warn_crl_update_failed_intermediate": "Le certificat intermédiaire '{name}' a été révoqué, mais la mise à jour de la CRL du CA Racine a rencontré un problème. Veuillez contacter un administrateur.", + "cert_revoke_error_intermediate": "Erreur lors de la révocation du certificat intermédiaire '{name}': {output}" } diff --git a/app/src/Lang/hi.json b/app/src/Lang/hi.json index a2f7b86..4c2b6ac 100644 --- a/app/src/Lang/hi.json +++ b/app/src/Lang/hi.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Hindi", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Hindi", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Hindi", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Hindi", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Hindi", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Hindi", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Hindi", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Hindi", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Hindi", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Hindi", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Hindi" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Hindi", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/it.json b/app/src/Lang/it.json index 2145aa9..f4ff71b 100644 --- a/app/src/Lang/it.json +++ b/app/src/Lang/it.json @@ -61,7 +61,7 @@ "cert_create_error": "Errore durante la creazione del certificato: {output}", "cert_revoke_error_id_missing": "ID certificato mancante per la revoca.", "cert_revoke_error_not_found": "Certificato non trovato per la revoca.", - "cert_revoke_error_ca_revocation": "I certificati ROOT e INTERMEDIATE non possono essere revocati tramite l'interfaccia per motivi di sicurezza PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Questo certificato è già stato revocato.", "cert_revoke_success": "Certificato revocato con successo.", "cert_revoke_error": "Errore durante la revoca del certificato: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utente '{username}' eliminato con successo.", "user_delete_error_not_found": "Utente non trovato per l'eliminazione.", "user_delete_error_db": "Errore durante l'eliminazione dell'utente dal database.", - "self_delete_not_allowed": "Non puoi eliminare te stesso." + "self_delete_not_allowed": "Non puoi eliminare te stesso.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/ja.json b/app/src/Lang/ja.json index bccf65c..f3e9c14 100644 --- a/app/src/Lang/ja.json +++ b/app/src/Lang/ja.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Japanese", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Japanese", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Japanese", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Japanese", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Japanese", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Japanese", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Japanese", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Japanese", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Japanese", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Japanese", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Japanese" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Japanese", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/pt.json b/app/src/Lang/pt.json index 1ff5920..1217d40 100644 --- a/app/src/Lang/pt.json +++ b/app/src/Lang/pt.json @@ -61,7 +61,7 @@ "cert_create_error": "Erro ao criar certificado: {output}", "cert_revoke_error_id_missing": "ID do certificado em falta para revogação.", "cert_revoke_error_not_found": "Certificado não encontrado para revogação.", - "cert_revoke_error_ca_revocation": "Certificados ROOT e INTERMEDIÁRIOS não podem ser revogados através da interface por razões de segurança PKI.", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Este certificado já está revogado.", "cert_revoke_success": "Certificado revogado com sucesso.", "cert_revoke_error": "Erro ao revogar certificado: {output}", @@ -80,5 +80,8 @@ "user_delete_success": "Utilizador '{username}' eliminado com sucesso.", "user_delete_error_not_found": "Utilizador não encontrado para eliminação.", "user_delete_error_db": "Erro ao eliminar utilizador da base de dados.", - "self_delete_not_allowed": "Não pode eliminar-se a si mesmo." + "self_delete_not_allowed": "Não pode eliminar-se a si mesmo.", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/ru.json b/app/src/Lang/ru.json index 4deb99e..fae4f0b 100644 --- a/app/src/Lang/ru.json +++ b/app/src/Lang/ru.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Russian", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Russian", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Russian", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Russian", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Russian", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Russian", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Russian", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Russian", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Russian", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Russian", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Russian" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Russian", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Lang/zh.json b/app/src/Lang/zh.json index e8b19b2..ac9f50d 100644 --- a/app/src/Lang/zh.json +++ b/app/src/Lang/zh.json @@ -61,7 +61,7 @@ "cert_create_error": "Auto-translated 'Error creating certificate: {output}' to Chinese", "cert_revoke_error_id_missing": "Auto-translated 'Certificate ID missing for revocation.' to Chinese", "cert_revoke_error_not_found": "Auto-translated 'Certificate not found for revocation.' to Chinese", - "cert_revoke_error_ca_revocation": "Auto-translated 'ROOT and INTERMEDIATE certificates cannot be revoked via the interface for PKI security reasons.' to Chinese", + "cert_revoke_error_ca_revocation": "NEEDS TRANSLATION: ROOT certificates cannot be revoked through the interface for PKI security reasons.", "cert_revoke_error_already_revoked": "Auto-translated 'This certificate is already revoked.' to Chinese", "cert_revoke_success": "Auto-translated 'Certificate revoked successfully.' to Chinese", "cert_revoke_error": "Auto-translated 'Error revoking certificate: {output}' to Chinese", @@ -80,5 +80,8 @@ "user_delete_success": "Auto-translated 'User ''{username}'' deleted successfully.' to Chinese", "user_delete_error_not_found": "Auto-translated 'User not found for deletion.' to Chinese", "user_delete_error_db": "Auto-translated 'Error deleting user from the database.' to Chinese", - "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Chinese" + "self_delete_not_allowed": "Auto-translated 'You cannot delete yourself.' to Chinese", + "cert_revoke_success_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been successfully revoked and the Root CA CRL has been updated.", + "cert_revoke_warn_crl_update_failed_intermediate": "NEEDS TRANSLATION: Intermediate certificate '{name}' has been revoked, but updating the Root CA CRL encountered an issue. Please contact an administrator.", + "cert_revoke_error_intermediate": "NEEDS TRANSLATION: Error revoking intermediate certificate '{name}': {output}" } diff --git a/app/src/Views/certificates/index.php b/app/src/Views/certificates/index.php index d06a411..ba6d7a5 100644 --- a/app/src/Views/certificates/index.php +++ b/app/src/Views/certificates/index.php @@ -49,8 +49,8 @@ require_once APP_ROOT_DIR . '/src/Views/shared/header.php';