* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Core\Domain\Profile\Permission\ValueObject; use PrestaShop\PrestaShop\Core\Domain\Profile\Permission\Exception\InvalidPermissionValueException; class ControllerPermission implements PermissionInterface { public const VIEW = 'view'; public const ADD = 'add'; public const EDIT = 'edit'; public const DELETE = 'delete'; public const ALL = 'all'; public const SUPPORTED_PERMISSIONS = [ self::VIEW, self::ADD, self::EDIT, self::DELETE, ]; /** * @var string */ private $permission; /** * @param string $permission */ public function __construct(string $permission) { $this->assertPermissionIsSupported($permission); $this->permission = $permission; } /** * @return string */ public function getValue(): string { return $this->permission; } protected function assertPermissionIsSupported(string $permission): void { if (!in_array($permission, static::SUPPORTED_PERMISSIONS)) { throw new InvalidPermissionValueException( sprintf('Invalid permission "%s" provided', $permission) ); } } }