<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\WebVariants;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Common\DefaultEntity;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Web\WebVariant;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
use PPAdmin\Security\AbstractAdminSectionVoter;
class WebVariantsVoter extends AbstractAdminGridSectionVoter
{
const SECTION_PERMISSION_EDIT_DEFAULT = '.edit-default';
public static function getSectionIdentifier(): string
{
return AdminSectionsList::WEB_VARIANTS;
}
public static function getEditDefaultPermission(): string
{
return static::getPermission(self::SECTION_PERMISSION_EDIT_DEFAULT);
}
function canDeleteRecord(Administrator $admin, DefaultEntity $record): bool
{
/** @var WebVariant $record */
return !$record->is_default && parent::canDeleteRecord($admin, $record);
}
function canEditRecord(Administrator $admin, DefaultEntity $record): bool
{
/** @var WebVariant $record */
if(!parent::canEditRecord($admin, $record)){
return false;
}
if($record->is_default){
return $admin->hasPermission(self::getEditDefaultPermission(), $this->resolveWeb($record));
}
return true;
}
}