<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\TipContests;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Common\DefaultEntity;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
class TipContestsVoter extends AbstractAdminGridSectionVoter
{
const SECTION_PERMISSION_TIPS = '.tips'; // can view tips
public static function getSectionIdentifier(): string
{
return AdminSectionsList::TIP_CONTESTS;
}
public static function getViewTipsPermission(): string
{
return static::getPermission(self::SECTION_PERMISSION_TIPS);
}
protected function voteOnSectionPermission(Administrator $admin, string $section_permission, $subject = null): bool
{
return match ($section_permission) {
static::SECTION_PERMISSION_TIPS => $this->canViewContestTips($admin, $subject),
default => parent::voteOnSectionPermission($admin, $section_permission, $subject)
};
}
function canViewContestTips(Administrator $admin, DefaultEntity $record): bool
{
return
$this->canViewSectionRecord($admin, $this->resolveWeb($record)) &&
$admin->hasPermission(static::getViewTipsPermission(), $this->resolveWeb($record));
}
}