From 3ff06da772b27274dc28702a09abe7eece37a38d Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Thu, 3 Mar 2016 14:08:28 +0000 Subject: [PATCH] Security Labels, Privileges and Variables macros for the functions modules. Usage of the macros: Security labels: SECLABLE.SET(conn, 'FUNCTION', func_name, provider, security_label, func_schema, func_args) SECLABLE.UNSET(conn, 'FUNCTION', func_name, provider, func_schema, func_args) Privileges: PRIVILEGE.SET(conn, 'FUNCTION', grantee, func_name, privileges_without_grant, privileges_with_grant, func_schema, func_args) PRIVILEGE.UNSETALL(conn, 'FUNCTION', grantee, func_name, func_schema, func_args) Variables: VARIABLES.SET(conn, 'FUNCTION', func_name, options, func_schema, func_args) VARIABLES.UNSET(conn, 'FUNCTION', func_name, options, func_schema, func_args) --- .../templates/macros/functions/privilege.macros | 14 ++++++++++++++ .../templates/macros/functions/security.macros | 9 +++++++++ .../templates/macros/functions/variable.macros | 13 +++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/privilege.macros create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/variable.macros diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/privilege.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/privilege.macros new file mode 100644 index 000000000..075e76847 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/privilege.macros @@ -0,0 +1,14 @@ +{##############################################} +{# Macros for Privileges (functions module) #} +{##############################################} +{% macro SET(conn, type, role, param, priv, with_grant, schema, func_args) -%} +{% if priv %} +GRANT {{ priv }} ON {{ type }} {{ conn|qtIdent(schema, param) }}({{func_args}}) TO {{ conn|qtIdent(role) }}; +{% endif %} +{% if with_grant %} +GRANT {{ with_grant }} ON {{ type }} {{ conn|qtIdent(schema, param) }}({{func_args}}) TO {{ conn|qtIdent(role) }} WITH GRANT OPTION; +{% endif %} +{%- endmacro %} +{% macro UNSETALL(conn, type, role, param, schema, func_args) -%} +REVOKE ALL ON {{ type }} {{ conn|qtIdent(schema, param) }}({{func_args}}) FROM {{conn|qtIdent(role) }}; +{%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros new file mode 100644 index 000000000..dd2a0863a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros @@ -0,0 +1,9 @@ +{#################################################} +{# Macros for Security Labels (functions module) #} +{#################################################} +{% macro SET(conn, type, name, provider, label, schema, func_args) -%} +SECURITY LABEL FOR {{ provider }} ON {{ type }} {{ conn|qtIdent(schema, name) }}({{func_args}}) IS {{ label|qtLiteral }}; +{%- endmacro %} +{% macro UNSET(conn, type, name, provider, schema, func_args) -%} +SECURITY LABEL FOR {{ provider }} ON {{ type }} {{ conn|qtIdent(schema, name) }}({{func_args}}) IS NULL; +{%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/variable.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/variable.macros new file mode 100644 index 000000000..02f330709 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/variable.macros @@ -0,0 +1,13 @@ +{################################################} +{# Macros for Variables (functions module) #} +{################################################} +{% macro SET(conn, object_type, object_name, options, schema, func_args) -%} +ALTER {{object_type}} {{ conn|qtIdent(schema, object_name) }}({{func_args}}) + SET ({% for opt in options %}{% if loop.index != 1 %} +, {% endif %}{{ conn|qtIdent(opt.name) }}={{ opt.value|qtLiteral }}{% endfor %}); +{%- endmacro %} +{% macro UNSET(conn, object_type, object_name, options, schema, func_args) -%} +ALTER {{object_type}} {{ conn|qtIdent(schema, object_name) }}({{func_args}}) + RESET ({% for opt in options %}{% if loop.index != 1 %} +, {% endif %}{{ conn|qtIdent(opt.name) }}{% endfor %}); +{%- endmacro %}