public function canView($resourceUri) {
        //Check if the data has been loaded yet, and load it if not
        if (!$this->ready) {
            $this->init();
        }

        //Check that this node is not beyond the default folder if the max level flag is set
        if ($this->maxLevelSetAtDefault) {
            //Check by seeing that the default folder is within the resource uri
            if (false === strpos($resourceUri, $this->defaultFolder)) {
                return false;
            }
        }

        //The exception message should pretty much explain the purpose of this block
        try {
            $roles = array_map(function ($role) {
                if (
                    $role instanceof \Symfony\Component\Security\Core\Role\SwitchUserRole ||
                    $role instanceof \Symfony\Component\Security\Core\Role\Role
                    ) {
                    return $role->getRole();
                } else {
                    return (string)$role;
                }
            }, $this->securityContext->getToken()->getRoles());
        } catch (\Exception $e) {
            throw new \Exception('The Report Bundle requires the roles to either be in string format or castable to a string');
        }

        //Call the check node method
        return $this->checkNode($resourceUri, $roles);
    }