From: Bill Erickson Date: Thu, 18 Feb 2016 15:28:46 +0000 (-0500) Subject: LP#1468422 Manual password migrate does not re-migrate X-Git-Tag: sprint4-merge-nov22~516 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=fb350446a74434f1ea0d73524fe971dbfee7194e;p=working%2FEvergreen.git 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 --- 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');