-
Notifications
You must be signed in to change notification settings - Fork 210
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #17766 from mozilla/fix-dropped-rows-on-pw-upgrade
bug(auth): Prevent password upgrade from dropping assocaited rows
- Loading branch information
Showing
8 changed files
with
116 additions
and
3 deletions.
There are no files selected for viewing
64 changes: 64 additions & 0 deletions
64
packages/db-migrations/databases/fxa/patches/patch-156-157.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
SET NAMES utf8mb4 COLLATE utf8mb4_bin; | ||
|
||
CALL assertPatchLevel('156'); | ||
|
||
CREATE PROCEDURE `resetAccount_18` ( | ||
IN `uidArg` BINARY(16), | ||
IN `verifyHashArg` BINARY(32), | ||
IN `verifyHashVersion2Arg` BINARY(32), | ||
IN `authSaltArg` BINARY(32), | ||
IN `clientSaltArg` VARCHAR(128), | ||
IN `wrapWrapKbArg` BINARY(32), | ||
IN `wrapWrapKbVersion2Arg` BINARY(32), | ||
IN `verifierSetAtArg` BIGINT UNSIGNED, | ||
IN `verifierVersionArg` TINYINT UNSIGNED, | ||
IN `keysHaveChangedArg` BOOLEAN, | ||
IN `isPasswordUpgrade` BOOLEAN | ||
) | ||
BEGIN | ||
DECLARE EXIT HANDLER FOR SQLEXCEPTION | ||
BEGIN | ||
ROLLBACK; | ||
RESIGNAL; | ||
END; | ||
|
||
START TRANSACTION; | ||
|
||
-- When we upgrade accounts to key stretching v2, we do | ||
-- an 'automated reset' for the user. When we do this, we | ||
-- preserve the underlying private key, so there's actually | ||
-- no reason to drop associated data. | ||
IF isPasswordUpgrade = 0 THEN | ||
DELETE FROM sessionTokens WHERE uid = uidArg; | ||
DELETE FROM keyFetchTokens WHERE uid = uidArg; | ||
DELETE FROM accountResetTokens WHERE uid = uidArg; | ||
DELETE FROM passwordChangeTokens WHERE uid = uidArg; | ||
DELETE FROM passwordForgotTokens WHERE uid = uidArg; | ||
DELETE FROM recoveryKeys WHERE uid = uidArg; | ||
DELETE devices, deviceCommands FROM devices LEFT JOIN deviceCommands | ||
ON (deviceCommands.uid = devices.uid AND deviceCommands.deviceId = devices.id) | ||
WHERE devices.uid = uidArg; DELETE FROM unverifiedTokens WHERE uid = uidArg; | ||
END IF; | ||
|
||
UPDATE accounts | ||
SET | ||
verifyHash = verifyHashArg, | ||
verifyHashVersion2 = verifyHashVersion2Arg, | ||
wrapWrapKb = wrapWrapKbArg, | ||
wrapWrapKbVersion2 = wrapWrapKbVersion2Arg, | ||
authSalt = authSaltArg, | ||
clientSalt = clientSaltArg, | ||
verifierVersion = verifierVersionArg, | ||
profileChangedAt = verifierSetAtArg, | ||
-- The `keysChangedAt` column was added in a migration, so its default value | ||
-- is NULL meaning "we don't know". Now that we do know whether or not the keys | ||
-- are being changed, ensure it gets set to some concrete non-NULL value. | ||
keysChangedAt = IF(keysHaveChangedArg, verifierSetAtArg, COALESCE(keysChangedAt, verifierSetAt, createdAt)), | ||
verifierSetAt = verifierSetAtArg, | ||
lockedAt = NULL | ||
WHERE uid = uidArg; | ||
|
||
COMMIT; | ||
END; | ||
|
||
UPDATE dbMetadata SET value = '157' WHERE name = 'schema-patch-level'; |
2 changes: 2 additions & 0 deletions
2
packages/db-migrations/databases/fxa/patches/patch-157-156.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
-- DROP PROCEDURE `CREATE PROCEDURE `resetAccount_18`; | ||
-- UPDATE dbMetadata SET value = '156' WHERE name = 'schema-patch-level'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
{ | ||
"level": 156 | ||
"level": 157 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters