module/User/src/Grid/User/Model/Permissions/Model.php
public function checkRole( $role, $parent = null )
    {
        if ( null === $role )
        {
            return null;
        }

        if ( $role instanceof Acl\Role\RoleInterface )
        {
            $role = $role->getRoleId();
        }

        $acl = $this->getAcl();

        if ( ! $acl->hasRole( $role ) )
        {
            if ( null === $parent )
            {
                $parent = $this->getParentId( $role );
            }
            elseif ( $parent instanceof Acl\Role\RoleInterface )
            {
                $parent = $parent->getRoleId();
            }

            $parent = $this->checkRole( $parent );
            $acl->addRole( $role, (array) $parent );

            $matches    = array();
            $structures = array();

            if ( preg_match( '/^(\d+)$/', $role, $matches ) ) //group
            {
                $structures = $this->getMapper()
                                   ->findAllByGroupId( $matches[1] );
            }
            else if ( preg_match( '/^(\d+)\.(\d+)$/', $role, $matches ) ) //user
            {
                $structures = $this->getMapper()
                                   ->findAllByUserId( $matches[2] );

                $resource = 'user.group.' . $matches[1] .
                            '.identity.' . $matches[2];

                $this->checkResource( $resource );
                $acl->allow( $role, $resource );
            }

            foreach ( $structures as $structure )
            {
                $this->checkResource( $structure->resource );
                $acl->allow( $role, $structure->resource, $structure->privilege );
            }
        }

        return $role;
    }
public function checkRole( $role, $parent = null )
    {
        if ( null === $role )
        {
            return null;
        }

        if ( $role instanceof Acl\Role\RoleInterface )
        {
            $role = $role->getRoleId();
        }

        $acl = $this->getAcl();

        if ( ! $acl->hasRole( $role ) )
        {
            if ( null === $parent )
            {
                $parent = $this->getParentId( $role );
            }
            elseif ( $parent instanceof Acl\Role\RoleInterface )
            {
                $parent = $parent->getRoleId();
            }

            $parent = $this->checkRole( $parent );
            $acl->addRole( $role, (array) $parent );

            $matches    = array();
            $structures = array();

            if ( preg_match( '/^(\d+)$/', $role, $matches ) ) //group
            {
                $structures = $this->getMapper()
                                   ->findAllByGroupId( $matches[1] );
            }
            else if ( preg_match( '/^(\d+)\.(\d+)$/', $role, $matches ) ) //user
            {
                $structures = $this->getMapper()
                                   ->findAllByUserId( $matches[2] );

                $resource = 'user.group.' . $matches[1] .
                            '.identity.' . $matches[2];

                $this->checkResource( $resource );
                $acl->allow( $role, $resource );
            }

            foreach ( $structures as $structure )
            {
                $this->checkResource( $structure->resource );
                $acl->allow( $role, $structure->resource, $structure->privilege );
            }
        }

        return $role;
    }
public function checkRole ( $ role , $ parent = null ) { if ( null === $ role ) { return null ; } if ( $ role instanceof Acl \ Role \ RoleInterface ) { $ role = $ role -> getRoleId ( ) ; } $ acl = $ this -> getAcl ( ) ; if ( ! $ acl -> hasRole ( $ role ) ) { if ( null === $ parent ) { $ parent = $ this -> getParentId ( $ role ) ; } elseif ( $ parent instanceof Acl \ Role \ RoleInterface ) { $ parent = $ parent -> getRoleId ( ) ; } $ parent = $ this -> checkRole ( $ parent ) ; $ acl -> addRole ( $ role , ( array ) $ parent ) ; $ matches = array ( ) ; $ structures = array ( ) ; if ( preg_match ( '/^(\d+)$/' , $ role , $ matches ) ) //group { $ structures = $ this -> getMapper ( ) -> findAllByGroupId ( $ matches [ 1 ] ) ; } else if ( preg_match ( '/^(\d+)\.(\d+)$/' , $ role , $ matches ) ) //user { $ structures = $ this -> getMapper ( ) -> findAllByUserId ( $ matches [ 2 ] ) ; $ resource = 'user.group.' . $ matches [ 1 ] . '.identity.' . $ matches [ 2 ] ; $ this -> checkResource ( $ resource ) ; $ acl -> allow ( $ role , $ resource ) ; } foreach ( $ structures as $ structure ) { $ this -> checkResource ( $ structure -> resource ) ; $ acl -> allow ( $ role , $ structure -> resource , $ structure -> privilege ) ; } } return $ role ; }
Check existence of a role

@param string|\Zend\Permissions\Acl\Role\RoleInterface $role
@return string
Check existence of a role