mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed an issue where privileges were revoked using SQL query on objects like tables that do not correctly show in SQL tab. Fixes #4567
This commit is contained in:
parent
d38f520805
commit
b764046587
@ -22,6 +22,7 @@ Housekeeping
|
|||||||
Bug fixes
|
Bug fixes
|
||||||
*********
|
*********
|
||||||
|
|
||||||
|
| `Issue #4567 <https://redmine.postgresql.org/issues/4567>`_ - Fixed an issue where privileges were revoked using SQL query on objects like tables that do not correctly show in SQL tab.
|
||||||
| `Issue #5849 <https://redmine.postgresql.org/issues/5849>`_ - Ensure that trigger function SQL should have 'create or replace function' instead of 'create function' only.
|
| `Issue #5849 <https://redmine.postgresql.org/issues/5849>`_ - Ensure that trigger function SQL should have 'create or replace function' instead of 'create function' only.
|
||||||
| `Issue #6419 <https://redmine.postgresql.org/issues/6419>`_ - Fixed blank screen issue on windows and also made changes to use NWjs manifest for remembering window size.
|
| `Issue #6419 <https://redmine.postgresql.org/issues/6419>`_ - Fixed blank screen issue on windows and also made changes to use NWjs manifest for remembering window size.
|
||||||
| `Issue #6531 <https://redmine.postgresql.org/issues/6531>`_ - Fixed the export image issue where relation lines are over the nodes.
|
| `Issue #6531 <https://redmine.postgresql.org/issues/6531>`_ - Fixed the export image issue where relation lines are over the nodes.
|
||||||
|
@ -129,6 +129,11 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.name)}}
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{### ACL on Table ###}
|
{### ACL on Table ###}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
{% for priv in data.revoke_all %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "TABLE", priv, data.name, data.schema)}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if data.relacl %}
|
{% if data.relacl %}
|
||||||
|
|
||||||
{% for priv in data.relacl %}
|
{% for priv in data.relacl %}
|
||||||
|
@ -130,6 +130,11 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.name)}}
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{### ACL on Table ###}
|
{### ACL on Table ###}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
{% for priv in data.revoke_all %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "TABLE", priv, data.name, data.schema)}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if data.relacl %}
|
{% if data.relacl %}
|
||||||
|
|
||||||
{% for priv in data.relacl %}
|
{% for priv in data.relacl %}
|
||||||
|
@ -148,6 +148,11 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.name)}}
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{### ACL on Table ###}
|
{### ACL on Table ###}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
{% for priv in data.revoke_all %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "TABLE", priv, data.name, data.schema)}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if data.relacl %}
|
{% if data.relacl %}
|
||||||
|
|
||||||
{% for priv in data.relacl %}
|
{% for priv in data.relacl %}
|
||||||
|
@ -118,6 +118,11 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.name)}}
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{### ACL on Table ###}
|
{### ACL on Table ###}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
{% for priv in data.revoke_all %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "TABLE", priv, data.name, data.schema)}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if data.relacl %}
|
{% if data.relacl %}
|
||||||
|
|
||||||
{% for priv in data.relacl %}
|
{% for priv in data.relacl %}
|
||||||
|
@ -625,8 +625,32 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
|
|||||||
elif not estimated_row_count:
|
elif not estimated_row_count:
|
||||||
res['rows'][0]['rows_cnt'] = estimated_row_count
|
res['rows'][0]['rows_cnt'] = estimated_row_count
|
||||||
|
|
||||||
|
# Fetch privileges
|
||||||
|
sql = render_template("/".join([self.table_template_path,
|
||||||
|
self._ACL_SQL]),
|
||||||
|
tid=tid, scid=scid)
|
||||||
|
status, tblaclres = self.conn.execute_dict(sql)
|
||||||
|
if not status:
|
||||||
|
return internal_server_error(errormsg=res)
|
||||||
|
|
||||||
|
# Get Formatted Privileges
|
||||||
|
res['rows'][0].update(self._format_tbacl_from_db(tblaclres['rows']))
|
||||||
|
|
||||||
return True, res
|
return True, res
|
||||||
|
|
||||||
|
def _format_tbacl_from_db(self, tbacl):
|
||||||
|
"""
|
||||||
|
Returns privileges.
|
||||||
|
Args:
|
||||||
|
tbacl: Privileges Dict
|
||||||
|
"""
|
||||||
|
privileges = []
|
||||||
|
for row in tbacl:
|
||||||
|
priv = parse_priv_from_db(row)
|
||||||
|
privileges.append(priv)
|
||||||
|
|
||||||
|
return {"acl": privileges}
|
||||||
|
|
||||||
def _format_column_list(self, data):
|
def _format_column_list(self, data):
|
||||||
# Now we have all lis of columns which we need
|
# Now we have all lis of columns which we need
|
||||||
# to include in our create definition, Let's format them
|
# to include in our create definition, Let's format them
|
||||||
@ -671,6 +695,12 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
|
|||||||
if 'relacl' in data:
|
if 'relacl' in data:
|
||||||
data['relacl'] = parse_priv_to_db(data['relacl'], self.acl)
|
data['relacl'] = parse_priv_to_db(data['relacl'], self.acl)
|
||||||
|
|
||||||
|
if 'acl' in data:
|
||||||
|
for acl in data['acl']:
|
||||||
|
data.update({'revoke_all': []})
|
||||||
|
if len(acl['privileges']) > 1:
|
||||||
|
data['revoke_all'].append(acl['grantee'])
|
||||||
|
|
||||||
# if table is partitions then
|
# if table is partitions then
|
||||||
if 'relispartition' in data and data['relispartition']:
|
if 'relispartition' in data and data['relispartition']:
|
||||||
table_sql = render_template("/".join([self.partition_template_path,
|
table_sql = render_template("/".join([self.partition_template_path,
|
||||||
|
Loading…
Reference in New Issue
Block a user