PrimuS
PrimuS

Reputation: 2683

ACL grants access to all Users in Symfony?

I try to understand how ACL works but even if I set them for an item ($client in this case), everybody has access.

SET ACL

public function setACL($repository, $mask, $selectUser = false)
{

    $objectIdentity = ObjectIdentity::fromDomainObject($repository);
    $acl = $this->aclProvider->createAcl($objectIdentity);

    if($selectUser === false){
        $user = $this->tokenStorage->getToken()->getUser();
    }else{
        $user = $this->entityManager->getRepository('AppBundle:User')->find($selectUser);
    }

    $securityIdentity = UserSecurityIdentity::fromAccount($user);

    $acl->insertObjectAce($securityIdentity, $mask);
    $this->aclProvider->updateAcl($acl);

    return;

}

$selectUser is for setting it manually (via Console Comannd etc.) does it work that way at all?

GET ACL

public function getACL($repository, $granted)
{

    if (is_array($repository)) {
        foreach ($repository as $rp) {
            if (false === $this->authorizationChecker->isGranted($granted, get_class($rp))) {

                $this->get('log')->writeLog('Access denied.', __LINE__, 3);
                return new JsonResponse(array(
                    'result' => 'error',
                    'message' => 'Not allowed'
                ));
            }
        }
    } else {

        if (false === $this->authorizationChecker->isGranted($granted, get_class($repository))) {

            $this->get('log')->writeLog('Access denied.', __LINE__, 3);
            return new JsonResponse(array(
                'result' => 'error',
                'message' => 'Not allowed'
            ));
        }
    }

    return true;
}

Set ACL for $client

$this->get('global_functions')->setACL($client, MaskBuilder::MASK_OWNER);

But when I try to

Get ACL

$this->get('global_functions')->getACL($client, 'VIEW');

I get access with whatever user I am trying this...

Where am I wrong?

Upvotes: 0

Views: 87

Answers (1)

PrimuS
PrimuS

Reputation: 2683

Solved it myself...

$this->authorizationChecker->isGranted($granted, get_class($repository)) should be $this->authorizationChecker->isGranted($granted, $repository)

Upvotes: 2

Related Questions