49 lines
1.1 KiB
PHP
Raw Normal View History

2019-01-27 15:28:25 +01:00
<?php
namespace App\Domain\ActionManagement;
use App\Entity\EntityInterface;
use App\Exception\NotSecureException;
use App\Exception\NotValidByFormException;
/**
* @author kevinfrantz
*/
abstract class AbstractAction extends AbstractActionConstructor implements ActionInterface
{
/**
* @return bool
*/
abstract protected function isSecure(): bool;
/**
* @return bool
*/
2019-02-12 16:47:37 +01:00
abstract protected function isValid(): bool;
2019-01-27 15:28:25 +01:00
/**
* Process the routine.
*
* @return EntityInterface|EntityInterface[]|null
*/
abstract protected function proccess();
/**
* @throws \Exception
*
* {@inheritdoc}
2019-01-27 15:28:25 +01:00
*
* @see \App\Domain\ActionManagement\ActionInterface::execute()
*/
final public function execute()
2019-01-27 15:28:25 +01:00
{
if ($this->isSecure()) {
2019-02-12 16:47:37 +01:00
if ($this->isValid()) {
2019-01-27 15:28:25 +01:00
return $this->proccess();
}
throw new NotValidByFormException('The requested Entity is not valid!');
}
throw new NotSecureException("You don't have the permission to execute this action!");
}
}