JBAS-1832 Add change_password DB function
authorBill Erickson <berickxx@gmail.com>
Wed, 19 Jun 2019 21:41:01 +0000 (17:41 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 19 Jun 2019 21:49:01 +0000 (17:49 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
KCLS/sql/schema/deploy/3.2-post-base-schema.sql

index f3536d7..0217abd 100644 (file)
@@ -426,6 +426,28 @@ BEGIN
     END IF;
 END $INSERT$;
 
+--  utility sql for modifying user 'main' passwords
+CREATE OR REPLACE FUNCTION evergreen.change_password
+    (user_id INT, new_pw TEXT, pw_type TEXT DEFAULT 'main')
+RETURNS VOID AS $$
+DECLARE
+    new_salt TEXT;
+BEGIN
+    SELECT actor.create_salt(pw_type) INTO new_salt;
+
+    IF pw_type = 'main' THEN
+        -- Only 'main' passwords are required to have
+        -- the extra layer of MD5 hashing.
+        PERFORM actor.set_passwd(
+            user_id, pw_type, md5(new_salt || md5(new_pw)), new_salt
+        );
+
+    ELSE
+        PERFORM actor.set_passwd(user_id, pw_type, new_pw, new_salt);
+    END IF;
+END;
+$$ LANGUAGE 'plpgsql';
 
 
 COMMIT;
+