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;