mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-11-02 20:30:17 -06:00
Fixed an issue in the search object when searching in 'all types' or 'subscription' if the user doesn't have access to the subscription. Fixes #6448
This commit is contained in:
1 parent
b81ff45d34
commit
80ccd62d38
6 files changed
+29
-2
No files matched your search
@@ -20,5 +20,6 @@ Bug fixes
|
|||||||
|
|
||||||
| `Issue #6388 <https://redmine.postgresql.org/issues/6388>`_ - Fixed replace keyboard shortcut issue in the query tool on the normal keyboard layout.
|
| `Issue #6388 <https://redmine.postgresql.org/issues/6388>`_ - Fixed replace keyboard shortcut issue in the query tool on the normal keyboard layout.
|
||||||
| `Issue #6398 <https://redmine.postgresql.org/issues/6398>`_ - Fixed an issue where detaching the query editor panel gives a blank white panel.
|
| `Issue #6398 <https://redmine.postgresql.org/issues/6398>`_ - Fixed an issue where detaching the query editor panel gives a blank white panel.
|
||||||
|
| `Issue #6448 <https://redmine.postgresql.org/issues/6448>`_ - Fixed an issue in the search object when searching in 'all types' or 'subscription' if the user doesn't have access to the subscription.
|
||||||
| `Issue #6489 <https://redmine.postgresql.org/issues/6489>`_ - Fixed an issue where Execute/Refresh button should not be disabled when we run the empty query.
|
| `Issue #6489 <https://redmine.postgresql.org/issues/6489>`_ - Fixed an issue where Execute/Refresh button should not be disabled when we run the empty query.
|
||||||
| `Issue #6541 <https://redmine.postgresql.org/issues/6541>`_ - Ensure that setting 'Open in new browser tab' should be visible, it should not be based on the value of 'ENABLE_PSQL'.
|
| `Issue #6541 <https://redmine.postgresql.org/issues/6541>`_ - Ensure that setting 'Open in new browser tab' should be visible, it should not be based on the value of 'ENABLE_PSQL'.
|
||||||
@@ -330,6 +330,7 @@ FROM (
|
|||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if 'subscription' not in skip_obj_type%}
|
||||||
{% if all_obj or obj_type in ['subscription'] %}
|
{% if all_obj or obj_type in ['subscription'] %}
|
||||||
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
||||||
@@ -338,6 +339,7 @@ FROM (
|
|||||||
{% if all_obj %}
|
{% if all_obj %}
|
||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% if all_obj or obj_type in ['language'] %}
|
{% if all_obj or obj_type in ['language'] %}
|
||||||
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['language'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['language'] }} AS show_node, NULL AS other_info
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ FROM (
|
|||||||
{% if all_obj %}
|
{% if all_obj %}
|
||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if 'subscription' not in skip_obj_type%}
|
||||||
{% if all_obj or obj_type in ['subscription'] %}
|
{% if all_obj or obj_type in ['subscription'] %}
|
||||||
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
||||||
@@ -355,6 +355,7 @@ FROM (
|
|||||||
{% if all_obj %}
|
{% if all_obj %}
|
||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% if all_obj or obj_type in ['language'] %}
|
{% if all_obj or obj_type in ['language'] %}
|
||||||
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['language'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['language'] }} AS show_node, NULL AS other_info
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ FROM (
|
|||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if 'subscription' not in skip_obj_type%}
|
||||||
{% if all_obj or obj_type in ['subscription'] %}
|
{% if all_obj or obj_type in ['subscription'] %}
|
||||||
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
||||||
@@ -379,6 +380,7 @@ FROM (
|
|||||||
{% if all_obj %}
|
{% if all_obj %}
|
||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if all_obj or obj_type in ['language'] %}
|
{% if all_obj or obj_type in ['language'] %}
|
||||||
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
||||||
|
|||||||
@@ -378,6 +378,7 @@ FROM (
|
|||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if 'subscription' not in skip_obj_type%}
|
||||||
{% if all_obj or obj_type in ['subscription'] %}
|
{% if all_obj or obj_type in ['subscription'] %}
|
||||||
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name,
|
||||||
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
{{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info
|
||||||
@@ -386,6 +387,7 @@ FROM (
|
|||||||
{% if all_obj %}
|
{% if all_obj %}
|
||||||
UNION
|
UNION
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if all_obj or obj_type in ['language'] %}
|
{% if all_obj or obj_type in ['language'] %}
|
||||||
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name,
|
||||||
|
|||||||
@@ -89,7 +89,23 @@ class SearchObjectsHelper:
|
|||||||
**kwargs
|
**kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _check_permission(self, obj_type, conn, skip_obj_type):
|
||||||
|
"""
|
||||||
|
This function return whether user has permission to see type
|
||||||
|
:param obj_type:
|
||||||
|
:param conn:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if obj_type == 'all':
|
||||||
|
status, error = conn.execute_dict('select * from pg_subscription')
|
||||||
|
if 'permission denied' in error:
|
||||||
|
skip_obj_type.append('subscription')
|
||||||
|
|
||||||
|
return skip_obj_type
|
||||||
|
|
||||||
def search(self, text, obj_type=None):
|
def search(self, text, obj_type=None):
|
||||||
|
skip_obj_type = []
|
||||||
conn = self.manager.connection(did=self.did)
|
conn = self.manager.connection(did=self.did)
|
||||||
last_system_oid = (self.manager.db_info[self.did])['datlastsysoid'] \
|
last_system_oid = (self.manager.db_info[self.did])['datlastsysoid'] \
|
||||||
if self.manager.db_info is not None and self.did in \
|
if self.manager.db_info is not None and self.did in \
|
||||||
@@ -99,6 +115,8 @@ class SearchObjectsHelper:
|
|||||||
node_labels = self.get_supported_types(skip_check=True)
|
node_labels = self.get_supported_types(skip_check=True)
|
||||||
# escape the single quote from search text
|
# escape the single quote from search text
|
||||||
text = text.replace("'", "''")
|
text = text.replace("'", "''")
|
||||||
|
skip_obj_type = self._check_permission(obj_type, conn,
|
||||||
|
skip_obj_type)
|
||||||
|
|
||||||
# Column catalog_level has values as
|
# Column catalog_level has values as
|
||||||
# N - Not a catalog schema
|
# N - Not a catalog schema
|
||||||
@@ -109,7 +127,8 @@ class SearchObjectsHelper:
|
|||||||
search_text=text.lower(), obj_type=obj_type,
|
search_text=text.lower(), obj_type=obj_type,
|
||||||
show_system_objects=self.show_system_objects,
|
show_system_objects=self.show_system_objects,
|
||||||
show_node_prefs=show_node_prefs, _=gettext,
|
show_node_prefs=show_node_prefs, _=gettext,
|
||||||
last_system_oid=last_system_oid)
|
last_system_oid=last_system_oid,
|
||||||
|
skip_obj_type=skip_obj_type)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not status:
|
if not status:
|
||||||
|
|||||||
Reference in new issue
Block a user