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') }} |