src/Util/AdminObjectAclManipulator.php
protected function buildAcl(AdminObjectAclData $data, Form $form, \Traversable $aclValues)
    {
        $masks = $data->getMasks();
        $acl = $data->getAcl();
        $matrices = $form->getData();

        foreach ($aclValues as $aclValue) {
            foreach ($matrices as $key => $matrix) {
                if ($aclValue instanceof UserInterface) {
                    if (\array_key_exists('user', $matrix) && $aclValue->getUsername() === $matrix['user']) {
                        $matrices[$key]['acl_value'] = $aclValue;
                    }
                } elseif (\array_key_exists('role', $matrix) && $aclValue === $matrix['role']) {
                    $matrices[$key]['acl_value'] = $aclValue;
                }
            }
        }

        foreach ($matrices as $matrix) {
            if (!isset($matrix['acl_value'])) {
                continue;
            }

            $securityIdentity = $this->getSecurityIdentity($matrix['acl_value']);
            $maskBuilder = new $this->maskBuilderClass();

            foreach ($data->getUserPermissions() as $permission) {
                if (isset($matrix[$permission]) && true === $matrix[$permission]) {
                    $maskBuilder->add($permission);
                }
            }

            // Restore OWNER and MASTER permissions
            if (!$data->isOwner()) {
                foreach ($data->getOwnerPermissions() as $permission) {
                    if ($acl->isGranted([$masks[$permission]], [$securityIdentity])) {
                        $maskBuilder->add($permission);
                    }
                }
            }

            $mask = $maskBuilder->get();

            $index = null;
            $ace = null;
            foreach ($acl->getObjectAces() as $currentIndex => $currentAce) {
                if ($currentAce->getSecurityIdentity()->equals($securityIdentity)) {
                    $index = $currentIndex;
                    $ace = $currentAce;

                    break;
                }
            }

            if ($ace) {
                $acl->updateObjectAce($index, $mask);
            } else {
                $acl->insertObjectAce($securityIdentity, $mask);
            }
        }

        $data->getSecurityHandler()->updateAcl($acl);
    }
protected function buildAcl(AdminObjectAclData $data, Form $form, \Traversable $aclValues)
    {
        $masks = $data->getMasks();
        $acl = $data->getAcl();
        $matrices = $form->getData();

        foreach ($aclValues as $aclValue) {
            foreach ($matrices as $key => $matrix) {
                if ($aclValue instanceof UserInterface) {
                    if (\array_key_exists('user', $matrix) && $aclValue->getUsername() === $matrix['user']) {
                        $matrices[$key]['acl_value'] = $aclValue;
                    }
                } elseif (\array_key_exists('role', $matrix) && $aclValue === $matrix['role']) {
                    $matrices[$key]['acl_value'] = $aclValue;
                }
            }
        }

        foreach ($matrices as $matrix) {
            if (!isset($matrix['acl_value'])) {
                continue;
            }

            $securityIdentity = $this->getSecurityIdentity($matrix['acl_value']);
            $maskBuilder = new $this->maskBuilderClass();

            foreach ($data->getUserPermissions() as $permission) {
                if (isset($matrix[$permission]) && true === $matrix[$permission]) {
                    $maskBuilder->add($permission);
                }
            }

            // Restore OWNER and MASTER permissions
            if (!$data->isOwner()) {
                foreach ($data->getOwnerPermissions() as $permission) {
                    if ($acl->isGranted([$masks[$permission]], [$securityIdentity])) {
                        $maskBuilder->add($permission);
                    }
                }
            }

            $mask = $maskBuilder->get();

            $index = null;
            $ace = null;
            foreach ($acl->getObjectAces() as $currentIndex => $currentAce) {
                if ($currentAce->getSecurityIdentity()->equals($securityIdentity)) {
                    $index = $currentIndex;
                    $ace = $currentAce;

                    break;
                }
            }

            if ($ace) {
                $acl->updateObjectAce($index, $mask);
            } else {
                $acl->insertObjectAce($securityIdentity, $mask);
            }
        }

        $data->getSecurityHandler()->updateAcl($acl);
    }
protected function buildAcl ( AdminObjectAclData $ data , Form $ form , \ Traversable $ aclValues ) { $ masks = $ data -> getMasks ( ) ; $ acl = $ data -> getAcl ( ) ; $ matrices = $ form -> getData ( ) ; foreach ( $ aclValues as $ aclValue ) { foreach ( $ matrices as $ key => $ matrix ) { if ( $ aclValue instanceof UserInterface ) { if ( \ array_key_exists ( 'user' , $ matrix ) && $ aclValue -> getUsername ( ) === $ matrix [ 'user' ] ) { $ matrices [ $ key ] [ 'acl_value' ] = $ aclValue ; } } elseif ( \ array_key_exists ( 'role' , $ matrix ) && $ aclValue === $ matrix [ 'role' ] ) { $ matrices [ $ key ] [ 'acl_value' ] = $ aclValue ; } } } foreach ( $ matrices as $ matrix ) { if ( ! isset ( $ matrix [ 'acl_value' ] ) ) { continue ; } $ securityIdentity = $ this -> getSecurityIdentity ( $ matrix [ 'acl_value' ] ) ; $ maskBuilder = new $ this -> maskBuilderClass ( ) ; foreach ( $ data -> getUserPermissions ( ) as $ permission ) { if ( isset ( $ matrix [ $ permission ] ) && true === $ matrix [ $ permission ] ) { $ maskBuilder -> add ( $ permission ) ; } } // Restore OWNER and MASTER permissions if ( ! $ data -> isOwner ( ) ) { foreach ( $ data -> getOwnerPermissions ( ) as $ permission ) { if ( $ acl -> isGranted ( [ $ masks [ $ permission ] ] , [ $ securityIdentity ] ) ) { $ maskBuilder -> add ( $ permission ) ; } } } $ mask = $ maskBuilder -> get ( ) ; $ index = null ; $ ace = null ; foreach ( $ acl -> getObjectAces ( ) as $ currentIndex => $ currentAce ) { if ( $ currentAce -> getSecurityIdentity ( ) -> equals ( $ securityIdentity ) ) { $ index = $ currentIndex ; $ ace = $ currentAce ; break ; } } if ( $ ace ) { $ acl -> updateObjectAce ( $ index , $ mask ) ; } else { $ acl -> insertObjectAce ( $ securityIdentity , $ mask ) ; } } $ data -> getSecurityHandler ( ) -> updateAcl ( $ acl ) ; }
Builds ACL.
Builds ACL .