From fb350446a74434f1ea0d73524fe971dbfee7194e Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 18 Feb 2016 10:28:46 -0500 Subject: [PATCH] LP#1468422 Manual password migrate does not re-migrate Avoid migrating already-migrated passwords when actor.migrate_passwd() is called manually. Signed-off-by: Bill Erickson Signed-off-by: Dan Wells --- Open-ILS/src/sql/Pg/005.schema.actors.sql | 10 ++++++++++ .../sql/Pg/upgrade/XXXX.schema.password-storage.sql | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/Open-ILS/src/sql/Pg/005.schema.actors.sql b/Open-ILS/src/sql/Pg/005.schema.actors.sql index 912b2fc9a1..da94af0f72 100644 --- a/Open-ILS/src/sql/Pg/005.schema.actors.sql +++ b/Open-ILS/src/sql/Pg/005.schema.actors.sql @@ -965,6 +965,16 @@ BEGIN * hashing is not required of other passwords. */ + -- Avoid calling get_salt() here, because it may result in a + -- migrate_passwd() call, creating a loop. + SELECT INTO pw_salt salt FROM actor.passwd + WHERE usr = pw_usr AND passwd_type = 'main'; + + -- Only migrate passwords that have not already been migrated. + IF FOUND THEN + RETURN pw_salt; + END IF; + SELECT INTO usr_row * FROM actor.usr WHERE id = pw_usr; pw_salt := actor.create_salt('main'); diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.password-storage.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.password-storage.sql index 343eb39592..309823b161 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.password-storage.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.password-storage.sql @@ -157,6 +157,16 @@ BEGIN * hashing is not required of other passwords. */ + -- Avoid calling get_salt() here, because it may result in a + -- migrate_passwd() call, creating a loop. + SELECT INTO pw_salt salt FROM actor.passwd + WHERE usr = pw_usr AND passwd_type = 'main'; + + -- Only migrate passwords that have not already been migrated. + IF FOUND THEN + RETURN pw_salt; + END IF; + SELECT INTO usr_row * FROM actor.usr WHERE id = pw_usr; pw_salt := actor.create_salt('main'); -- 2.43.2