Add recover identities from previous version
Project: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-js-lib/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-js-lib/commit/262d4726 Tree: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-js-lib/tree/262d4726 Diff: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-js-lib/diff/262d4726 Branch: refs/heads/add-documentation Commit: 262d4726f77ff1471ac0809f165bb1518381c29e Parents: 47feeca Author: Boyan Bakov <[email protected]> Authored: Fri Feb 26 11:23:22 2016 +0200 Committer: Boyan Bakov <[email protected]> Committed: Fri Feb 26 11:23:22 2016 +0200 ---------------------------------------------------------------------- lib/mpin.js | 66 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-js-lib/blob/262d4726/lib/mpin.js ---------------------------------------------------------------------- diff --git a/lib/mpin.js b/lib/mpin.js index cebf804..6250dce 100644 --- a/lib/mpin.js +++ b/lib/mpin.js @@ -50,7 +50,7 @@ var mpinjs = (function () { this.recover(); }; - Mpin.prototype.storageKey = "mpinLib"; + Mpin.prototype.storageKey = "mpinjs"; Mpin.prototype.init = function (cb) { var self = this, _initUrl; @@ -94,7 +94,7 @@ var mpinjs = (function () { } else if (!this.settings.registerURL) { return cb({code: Errors.missingParams.code, type: Errors.missingParams.type, message: "Missing registerURL"}, null); } - + //invalid _userState = this.getUser(userId, "state"); if (_userState !== States.invalid) { @@ -211,7 +211,7 @@ var mpinjs = (function () { } else if (!this.settings.registerURL) { return cb({code: Errors.missingParams.code, type: Errors.missingParams.type, message: "Missing registerURL"}, null); } - + _userState = this.getUser(userId, "state"); if (_userState !== States.start) { return cb(Errors.wrongFlow, null); @@ -664,13 +664,13 @@ var mpinjs = (function () { if (!this.checkUser(userId)) { //create Users[userId] = {}; - } + } //If mpinId has changed, we need to delete the object withthe previous one if (Users[userId].mpinId && userProps.mpinId && Users[userId].mpinId != userProps.mpinId) { - this.deleteData(userId); + this.deleteData(userId); } - + for (var uKey in userProps) { if (userProps[uKey]) { Users[userId][uKey] = userProps[uKey]; @@ -692,28 +692,28 @@ var mpinjs = (function () { if (!mpinData || !mpinData.accounts[mpinId]) { return; } - + delete mpinData.accounts[mpinId]; - - this.storeData(mpinData); + + this.storeData(mpinData); }; - + Mpin.prototype.setData = function (userId, upData) { var mpinData = this.getData(); if (!mpinData) { mpinData = { - version: "0.3", + version: "4", accounts: {} }; } var mpinId = upData.mpinId || Users[userId].mpinId; - + if (!mpinId) { return false; } - + //update Default Identity if (!mpinData.accounts[mpinId]) { mpinData.accounts[mpinId] = {}; @@ -743,14 +743,20 @@ var mpinjs = (function () { this.storeData(mpinData); }; - Mpin.prototype.storeData = function (mpinData) { - localStorage.setItem(this.storageKey, JSON.stringify(mpinData)); + Mpin.prototype.storeData = function (mpinData, key) { + var storageKey = key || this.storageKey; + localStorage.setItem(storageKey, JSON.stringify(mpinData)); }; Mpin.prototype.recover = function () { - var userId, userData = {}, mpinData = this.getData(); + var userId, userData = {}, mpinData = this.getData(), isOldData = false; - if (mpinData && "accounts" in mpinData) { + if (!mpinData) { + mpinData = this.getData("mpin"); + isOldData = true; + } + + if ("accounts" in mpinData) { for (var mpinId in mpinData.accounts) { userId = (JSON.parse(this.fromHex(mpinId))).userID; @@ -763,17 +769,33 @@ var mpinjs = (function () { mpinData.accounts[mpinId].MPinPermit && (userData.MPinPermit = mpinData.accounts[mpinId].MPinPermit); mpinData.accounts[mpinId].timePermitCache && (userData.timePermitCache = mpinData.accounts[mpinId].timePermitCache); - mpinData.accounts[mpinId].state && (userData.state = mpinData.accounts[mpinId].state); + if (isOldData || !mpinData.accounts[mpinId].state) { + if (mpinData.accounts[mpinId].token) { + userData.state = States.register; + } else if (mpinData.accounts[mpinId].regOTT) { + userData.state = States.start; + } else { + userData.state = States.invalid; + } + } else { + userData.state = mpinData.accounts[mpinId].state; + } //call add To user & skip Save - this.addToUser(userId, userData, true); + this.addToUser(userId, userData, !isOldData); } } + + if (isOldData) { + delete mpinData.accounts; + this.storeData(mpinData, "mpin"); + } }; - Mpin.prototype.getData = function () { - var mpinData; - mpinData = localStorage.getItem(this.storageKey); + Mpin.prototype.getData = function (getKey) { + var localKey, mpinData; + localKey = getKey || this.storageKey; + mpinData = localStorage.getItem(localKey); mpinData = JSON.parse(mpinData); return mpinData; };
