mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
1) Make folder name pluralise inside 'templates' folder and fix naming inconsistency.
2) Remove unwanted functions "module_js()" from the code. 3) Change naming convention for 'Roles' module.
This commit is contained in:
@@ -67,7 +67,7 @@ class RoleModule(CollectionNodeModule):
|
||||
"browser/css/collection.css",
|
||||
node_type=self.node_type
|
||||
),
|
||||
render_template("role/css/role.css")]
|
||||
render_template("roles/css/role.css")]
|
||||
|
||||
for submodule in self.submodules:
|
||||
snippets.extend(submodule.csssnippets)
|
||||
@@ -108,7 +108,6 @@ class RoleView(PGChildNodeView):
|
||||
'dependency': [{'get': 'dependencies'}],
|
||||
'dependent': [{'get': 'dependents'}],
|
||||
'children': [{'get': 'children'}],
|
||||
'module.js': [{}, {}, {'get': 'module_js'}],
|
||||
'vopts': [{}, {'get': 'voptions'}],
|
||||
'variables': [{'get': 'variables'}],
|
||||
})
|
||||
@@ -470,20 +469,13 @@ rolmembership:{
|
||||
_("Connection to the server has been lost.")
|
||||
)
|
||||
|
||||
ver = self.manager.version
|
||||
|
||||
self.sql_path = 'role/sql/{0}/'.format(
|
||||
'post9_4' if ver >= 90500 else
|
||||
'post9_1' if ver >= 90200 else
|
||||
'post9_0' if ver >= 90100 else
|
||||
'post8_4'
|
||||
)
|
||||
self.sql_path = 'roles/sql/#{0}#'.format(self.manager.version)
|
||||
|
||||
self.alterKeys = [
|
||||
u'rolcanlogin', u'rolsuper', u'rolcreatedb',
|
||||
u'rolcreaterole', u'rolinherit', u'rolreplication',
|
||||
u'rolconnlimit', u'rolvaliduntil', u'rolpassword'
|
||||
] if ver >= 90200 else [
|
||||
] if self.manager.version >= 90200 else [
|
||||
u'rolcanlogin', u'rolsuper', u'rolcreatedb',
|
||||
u'rolcreaterole', u'rolinherit', u'rolconnlimit',
|
||||
u'rolvaliduntil', u'rolpassword'
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
{% import 'macros/security.macros' as SECLABEL %}
|
||||
{% import 'macros/variable.macros' as VARIABLE %}
|
||||
CREATE {% if data.rolcanlogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %}
|
||||
|
||||
LOGIN{% else %}
|
||||
|
||||
NOLOGIN{% endif %}{% if data.rolsuper %}
|
||||
|
||||
SUPERUSER{% else %}
|
||||
|
||||
NOSUPERUSER{% endif %}{% if data.rolcreatedb %}
|
||||
|
||||
CREATEDB{% else %}
|
||||
|
||||
NOCREATEDB{% endif %}{% if data.rolcreaterole %}
|
||||
|
||||
CREATEROLE{% else %}
|
||||
|
||||
NOCREATEROLE{% endif %}{% if data.rolinherit is sameas true %}
|
||||
|
||||
INHERIT{% else %}
|
||||
|
||||
NOINHERIT{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
|
||||
|
||||
CONNECTION LIMIT {{ data.rolconnlimit }}{% endif %}{% if data.rolvaliduntil and data.rolvaliduntil is not none %}
|
||||
|
||||
VALID UNTIL {{ data.rolvaliduntil|qtLiteral }} {% endif %}{% if data.rolpassword %}
|
||||
|
||||
PASSWORD {% if data.rolpassword is none %}NULL{% else %}{% if dummy %}'xxxxxx'{% else %} {{ data.rolpassword | qtLiteral }}{% endif %}{% endif %}{% endif %};{% if data.rolsuper and data.rolcatupdate is sameas false %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ data.rolname|qtLiteral }};{% endif %}{% if data.members and data.members|length > 0 %}
|
||||
|
||||
|
||||
GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(data.rolname) }};{% endif %}{% if data.admins and data.admins|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(data.rolname) }} WITH ADMIN OPTION;{% endif %}{% if data.variables %}
|
||||
|
||||
{% for var in data.variables %}
|
||||
|
||||
ALTER ROLE {{ self.conn|qtIdent(data.rolname) }}
|
||||
SET {{ conn|qtIdent(var.name) }} TO {{ var.value }};
|
||||
{% endfor %}{% endif %}{% if data.description %}
|
||||
|
||||
COMMENT ON ROLE {{ conn|qtIdent(data.rolname) }} IS {{ data.description|qtLiteral }};
|
||||
{% endif %}
|
||||
@@ -1,8 +0,0 @@
|
||||
SELECT
|
||||
r.oid, r.rolname, r.rolcanlogin, r.rolsuper
|
||||
FROM
|
||||
pg_roles r
|
||||
{% if rid %}
|
||||
WHERE r.oid = {{ rid|qtLiteral }}::OID
|
||||
{% endif %}
|
||||
ORDER BY r.rolcanlogin, r.rolname
|
||||
@@ -1,16 +0,0 @@
|
||||
SELECT
|
||||
r.oid, r.*,
|
||||
pg_catalog.shobj_description(r.oid, 'pg_authid') AS description,
|
||||
ARRAY(
|
||||
SELECT
|
||||
CASE WHEN am.admin_option THEN '1' ELSE '0' END || rm.rolname
|
||||
FROM
|
||||
(SELECT * FROM pg_auth_members WHERE member = r.oid) am
|
||||
LEFT JOIN pg_catalog.pg_roles rm ON (rm.oid = am.roleid)
|
||||
) rolmembership
|
||||
FROM
|
||||
pg_roles r
|
||||
{% if rid %}
|
||||
WHERE r.oid = {{ rid }}::OID
|
||||
{% endif %}
|
||||
ORDER BY r.rolcanlogin, r.rolname
|
||||
@@ -1,68 +0,0 @@
|
||||
SELECT
|
||||
array_to_string(array_agg(sql), E'\n\n')
|
||||
FROM
|
||||
(SELECT
|
||||
CASE WHEN rolcanlogin THEN '-- User: ' ELSE '-- Role: ' END ||
|
||||
pg_catalog.quote_ident(rolname) ||
|
||||
E'\n-- DROP ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
|
||||
pg_catalog.quote_ident(rolname) || E';\n\nCREATE ' ||
|
||||
CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
|
||||
pg_catalog.quote_ident(rolname) || E' WITH\n ' ||
|
||||
CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' ||
|
||||
CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END ||
|
||||
CASE WHEN rolsuper THEN 'SUPERUSER' ELSE 'NOSUPERUSER' END || E'\n ' ||
|
||||
CASE WHEN rolinherit THEN 'INHERIT' ELSE 'NOINHERIT' END || E'\n ' ||
|
||||
CASE WHEN rolcreatedb THEN 'CREATEDB' ELSE 'NOCREATEDB' END || E'\n ' ||
|
||||
CASE WHEN rolcreaterole THEN 'CREATEROLE' ELSE 'NOCREATEROLE' END || E'\n ' ||
|
||||
CASE WHEN rolconnlimit > 0 THEN E'\n CONNECTION LIMIT ' || rolconnlimit ELSE '' END ||
|
||||
CASE WHEN rolvaliduntil IS NOT NULL THEN E'\n VALID UNTIL ' || quote_literal(rolvaliduntil::text) ELSE '' END || ';' ||
|
||||
-- PostgreSQL < 9.5
|
||||
CASE WHEN rolsuper AND NOT rolcatupdate THEN E'\n\nUPDATE pg_authid SET rolcatupdate=false WHERE rolname=' || pg_catalog.quote_literal(rolname) || ';' ELSE '' END AS sql
|
||||
FROM
|
||||
pg_roles r
|
||||
WHERE
|
||||
r.oid=%(rid)s::OID
|
||||
UNION ALL
|
||||
(SELECT
|
||||
array_to_string(array_agg(sql), E'\n')
|
||||
FROM
|
||||
(SELECT
|
||||
'GRANT ' || array_to_string(array_agg(rolname), ', ') || ' TO ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) ||
|
||||
CASE WHEN admin_option THEN ' WITH ADMIN OPTION;' ELSE ';' END AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
quote_ident(r.rolname) AS rolname, m.admin_option AS admin_option
|
||||
FROM
|
||||
pg_auth_members m
|
||||
LEFT JOIN pg_roles r ON (m.roleid = r.oid)
|
||||
WHERE
|
||||
m.member=%(rid)s::OID
|
||||
ORDER BY
|
||||
r.rolname
|
||||
) a
|
||||
GROUP BY admin_option) s)
|
||||
UNION ALL
|
||||
(SELECT
|
||||
array_to_string(array_agg(sql), E'\n') AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
'ALTER ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value
|
||||
FROM
|
||||
(SELECT
|
||||
unnest(rolconfig) AS rolconfig, rolcanlogin, rolname
|
||||
FROM
|
||||
pg_catalog.pg_roles
|
||||
WHERE
|
||||
oid=%(rid)s::OID
|
||||
) r
|
||||
) a) b)
|
||||
UNION ALL
|
||||
(SELECT
|
||||
'COMMENT ON ROLE ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) || ' IS ' || pg_catalog.quote_literal(description) || ';' AS sql
|
||||
FROM
|
||||
(SELECT pg_catalog.shobj_description(%(rid)s::OID, 'pg_authid') AS description) a
|
||||
WHERE
|
||||
description IS NOT NULL)) AS a
|
||||
@@ -1,102 +0,0 @@
|
||||
{% import 'macros/variable.macros' as VARIABLE %}
|
||||
{% if 'rolname' in data %}
|
||||
{% set rolname=data.rolname %}
|
||||
ALTER{% if rolCanLogin %} USER {% else %} ROLE {% endif %}{{ conn|qtIdent(role) }}
|
||||
RENAME TO {{ conn|qtIdent(rolname) }};
|
||||
|
||||
{% else %}
|
||||
{% set rolname=role %}
|
||||
{% endif %}
|
||||
{% if data|hasAny(alterKeys) %}
|
||||
ALTER {% if rolCanLogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %}
|
||||
|
||||
{% if data.rolcanlogin %}
|
||||
LOGIN{% else %}
|
||||
NOLOGIN{% endif %}{% endif %}{% if 'rolsuper' in data %}
|
||||
|
||||
{% if data.rolsuper %}
|
||||
SUPERUSER{% else %}
|
||||
NOSUPERUSER{% endif %}{% endif %}{% if 'rolcreatedb' in data %}
|
||||
|
||||
{% if data.rolcreatedb %}
|
||||
CREATEDB{% else %}
|
||||
NOCREATEDB{% endif %}{% endif %}{% if 'rolcreaterole' in data %}
|
||||
|
||||
{% if data.rolcreaterole %}
|
||||
CREATEROLE{% else %}
|
||||
NOCREATEROLE{% endif %}{% endif %}{% if 'rolinherit' in data %}
|
||||
|
||||
{% if data.rolinherit %}
|
||||
INHERIT{% else %}
|
||||
NOINHERIT{% endif %}{% endif %}{% if 'rolreplication' in data %}
|
||||
|
||||
{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
|
||||
|
||||
CONNECTION LIMIT {{ data.rolconnlimit }}
|
||||
{% endif %}{% if 'rolvaliduntil' in data %}
|
||||
VALID UNTIL {% if data.rolvaliduntil %}{{ data.rolvaliduntil|qtLiteral }}{% else %}'infinity'
|
||||
{% endif %}{% endif %}{% if 'rolpassword' in data %}
|
||||
|
||||
PASSWORD{% if data.rolpassword is none %} NULL{% else %}{% if dummy %} 'xxxxxx'{% else %} {{ data.rolpassword|qtLiteral }}{% endif %}{% endif %}{% endif %};{% endif %}
|
||||
|
||||
{% if
|
||||
not rolSuper and
|
||||
'rolsuper' in data and
|
||||
'rolcatupdate' not in data and
|
||||
data.rolsuper %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% elif
|
||||
rolSuper and
|
||||
'rolsuper' not in data and
|
||||
'rolcatupdate' in data %}
|
||||
{% if data.rolcatupdate %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=true WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% else %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if 'revoked_admins' in data and
|
||||
data.revoked_admins|length > 0
|
||||
%}
|
||||
|
||||
REVOKE ADMIN OPTION FOR {{ conn|qtIdent(data.revoked_admins)|join(', ') }} FROM {{ conn|qtIdent(rolname) }};{% endif %}{% if 'revoked' in data and data.revoked|length > 0 %}
|
||||
|
||||
REVOKE {{ conn|qtIdent(data.revoked)|join(', ') }} FROM {{ conn|qtIdent(rolname) }};{% endif %}{% if data.admins and data.admins|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(rolname) }} WITH ADMIN OPTION;{% endif %}{% if data.members and data.members|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(rolname) }};{% endif %}
|
||||
{% if 'variables' in data and data.variables|length > 0 %}
|
||||
{% set variables = data.variables %}
|
||||
{% if 'deleted' in variables and variables.deleted|length > 0 %}
|
||||
|
||||
{% for var in variables.deleted %}
|
||||
{{ VARIABLE.RESET(conn, var.database, rolname, var.name) }}
|
||||
{% endfor %}{% endif %}
|
||||
{% if 'added' in variables and variables.added|length > 0 %}
|
||||
|
||||
{% for var in variables.added %}
|
||||
ALTER ROLE {{ self.conn|qtIdent(data.rolname) }}
|
||||
SET {{ conn|qtIdent(var.name) }} TO {{ var.value }};
|
||||
{% endfor %}{% endif %}
|
||||
{% if 'changed' in variables and variables.changed|length > 0 %}
|
||||
|
||||
{% for var in variables.changed %}
|
||||
{{ VARIABLE.APPLY(conn, var.database, rolname, var.name, var.value) }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if 'description' in data %}
|
||||
|
||||
|
||||
COMMENT ON ROLE {{ conn|qtIdent(rolname) }} IS {{ data.description|qtLiteral }};
|
||||
{% endif %}
|
||||
@@ -1,45 +0,0 @@
|
||||
{% import 'macros/security.macros' as SECLABEL %}
|
||||
{% import 'macros/variable.macros' as VARIABLE %}
|
||||
CREATE {% if data.rolcanlogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %}
|
||||
|
||||
LOGIN{% else %}
|
||||
|
||||
NOLOGIN{% endif %}{% if data.rolsuper %}
|
||||
|
||||
SUPERUSER{% else %}
|
||||
|
||||
NOSUPERUSER{% endif %}{% if data.rolcreatedb %}
|
||||
|
||||
CREATEDB{% else %}
|
||||
|
||||
NOCREATEDB{% endif %}{% if data.rolcreaterole %}
|
||||
|
||||
CREATEROLE{% else %}
|
||||
|
||||
NOCREATEROLE{% endif %}{% if data.rolinherit is sameas true %}
|
||||
|
||||
INHERIT{% else %}
|
||||
|
||||
NOINHERIT{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
|
||||
|
||||
CONNECTION LIMIT {{ data.rolconnlimit }}{% endif %}{% if data.rolvaliduntil and data.rolvaliduntil is not none %}
|
||||
|
||||
VALID UNTIL {{ data.rolvaliduntil|qtLiteral }} {% endif %}{% if data.rolpassword %}
|
||||
|
||||
PASSWORD {% if data.rolpassword is none %}NULL{% else %}{% if dummy %}'xxxxxx'{% else %} {{ data.rolpassword | qtLiteral }}{% endif %}{% endif %}{% endif %};{% if data.rolsuper and data.rolcatupdate is sameas false %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ data.rolname|qtLiteral }};{% endif %}{% if data.members and data.members|length > 0 %}
|
||||
|
||||
|
||||
GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(data.rolname) }};{% endif %}{% if data.admins and data.admins|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(data.rolname) }} WITH ADMIN OPTION;{% endif %}{% if data.variables %}
|
||||
|
||||
{% for var in data.variables %}
|
||||
|
||||
{{ VARIABLE.APPLY(conn, var.database, data.rolname, var.name, var.value) }}
|
||||
{% endfor %}{% endif %}{% if data.description %}
|
||||
|
||||
COMMENT ON ROLE {{ conn|qtIdent(data.rolname) }} IS {{ data.description|qtLiteral }};
|
||||
{% endif %}
|
||||
@@ -1,40 +0,0 @@
|
||||
{% if fetch_database %}
|
||||
SELECT 'd' as type, datname,
|
||||
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
|
||||
datdba, datlastsysoid
|
||||
FROM pg_database db
|
||||
UNION
|
||||
SELECT 'M', spcname, null, null, null
|
||||
FROM pg_tablespace where spcowner= {{rid}}::oid
|
||||
ORDER BY 1, 2
|
||||
{% endif %}
|
||||
|
||||
{% if fetch_dependents %}
|
||||
SELECT cl.relkind, COALESCE(cin.nspname, cln.nspname) as nspname,
|
||||
COALESCE(ci.relname, cl.relname) as relname, cl.relname as indname
|
||||
FROM pg_class cl
|
||||
JOIN pg_namespace cln ON cl.relnamespace=cln.oid
|
||||
LEFT OUTER JOIN pg_index ind ON ind.indexrelid=cl.oid
|
||||
LEFT OUTER JOIN pg_class ci ON ind.indrelid=ci.oid
|
||||
LEFT OUTER JOIN pg_namespace cin ON ci.relnamespace=cin.oid
|
||||
WHERE cl.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND cl.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'n', null, nspname, null
|
||||
FROM pg_namespace nsp
|
||||
WHERE nsp.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND nsp.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT CASE WHEN typtype='d' THEN 'd' ELSE 'y' END, null, typname, null
|
||||
FROM pg_type ty
|
||||
WHERE ty.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND ty.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'C', null, conname, null
|
||||
FROM pg_conversion co
|
||||
WHERE co.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND co.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT CASE WHEN prorettype=2279 THEN 'T' ELSE 'p' END, null, proname, null
|
||||
FROM pg_proc pr
|
||||
WHERE pr.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND pr.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'o', null, oprname || '('::text || COALESCE(tl.typname, ''::text) || CASE WHEN tl.oid IS NOT NULL
|
||||
AND tr.oid IS NOT NULL THEN ','::text END || COALESCE(tr.typname, ''::text) || ')'::text, null
|
||||
FROM pg_operator op
|
||||
LEFT JOIN pg_type tl ON tl.oid=op.oprleft
|
||||
LEFT JOIN pg_type tr ON tr.oid=op.oprright
|
||||
WHERE op.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND op.oid > {{lastsysoid}}::oid
|
||||
ORDER BY 1,2,3
|
||||
{% endif %}
|
||||
@@ -1,8 +0,0 @@
|
||||
SELECT
|
||||
r.oid, r.rolname, r.rolcanlogin, r.rolsuper
|
||||
FROM
|
||||
pg_roles r
|
||||
{% if rid %}
|
||||
WHERE r.oid = {{ rid|qtLiteral }}::OID
|
||||
{% endif %}
|
||||
ORDER BY r.rolcanlogin, r.rolname
|
||||
@@ -1,5 +0,0 @@
|
||||
SELECT
|
||||
rolname, rolcanlogin, rolcatupdate, rolsuper
|
||||
FROM
|
||||
pg_roles
|
||||
WHERE oid = {{ rid }}::OID
|
||||
@@ -1,16 +0,0 @@
|
||||
SELECT
|
||||
r.oid, r.*,
|
||||
pg_catalog.shobj_description(r.oid, 'pg_authid') AS description,
|
||||
ARRAY(
|
||||
SELECT
|
||||
CASE WHEN am.admin_option THEN '1' ELSE '0' END || rm.rolname
|
||||
FROM
|
||||
(SELECT * FROM pg_auth_members WHERE member = r.oid) am
|
||||
LEFT JOIN pg_catalog.pg_roles rm ON (rm.oid = am.roleid)
|
||||
) rolmembership
|
||||
FROM
|
||||
pg_roles r
|
||||
{% if rid %}
|
||||
WHERE r.oid = {{ rid|qtLiteral }}::oid
|
||||
{% endif %}
|
||||
ORDER BY r.rolcanlogin, r.rolname
|
||||
@@ -1,98 +0,0 @@
|
||||
SELECT
|
||||
array_to_string(array_agg(sql), E'\n\n')
|
||||
FROM
|
||||
(SELECT
|
||||
CASE WHEN rolcanlogin THEN '-- User: ' ELSE '-- Role: ' END ||
|
||||
pg_catalog.quote_ident(rolname) ||
|
||||
E'\n-- DROP ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
|
||||
pg_catalog.quote_ident(rolname) || E';\n\nCREATE ' ||
|
||||
CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
|
||||
pg_catalog.quote_ident(rolname) || E' WITH\n ' ||
|
||||
CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' ||
|
||||
CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END ||
|
||||
CASE WHEN rolsuper THEN 'SUPERUSER' ELSE 'NOSUPERUSER' END || E'\n ' ||
|
||||
CASE WHEN rolinherit THEN 'INHERIT' ELSE 'NOINHERIT' END || E'\n ' ||
|
||||
CASE WHEN rolcreatedb THEN 'CREATEDB' ELSE 'NOCREATEDB' END || E'\n ' ||
|
||||
CASE WHEN rolcreaterole THEN 'CREATEROLE' ELSE 'NOCREATEROLE' END || E'\n ' ||
|
||||
CASE WHEN rolconnlimit > 0 THEN E'\n CONNECTION LIMIT ' || rolconnlimit ELSE '' END ||
|
||||
CASE WHEN rolvaliduntil IS NOT NULL THEN E'\n VALID UNTIL ' || quote_literal(rolvaliduntil::text) ELSE '' END || ';' ||
|
||||
-- PostgreSQL < 9.5
|
||||
CASE WHEN rolsuper AND NOT rolcatupdate THEN E'\n\nUPDATE pg_authid SET rolcatupdate=false WHERE rolname=' || pg_catalog.quote_literal(rolname) || ';' ELSE '' END AS sql
|
||||
FROM
|
||||
pg_roles r
|
||||
WHERE
|
||||
r.oid=%(rid)s::OID
|
||||
UNION ALL
|
||||
(SELECT
|
||||
array_to_string(array_agg(sql), E'\n')
|
||||
FROM
|
||||
(SELECT
|
||||
'GRANT ' || array_to_string(array_agg(rolname), ', ') || ' TO ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) ||
|
||||
CASE WHEN admin_option THEN ' WITH ADMIN OPTION;' ELSE ';' END AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
quote_ident(r.rolname) AS rolname, m.admin_option AS admin_option
|
||||
FROM
|
||||
pg_auth_members m
|
||||
LEFT JOIN pg_roles r ON (m.roleid = r.oid)
|
||||
WHERE
|
||||
m.member=%(rid)s::OID
|
||||
ORDER BY
|
||||
r.rolname
|
||||
) a
|
||||
GROUP BY admin_option) s)
|
||||
UNION ALL
|
||||
(SELECT
|
||||
array_to_string(array_agg(sql), E'\n') AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
'ALTER ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value
|
||||
FROM
|
||||
(SELECT
|
||||
unnest(rolconfig) AS rolconfig, rolcanlogin, rolname
|
||||
FROM
|
||||
pg_catalog.pg_roles
|
||||
WHERE
|
||||
oid=%(rid)s::OID
|
||||
) r
|
||||
) a) b)
|
||||
-- PostgreSQL >= 9.0
|
||||
UNION ALL
|
||||
(SELECT
|
||||
array_to_string(array_agg(sql), E'\n') AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
'ALTER ROLE ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) ||
|
||||
' IN DATABASE ' || pg_catalog.quote_ident(datname) ||
|
||||
' SET ' || param|| ' TO ' ||
|
||||
CASE
|
||||
WHEN param IN ('search_path', 'temp_tablespaces') THEN value
|
||||
ELSE quote_literal(value)
|
||||
END || ';' AS sql
|
||||
FROM
|
||||
(SELECT
|
||||
datname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value
|
||||
FROM
|
||||
(SELECT
|
||||
d.datname, unnest(c.setconfig) AS rolconfig
|
||||
FROM
|
||||
(SELECT *
|
||||
FROM
|
||||
pg_catalog.pg_db_role_setting dr
|
||||
WHERE
|
||||
dr.setrole=%(rid)s::OID AND dr.setdatabase!=0) c
|
||||
LEFT JOIN pg_catalog.pg_database d ON (d.oid = c.setdatabase)
|
||||
) a
|
||||
) b
|
||||
) d
|
||||
)
|
||||
UNION ALL
|
||||
(SELECT
|
||||
'COMMENT ON ROLE ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) || ' IS ' || pg_catalog.quote_literal(description) || ';' AS sql
|
||||
FROM
|
||||
(SELECT pg_catalog.shobj_description(%(rid)s::OID, 'pg_authid') AS description) a
|
||||
WHERE
|
||||
description IS NOT NULL)) AS a
|
||||
@@ -1,100 +0,0 @@
|
||||
{% import 'macros/variable.macros' as VARIABLE %}
|
||||
{% if 'rolname' in data %}
|
||||
{% set rolname=data.rolname %}
|
||||
ALTER{% if rolCanLogin %} USER {% else %} ROLE {% endif %}{{ conn|qtIdent(role) }}
|
||||
RENAME TO {{ conn|qtIdent(rolname) }};
|
||||
|
||||
{% else %}
|
||||
{% set rolname=role %}
|
||||
{% endif %}
|
||||
{% if data|hasAny(alterKeys) %}
|
||||
ALTER {% if rolCanLogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %}
|
||||
|
||||
{% if data.rolcanlogin %}
|
||||
LOGIN{% else %}
|
||||
NOLOGIN{% endif %}{% endif %}{% if 'rolsuper' in data %}
|
||||
|
||||
{% if data.rolsuper %}
|
||||
SUPERUSER{% else %}
|
||||
NOSUPERUSER{% endif %}{% endif %}{% if 'rolcreatedb' in data %}
|
||||
|
||||
{% if data.rolcreatedb %}
|
||||
CREATEDB{% else %}
|
||||
NOCREATEDB{% endif %}{% endif %}{% if 'rolcreaterole' in data %}
|
||||
|
||||
{% if data.rolcreaterole %}
|
||||
CREATEROLE{% else %}
|
||||
NOCREATEROLE{% endif %}{% endif %}{% if 'rolinherit' in data %}
|
||||
|
||||
{% if data.rolinherit %}
|
||||
INHERIT{% else %}
|
||||
NOINHERIT{% endif %}{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
|
||||
|
||||
CONNECTION LIMIT {{ data.rolconnlimit }}
|
||||
{% endif %}{% if 'rolvaliduntil' in data %}
|
||||
|
||||
VALID UNTIL {% if data.rolvaliduntil %}{{ data.rolvaliduntil|qtLiteral }}{% else %}'infinity'
|
||||
{% endif %}{% endif %}{% if 'rolpassword' in data %}
|
||||
|
||||
PASSWORD{% if data.rolpassword is none %} NULL{% else %}{% if dummy %} 'xxxxxx'{% else %} {{ data.rolpassword|qtLiteral }}{% endif %}{% endif %}{% endif %};{% endif %}
|
||||
|
||||
{% if
|
||||
not rolSuper and
|
||||
'rolsuper' in data and
|
||||
'rolcatupdate' not in data and
|
||||
data.rolsuper %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% elif
|
||||
rolSuper and
|
||||
'rolsuper' not in data and
|
||||
'rolcatupdate' in data %}
|
||||
{% if data.rolcatupdate %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=true WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% else %}
|
||||
|
||||
|
||||
UPDATE pg_authid SET rolcatupdate=false WHERE rolname = {{ rolname|qtLiteral }};
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if 'revoked_admins' in data and
|
||||
data.revoked_admins|length > 0
|
||||
%}
|
||||
|
||||
REVOKE ADMIN OPTION FOR {{ conn|qtIdent(data.revoked_admins)|join(', ') }} FROM {{ conn|qtIdent(rolname) }};{% endif %}{% if 'revoked' in data and data.revoked|length > 0 %}
|
||||
|
||||
REVOKE {{ conn|qtIdent(data.revoked)|join(', ') }} FROM {{ conn|qtIdent(rolname) }};{% endif %}{% if data.admins and data.admins|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(rolname) }} WITH ADMIN OPTION;{% endif %}{% if data.members and data.members|length > 0 %}
|
||||
|
||||
GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(rolname) }};{% endif %}
|
||||
{% if 'variables' in data and data.variables|length > 0 %}
|
||||
{% set variables = data.variables %}
|
||||
{% if 'deleted' in variables and variables.deleted|length > 0 %}
|
||||
|
||||
{% for var in variables.deleted %}
|
||||
{{ VARIABLE.RESET(conn, var.database, rolname, var.name) }}
|
||||
{% endfor %}{% endif %}
|
||||
{% if 'added' in variables and variables.added|length > 0 %}
|
||||
|
||||
{% for var in variables.added %}
|
||||
{{ VARIABLE.APPLY(conn, var.database, rolname, var.name, var.value) }}
|
||||
{% endfor %}{% endif %}
|
||||
{% if 'changed' in variables and variables.changed|length > 0 %}
|
||||
|
||||
{% for var in variables.changed %}
|
||||
{{ VARIABLE.APPLY(conn, var.database, rolname, var.name, var.value) }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if 'description' in data %}
|
||||
|
||||
|
||||
COMMENT ON ROLE {{ conn|qtIdent(rolname) }} IS {{ data.description|qtLiteral }};
|
||||
{% endif %}
|
||||
@@ -1,40 +0,0 @@
|
||||
{% if fetch_database %}
|
||||
SELECT 'd' as type, datname,
|
||||
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
|
||||
datdba, datlastsysoid
|
||||
FROM pg_database db
|
||||
UNION
|
||||
SELECT 'M', spcname, null, null, null
|
||||
FROM pg_tablespace where spcowner= {{rid}}::oid
|
||||
ORDER BY 1, 2
|
||||
{% endif %}
|
||||
|
||||
{% if fetch_dependents %}
|
||||
SELECT cl.relkind, COALESCE(cin.nspname, cln.nspname) as nspname,
|
||||
COALESCE(ci.relname, cl.relname) as relname, cl.relname as indname
|
||||
FROM pg_class cl
|
||||
JOIN pg_namespace cln ON cl.relnamespace=cln.oid
|
||||
LEFT OUTER JOIN pg_index ind ON ind.indexrelid=cl.oid
|
||||
LEFT OUTER JOIN pg_class ci ON ind.indrelid=ci.oid
|
||||
LEFT OUTER JOIN pg_namespace cin ON ci.relnamespace=cin.oid
|
||||
WHERE cl.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND cl.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'n', null, nspname, null
|
||||
FROM pg_namespace nsp
|
||||
WHERE nsp.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND nsp.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT CASE WHEN typtype='d' THEN 'd' ELSE 'y' END, null, typname, null
|
||||
FROM pg_type ty
|
||||
WHERE ty.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND ty.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'C', null, conname, null
|
||||
FROM pg_conversion co
|
||||
WHERE co.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND co.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT CASE WHEN prorettype=2279 THEN 'T' ELSE 'p' END, null, proname, null
|
||||
FROM pg_proc pr
|
||||
WHERE pr.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND pr.oid > {{lastsysoid}}::oid
|
||||
UNION ALL SELECT 'o', null, oprname || '('::text || COALESCE(tl.typname, ''::text) || CASE WHEN tl.oid IS NOT NULL
|
||||
AND tr.oid IS NOT NULL THEN ','::text END || COALESCE(tr.typname, ''::text) || ')'::text, null
|
||||
FROM pg_operator op
|
||||
LEFT JOIN pg_type tl ON tl.oid=op.oprleft
|
||||
LEFT JOIN pg_type tr ON tr.oid=op.oprright
|
||||
WHERE op.oid IN (SELECT objid FROM pg_shdepend WHERE refobjid={{rid}}::oid) AND op.oid > {{lastsysoid}}::oid
|
||||
ORDER BY 1,2,3
|
||||
{% endif %}
|
||||
@@ -1,5 +0,0 @@
|
||||
SELECT
|
||||
rolname, rolcanlogin, rolcatupdate, rolsuper
|
||||
FROM
|
||||
pg_roles
|
||||
WHERE oid = {{ rid }}::OID
|
||||
@@ -1,25 +0,0 @@
|
||||
SELECT
|
||||
split_part(rolconfig, '=', 1) AS name, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value, NULL::text AS database
|
||||
FROM
|
||||
(SELECT
|
||||
unnest(rolconfig) AS rolconfig, rolcanlogin, rolname
|
||||
FROM
|
||||
pg_catalog.pg_roles
|
||||
WHERE
|
||||
oid={{ rid|qtLiteral }}::OID
|
||||
) r
|
||||
|
||||
UNION ALL
|
||||
SELECT
|
||||
split_part(rolconfig, '=', 1) AS name, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value, datname AS database
|
||||
FROM
|
||||
(SELECT
|
||||
d.datname, unnest(c.setconfig) AS rolconfig
|
||||
FROM
|
||||
(SELECT *
|
||||
FROM pg_catalog.pg_db_role_setting dr
|
||||
WHERE
|
||||
dr.setrole={{ rid|qtLiteral }}::OID AND dr.setdatabase!=0
|
||||
) c
|
||||
LEFT JOIN pg_catalog.pg_database d ON (d.oid = c.setdatabase)
|
||||
) a;
|
||||
@@ -1,25 +0,0 @@
|
||||
SELECT
|
||||
split_part(rolconfig, '=', 1) AS name, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value, NULL::text AS database
|
||||
FROM
|
||||
(SELECT
|
||||
unnest(rolconfig) AS rolconfig, rolcanlogin, rolname
|
||||
FROM
|
||||
pg_catalog.pg_roles
|
||||
WHERE
|
||||
oid={{ rid|qtLiteral }}::OID
|
||||
) r
|
||||
|
||||
UNION ALL
|
||||
SELECT
|
||||
split_part(rolconfig, '=', 1) AS name, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value, datname AS database
|
||||
FROM
|
||||
(SELECT
|
||||
d.datname, unnest(c.setconfig) AS rolconfig
|
||||
FROM
|
||||
(SELECT *
|
||||
FROM pg_catalog.pg_db_role_setting dr
|
||||
WHERE
|
||||
dr.setrole={{ rid|qtLiteral }}::OID AND dr.setdatabase!=0
|
||||
) c
|
||||
LEFT JOIN pg_catalog.pg_database d ON (d.oid = c.setdatabase)
|
||||
) a;
|
||||
Reference in New Issue
Block a user