Mercurial > gemma
changeset 5503:076b6b17c4a9 deactivate-users
Simplified delete_user a bit.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 22 Sep 2021 17:25:47 +0200 |
parents | 26b7921190fa |
children | 5e3e3d9e2c23 |
files | schema/manage_users.sql schema/updates/1465/01.delete_user.sql |
diffstat | 2 files changed, 8 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/schema/manage_users.sql Wed Sep 22 16:57:45 2021 +0200 +++ b/schema/manage_users.sql Wed Sep 22 17:25:47 2021 +0200 @@ -243,23 +243,17 @@ CREATE OR REPLACE FUNCTION delete_user(rolename text) RETURNS int AS $$ DECLARE - user_exists bool; is_admin bool; has_imports bool; BEGIN - SELECT EXISTS (SELECT 1 FROM pg_roles - WHERE rolname = rolename) - INTO user_exists; + SELECT rolname IN ('waterway_admin', 'sys_admin') INTO is_admin + FROM users.list_users + WHERE username = rolename; - IF NOT user_exists THEN + IF NOT FOUND THEN RETURN 0; END IF; - SELECT EXISTS (SELECT 1 FROM pg_roles - WHERE pg_has_role(rolename, oid, 'member') AND - rolname IN ('waterway_admin', 'sys_admin')) - INTO is_admin; - -- None admins can be deleted. IF NOT is_admin THEN DELETE FROM users.list_users WHERE username = rolename;
--- a/schema/updates/1465/01.delete_user.sql Wed Sep 22 16:57:45 2021 +0200 +++ b/schema/updates/1465/01.delete_user.sql Wed Sep 22 17:25:47 2021 +0200 @@ -101,23 +101,17 @@ CREATE OR REPLACE FUNCTION delete_user(rolename text) RETURNS int AS $$ DECLARE - user_exists bool; is_admin bool; has_imports bool; BEGIN - SELECT EXISTS (SELECT 1 FROM pg_roles - WHERE rolname = rolename) - INTO user_exists; + SELECT rolname IN ('waterway_admin', 'sys_admin') INTO is_admin + FROM users.list_users + WHERE username = rolename; - IF NOT user_exists THEN + IF NOT FOUND THEN RETURN 0; END IF; - SELECT EXISTS (SELECT 1 FROM pg_roles - WHERE pg_has_role(rolename, oid, 'member') AND - rolname IN ('waterway_admin', 'sys_admin')) - INTO is_admin; - -- None admins can be deleted. IF NOT is_admin THEN DELETE FROM users.list_users WHERE username = rolename;