comparison schema/updates/1465/01.delete_user.sql @ 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
comparison
equal deleted inserted replaced
5502:26b7921190fa 5503:076b6b17c4a9
99 99
100 100
101 CREATE OR REPLACE FUNCTION delete_user(rolename text) RETURNS int 101 CREATE OR REPLACE FUNCTION delete_user(rolename text) RETURNS int
102 AS $$ 102 AS $$
103 DECLARE 103 DECLARE
104 user_exists bool;
105 is_admin bool; 104 is_admin bool;
106 has_imports bool; 105 has_imports bool;
107 BEGIN 106 BEGIN
108 SELECT EXISTS (SELECT 1 FROM pg_roles 107 SELECT rolname IN ('waterway_admin', 'sys_admin') INTO is_admin
109 WHERE rolname = rolename) 108 FROM users.list_users
110 INTO user_exists; 109 WHERE username = rolename;
111 110
112 IF NOT user_exists THEN 111 IF NOT FOUND THEN
113 RETURN 0; 112 RETURN 0;
114 END IF; 113 END IF;
115
116 SELECT EXISTS (SELECT 1 FROM pg_roles
117 WHERE pg_has_role(rolename, oid, 'member') AND
118 rolname IN ('waterway_admin', 'sys_admin'))
119 INTO is_admin;
120 114
121 -- None admins can be deleted. 115 -- None admins can be deleted.
122 IF NOT is_admin THEN 116 IF NOT is_admin THEN
123 DELETE FROM users.list_users WHERE username = rolename; 117 DELETE FROM users.list_users WHERE username = rolename;
124 RETURN 1; 118 RETURN 1;