diff options
Diffstat (limited to 'application/forms/IcingaGenerateApiKeyForm.php')
-rw-r--r-- | application/forms/IcingaGenerateApiKeyForm.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/application/forms/IcingaGenerateApiKeyForm.php b/application/forms/IcingaGenerateApiKeyForm.php new file mode 100644 index 0000000..18980f0 --- /dev/null +++ b/application/forms/IcingaGenerateApiKeyForm.php @@ -0,0 +1,42 @@ +<?php + +namespace Icinga\Module\Director\Forms; + +use Icinga\Module\Director\Objects\IcingaHost; +use Icinga\Module\Director\Web\Form\DirectorForm; + +class IcingaGenerateApiKeyForm extends DirectorForm +{ + /** @var IcingaHost */ + protected $host; + + public function setHost(IcingaHost $host) + { + $this->host = $host; + return $this; + } + + public function setup() + { + if ($this->host->getProperty('api_key')) { + $label = $this->translate('Regenerate Self Service API key'); + } else { + $label = $this->translate('Generate Self Service API key'); + } + + $this->addStandaloneSubmitButton(sprintf( + $label, + $this->host->getObjectName() + )); + } + + public function onSuccess() + { + $host = $this->host; + $host->generateApiKey(); + $host->store(); + $this->redirectOnSuccess(sprintf($this->translate( + 'A new Self Service API key for %s has been generated' + ), $host->getObjectName())); + } +} |