Habari\AdminHandler::access_allowed PHP Method

access_allowed() private method

Checks if the currently logged in user has access to a page and post type.
private access_allowed ( $page, $type )
    private function access_allowed($page, $type)
    {
        $user = User::identify();
        $require_any = array();
        $result = false;
        switch ($page) {
            case 'comment':
            case 'comments':
            case 'ajax_comments':
            case 'ajax_in_edit':
            case 'ajax_update_comment':
                $require_any = array('manage_all_comments' => true, 'manage_own_post_comments' => true);
                break;
            case 'tags':
            case 'ajax_tags':
            case 'ajax_get_tags':
                $require_any = array('manage_tags' => true);
                break;
            case 'options':
                $require_any = array('manage_options' => true);
                break;
            case 'themes':
                $require_any = array('manage_themes' => true, 'manage_theme_config' => true);
                break;
            case 'activate_theme':
                $require_any = array('manage_themes' => true);
                break;
            case 'preview_theme':
                $require_any = array('manage_themes' => true);
                break;
            case 'plugins':
                $require_any = array('manage_plugins' => true, 'manage_plugins_config' => true);
                break;
            case 'plugin_toggle':
                $require_any = array('manage_plugins' => true);
                break;
            case 'import':
                $require_any = array('manage_import' => true);
                break;
            case 'users':
            case 'ajax_update_users':
            case 'ajax_users':
                $require_any = array('manage_users' => true);
                break;
            case 'user':
                $require_any = array('manage_users' => true, 'manage_self' => true);
                break;
            case 'groups':
            case 'group':
            case 'ajax_update_groups':
            case 'ajax_groups':
                $require_any = array('manage_groups' => true);
                break;
            case 'logs':
            case 'ajax_delete_logs':
            case 'ajax_logs':
                $require_any = array('manage_logs' => true);
                break;
            case 'publish':
            case 'ajax_media':
            case 'ajax_media_panel':
            case 'ajax_media_upload':
                $type = Post::type_name($type);
                $require_any = array('post_any' => array(ACL::get_bitmask('create'), ACL::get_bitmask('edit')), 'post_' . $type => array(ACL::get_bitmask('create'), ACL::get_bitmask('edit')), 'own_posts' => array(ACL::get_bitmask('create'), ACL::get_bitmask('edit')));
                break;
            case 'delete_post':
                $type = Post::type_name($type);
                $require_any = array('post_any' => ACL::get_bitmask('delete'), 'post_' . $type => ACL::get_bitmask('delete'), 'own_posts' => ACL::get_bitmask('delete'));
                break;
            case 'posts':
            case 'ajax_posts':
            case 'ajax_update_posts':
                $require_any = array('post_any' => array(ACL::get_bitmask('delete'), ACL::get_bitmask('edit')), 'own_posts' => array(ACL::get_bitmask('delete'), ACL::get_bitmask('edit')));
                foreach (Post::list_active_post_types() as $type => $type_id) {
                    $require_any['post_' . $type] = array(ACL::get_bitmask('delete'), ACL::get_bitmask('edit'));
                }
                break;
            case 'sysinfo':
                $require_any = array('super_user' => true);
                break;
            case 'dashboard':
            case 'ajax_dashboard':
                $result = true;
                break;
            case 'ajax_add_block':
                $result = true;
                break;
            case 'ajax_delete_block':
                $result = true;
                break;
            case 'configure_block':
                $result = true;
                break;
            case 'ajax_save_areas':
                $result = true;
                break;
            case 'locale':
                $result = true;
                break;
            case 'admin_ajax':
                $result = true;
                break;
            case 'ajax_facets':
                $result = true;
                break;
            default:
                break;
        }
        $require_any = Plugins::filter('admin_access_tokens', $require_any, $page, $type);
        foreach ($require_any as $token => $access) {
            $access = Utils::single_array($access);
            foreach ($access as $mask) {
                if (is_bool($mask) && $user->can($token)) {
                    $result = true;
                    break;
                } elseif ($user->can($token, $mask)) {
                    $result = true;
                    break 2;
                }
            }
        }
        $result = Plugins::filter('admin_access', $result, $page, $type);
        return $result;
    }