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:
Akshay Joshi
2019-05-15 15:09:08 +05:30
parent 3364350b01
commit b7121bb2d2
744 changed files with 113 additions and 1180 deletions

View File

@@ -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'

View File

@@ -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 %}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 %}

View File

@@ -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 %}

View File

@@ -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 %}

View File

@@ -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

View File

@@ -1,5 +0,0 @@
SELECT
rolname, rolcanlogin, rolcatupdate, rolsuper
FROM
pg_roles
WHERE oid = {{ rid }}::OID

View File

@@ -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

View File

@@ -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

View File

@@ -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 %}

View File

@@ -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 %}

View File

@@ -1,5 +0,0 @@
SELECT
rolname, rolcanlogin, rolcatupdate, rolsuper
FROM
pg_roles
WHERE oid = {{ rid }}::OID

View File

@@ -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;

View File

@@ -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;