<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\CustomCashbackCoefficient;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\CustomCashbackCoefficient;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
class CustomCashbackCoefficientsVoter extends AbstractAdminGridSectionVoter
{
const SECTION_PERMISSION_SET_FOR_ALL_USERS = '.set-for-all-users';
public static function getSectionIdentifier(): string
{
return AdminSectionsList::CUSTOM_CASHBACK_COEFFICIENTS;
}
public static function getSetForAllUsersPermission(): string
{
return static::getPermission(self::SECTION_PERMISSION_SET_FOR_ALL_USERS);
}
protected function voteOnSectionPermission(Administrator $admin, string $section_permission, $subject = null): bool
{
return match($section_permission) {
self::SECTION_PERMISSION_SET_FOR_ALL_USERS => $this->canSetForAllUsers($admin, $subject),
default => parent::voteOnSectionPermission($admin, $section_permission, $subject)
};
}
function canSetForAllUsers(Administrator $admin, CustomCashbackCoefficient $custom_cashback_coefficient): bool
{
return
!$custom_cashback_coefficient->user &&
$this->canEditRecord($admin, $custom_cashback_coefficient) &&
$admin->hasPermission(static::getSetForAllUsersPermission(), $this->resolveWeb($custom_cashback_coefficient))
;
}
}