Wie auch immer, hier das Beispiel als Voter:
PHP-Code:
// src/Security/Voter/AdminMaintenanceAccessVoter.php
namespace App\Security\Voter;
use Contao\BackendUser;
use Contao\CoreBundle\Security\ContaoCorePermissions;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\Security;
class AdminMaintenanceAccessVoter extends Voter
{
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
protected function supports(string $attribute, $subject)
{
// Abstain, if we are not voting for maintenance back end module access
if ('maintenance' !== $subject || $attribute !== ContaoCorePermissions::USER_CAN_ACCESS_MODULE) {
return false;
}
// Get the currently logged in user
$user = $this->security->getUser();
// Abstain, if not back end admin
if (!$user instanceof BackendUser || !$user->isAdmin) {
return false;
}
return true;
}
protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token)
{
// Get the currently logged in user
$user = $token->getUser();
// Only allow admin with ID "1"
return 1 === (int) $user->id;
}
}
Docs PR: https://github.com/contao/docs/pull/919
Lesezeichen