diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Trust/Api/CertController.php b/src/opnsense/mvc/app/controllers/OPNsense/Trust/Api/CertController.php index c700ac8fc..09c95ce0e 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Trust/Api/CertController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Trust/Api/CertController.php @@ -155,7 +155,7 @@ class CertController extends ApiMutableModelControllerBase }; return $this->searchBase( 'cert', - ['descr', 'caref', 'rfc3280_purpose', 'name', 'valid_from', 'valid_to'], + ['refid', 'descr', 'caref', 'rfc3280_purpose', 'name', 'valid_from', 'valid_to' , 'in_use'], null, $filter_funct ); @@ -179,7 +179,14 @@ class CertController extends ApiMutableModelControllerBase } public function delAction($uuid) { - return $this->delBase('cert', $uuid); + if ($this->request->isPost() && !empty($uuid)) { + $node = $this->getModel()->getNodeByReference('cert.' . $uuid); + if ($node !== null) { + $this->checkAndThrowValueInUse((string)$node->refid, false, false); + } + return $this->delBase('cert', $uuid); + } + return ['status' => 'failed']; } public function toggleAction($uuid, $enabled = null) { diff --git a/src/opnsense/mvc/app/models/OPNsense/Trust/Cert.xml b/src/opnsense/mvc/app/models/OPNsense/Trust/Cert.xml index dda115ff9..d19867f0c 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Trust/Cert.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Trust/Cert.xml @@ -113,6 +113,7 @@ + diff --git a/src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes/CertificatesField.php b/src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes/CertificatesField.php index c641b2bca..ec4806b7b 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes/CertificatesField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes/CertificatesField.php @@ -28,6 +28,7 @@ namespace OPNsense\Trust\FieldTypes; +use OPNsense\Core\Config; use OPNsense\Base\FieldTypes\ArrayField; use OPNsense\Base\FieldTypes\ContainerField; use OPNsense\Base\FieldTypes\TextField; @@ -130,6 +131,10 @@ class CertificatesField extends ArrayField } elseif (!empty((string)$node->crt_payload)) { $node->action = 'manual'; } + $tmp = Config::getInstance()->object()->xpath("//*[text() = '{$node->refid}']"); + if (is_array($tmp) && count($tmp) > 1) { + $node->in_use = '1'; + } } return parent::actionPostLoadingEvent(); } diff --git a/src/opnsense/mvc/app/views/OPNsense/Trust/cert.volt b/src/opnsense/mvc/app/views/OPNsense/Trust/cert.volt index c14c6fcd9..82ef7fa2b 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Trust/cert.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Trust/cert.volt @@ -272,6 +272,7 @@ {{ lang._('ID') }} + {{ lang._('In use') }} {{ lang._('Description') }} {{ lang._('Issuer') }} {{ lang._('Purpose') }}