Mercurial > gemma
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; |