mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-04-08 17:15:08 +02:00
Merge pull request #4023 from Icinga/fix/role-form-does-not-use-config-form-events
Fix that the role form doesn't use config form events
This commit is contained in:
commit
af92d4fc89
@ -3,12 +3,14 @@
|
||||
|
||||
namespace Icinga\Forms\Security;
|
||||
|
||||
use Icinga\Application\Hook\ConfigFormEventsHook;
|
||||
use Icinga\Application\Icinga;
|
||||
use Icinga\Application\Modules\Manager;
|
||||
use Icinga\Data\Filter\Filter;
|
||||
use Icinga\Forms\ConfigForm;
|
||||
use Icinga\Forms\RepositoryForm;
|
||||
use Icinga\Util\StringHelper;
|
||||
use Icinga\Web\Notification;
|
||||
use Zend_Form_Element;
|
||||
|
||||
/**
|
||||
@ -384,4 +386,33 @@ class RoleForm extends RepositoryForm
|
||||
return strnatcmp($a, $b);
|
||||
});
|
||||
}
|
||||
|
||||
public function isValid($formData)
|
||||
{
|
||||
$valid = parent::isValid($formData);
|
||||
|
||||
if ($valid && ConfigFormEventsHook::runIsValid($this) === false) {
|
||||
foreach (ConfigFormEventsHook::getLastErrors() as $msg) {
|
||||
$this->error($msg);
|
||||
}
|
||||
|
||||
$valid = false;
|
||||
}
|
||||
|
||||
return $valid;
|
||||
}
|
||||
|
||||
public function onSuccess()
|
||||
{
|
||||
if (parent::onSuccess() === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ConfigFormEventsHook::runOnSuccess($this) === false) {
|
||||
Notification::error($this->translate(
|
||||
'Configuration successfully stored. Though, one or more module hooks failed to run.'
|
||||
. ' See logs for details'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ namespace Icinga\Application\Hook;
|
||||
use Icinga\Application\Hook;
|
||||
use Icinga\Application\Logger;
|
||||
use Icinga\Exception\IcingaException;
|
||||
use Icinga\Forms\ConfigForm;
|
||||
use Icinga\Web\Form;
|
||||
|
||||
/**
|
||||
* Base class for config form event hooks
|
||||
@ -19,11 +19,11 @@ abstract class ConfigFormEventsHook
|
||||
/**
|
||||
* Get whether the hook applies to the given config form
|
||||
*
|
||||
* @param ConfigForm $form
|
||||
* @param Form $form
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function appliesTo(ConfigForm $form)
|
||||
public function appliesTo(Form $form)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -36,11 +36,11 @@ abstract class ConfigFormEventsHook
|
||||
* The exception's message will be automatically added as form error message so that it will be
|
||||
* displayed in the frontend.
|
||||
*
|
||||
* @param ConfigForm $form
|
||||
* @param Form $form
|
||||
*
|
||||
* @throws \Exception If either the form is not valid or to interrupt the form handling
|
||||
*/
|
||||
public function isValid(ConfigForm $form)
|
||||
public function isValid(Form $form)
|
||||
{
|
||||
}
|
||||
|
||||
@ -50,9 +50,9 @@ abstract class ConfigFormEventsHook
|
||||
* Implement this method in order to run code after the configuration form has been stored successfully.
|
||||
* You can't interrupt the form handling here. Any exception will be caught, logged and notified.
|
||||
*
|
||||
* @param ConfigForm $form
|
||||
* @param Form $form
|
||||
*/
|
||||
public function onSuccess(ConfigForm $form)
|
||||
public function onSuccess(Form $form)
|
||||
{
|
||||
}
|
||||
|
||||
@ -69,11 +69,11 @@ abstract class ConfigFormEventsHook
|
||||
/**
|
||||
* Run all isValid hooks
|
||||
*
|
||||
* @param ConfigForm $form
|
||||
* @param Form $form
|
||||
*
|
||||
* @return bool Returns false if any hook threw an exception
|
||||
*/
|
||||
final public static function runIsValid(ConfigForm $form)
|
||||
final public static function runIsValid(Form $form)
|
||||
{
|
||||
return self::runEventMethod('isValid', $form);
|
||||
}
|
||||
@ -81,16 +81,16 @@ abstract class ConfigFormEventsHook
|
||||
/**
|
||||
* Run all onSuccess hooks
|
||||
*
|
||||
* @param ConfigForm $form
|
||||
* @param Form $form
|
||||
*
|
||||
* @return bool Returns false if any hook threw an exception
|
||||
*/
|
||||
final public static function runOnSuccess(ConfigForm $form)
|
||||
final public static function runOnSuccess(Form $form)
|
||||
{
|
||||
return self::runEventMethod('onSuccess', $form);
|
||||
}
|
||||
|
||||
private static function runEventMethod($eventMethod, ConfigForm $form)
|
||||
private static function runEventMethod($eventMethod, Form $form)
|
||||
{
|
||||
static::$lastErrors = [];
|
||||
|
||||
@ -120,7 +120,7 @@ abstract class ConfigFormEventsHook
|
||||
return $success;
|
||||
}
|
||||
|
||||
private function runAppliesTo(ConfigForm $form)
|
||||
private function runAppliesTo(Form $form)
|
||||
{
|
||||
try {
|
||||
$appliesTo = $this->appliesTo($form);
|
||||
|
Loading…
x
Reference in New Issue
Block a user