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;
   };

Reply via email to