<?php
namespace Seidemann\Hanagud\Security\Voter;
namespace Seidemann\Hanagud\Security\Voter;
use Seidemann\Hanagud\Entity\HanagudUser;
use Seidemann\Hanagud\Services\PermissionService;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\User\UserInterface;
class UserVoter extends Voter
{
public function __construct(private PermissionService $permissionService) {}
protected function supports(string $attribute, mixed $subject): bool
{
// Hier definierst du, welche Berechtigungen dieser Voter behandelt
return in_array($attribute, ['Edit User', 'Create User', 'Delete User']);
}
protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
{
$user = $token->getUser();
// Sicherstellen, dass ein eingeloggter Benutzer vorhanden ist
if (!$user instanceof HanagudUser) {
return false;
}
// Berechtigungen abrufen
$permissions = $this->permissionService->getPermissionsForUser($user);
// Prüfen, ob die gewünschte Berechtigung vorhanden ist
return in_array($attribute, $permissions);
}
}