private function isFilterable(): bool
    {
        if (empty($this->user)) {
            return false;
        }

        if (! array_key_exists('id', $this->user)) {
            return false;
        }

        if ($this->isSuperuser()) {
            return false;
        }

        if ($this->isSkipTable()) {
            return false;
        }

        $controllerName = $this->getControllerClassName();

        // no relevant controller found for specified table
        if (! $controllerName) {
            return false;
        }

        // table's controller is cake's default controller, this is probably a many-to-many join table
        if ('Cake\Controller\Controller' === $controllerName) {
            return false;
        }

        return true;
    }