author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-26 09:18:23 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-26 09:18:23 (UTC) |
commit | 108dd23db8fdc9512446be708d2694f3050b1d8f (patch) (unidiff) | |
tree | feff31a273898aa20d13673947457a87024e457e | |
parent | 65f064cb6c99dde320d49e6c4157607c25e2d092 (diff) | |
download | clipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.zip clipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.tar.gz clipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.tar.bz2 |
Fixed a bug that would "corrupt" header data when upgrading the crypto version used to process an account data
The problem being that only part of the header section would be re-encrypted, thus ending up with different sections encrypted using different crypto function versions.
And this would break when loading data back on next login.
-rw-r--r-- | frontend/beta/js/Clipperz/PM/DataModel/Header.js | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Header.js b/frontend/beta/js/Clipperz/PM/DataModel/Header.js index 908d9f4..d577830 100644 --- a/frontend/beta/js/Clipperz/PM/DataModel/Header.js +++ b/frontend/beta/js/Clipperz/PM/DataModel/Header.js | |||
@@ -1,746 +1,748 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2013 Clipperz Srl | 3 | Copyright 2008-2013 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz, the online password manager. | 5 | This file is part of Clipperz, the online password manager. |
6 | For further information about its features and functionalities please | 6 | For further information about its features and functionalities please |
7 | refer to http://www.clipperz.com. | 7 | refer to http://www.clipperz.com. |
8 | 8 | ||
9 | * Clipperz is free software: you can redistribute it and/or modify it | 9 | * Clipperz is free software: you can redistribute it and/or modify it |
10 | under the terms of the GNU Affero General Public License as published | 10 | under the terms of the GNU Affero General Public License as published |
11 | by the Free Software Foundation, either version 3 of the License, or | 11 | by the Free Software Foundation, either version 3 of the License, or |
12 | (at your option) any later version. | 12 | (at your option) any later version. |
13 | 13 | ||
14 | * Clipperz is distributed in the hope that it will be useful, but | 14 | * Clipperz is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. | 17 | See the GNU Affero General Public License for more details. |
18 | 18 | ||
19 | * You should have received a copy of the GNU Affero General Public | 19 | * You should have received a copy of the GNU Affero General Public |
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. | 20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. |
21 | 21 | ||
22 | */ | 22 | */ |
23 | 23 | ||
24 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 24 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
25 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 25 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
26 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } | 26 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } |
27 | 27 | ||
28 | 28 | ||
29 | //############################################################################# | 29 | //############################################################################# |
30 | 30 | ||
31 | Clipperz.PM.DataModel.Header = function(args) { | 31 | Clipperz.PM.DataModel.Header = function(args) { |
32 | args = args || {}; | 32 | args = args || {}; |
33 | 33 | ||
34 | this._user = args.user; | 34 | this._user = args.user; |
35 | 35 | ||
36 | this._serverData = null; | 36 | this._serverData = null; |
37 | this._serverDataVersion = null; | 37 | this._serverDataVersion = null; |
38 | this._jsonEvaledServerData = null; | 38 | this._jsonEvaledServerData = null; |
39 | 39 | ||
40 | this._decryptedLegacyServerData = null; | 40 | this._decryptedLegacyServerData = null; |
41 | this._isDecryptingLegacyServerData = false; | 41 | this._isDecryptingLegacyServerData = false; |
42 | this._decryptingLegacyServerDataPendingQueue = []; | 42 | this._decryptingLegacyServerDataPendingQueue = []; |
43 | 43 | ||
44 | this.resetUpdatedSections(); | 44 | this.resetUpdatedSections(); |
45 | 45 | ||
46 | this._shouldLoadSections = {}; | 46 | this._shouldLoadSections = {}; |
47 | 47 | ||
48 | Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler'); | 48 | Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler'); |
49 | 49 | ||
50 | return this; | 50 | return this; |
51 | } | 51 | } |
52 | 52 | ||
53 | Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, { | 53 | Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, { |
54 | 54 | ||
55 | //------------------------------------------------------------------------- | 55 | //------------------------------------------------------------------------- |
56 | 56 | ||
57 | 'user': function() { | 57 | 'user': function() { |
58 | return this._user; | 58 | return this._user; |
59 | }, | 59 | }, |
60 | 60 | ||
61 | //------------------------------------------------------------------------- | 61 | //------------------------------------------------------------------------- |
62 | //------------------------------------------------------------------------- | 62 | //------------------------------------------------------------------------- |
63 | //------------------------------------------------------------------------- | 63 | //------------------------------------------------------------------------- |
64 | //------------------------------------------------------------------------- | 64 | //------------------------------------------------------------------------- |
65 | //------------------------------------------------------------------------- | 65 | //------------------------------------------------------------------------- |
66 | //------------------------------------------------------------------------- | 66 | //------------------------------------------------------------------------- |
67 | //------------------------------------------------------------------------- | 67 | //------------------------------------------------------------------------- |
68 | //------------------------------------------------------------------------- | 68 | //------------------------------------------------------------------------- |
69 | //------------------------------------------------------------------------- | 69 | //------------------------------------------------------------------------- |
70 | 70 | ||
71 | 'updatedSections': function() { | 71 | 'updatedSections': function() { |
72 | return this._updatedSections; | 72 | return this._updatedSections; |
73 | }, | 73 | }, |
74 | 74 | ||
75 | 'markSectionAsUpdated': function(aSectionName) { | 75 | 'markSectionAsUpdated': function(aSectionName) { |
76 | this.updatedSections().push(aSectionName); | 76 | this.updatedSections().push(aSectionName); |
77 | }, | 77 | }, |
78 | 78 | ||
79 | 'resetUpdatedSections': function() { | 79 | 'resetUpdatedSections': function() { |
80 | this._updatedSections = [] | 80 | this._updatedSections = [] |
81 | }, | 81 | }, |
82 | 82 | ||
83 | 'hasSectionBeenUpdated': function(aSectionName) { | 83 | 'hasSectionBeenUpdated': function(aSectionName) { |
84 | return (this.updatedSections().join().indexOf(aSectionName) != -1); | 84 | return(this.updatedSections().join().indexOf(aSectionName) != -1) |
85 | ||(this.serverDataVersion() != Clipperz.PM.Crypto.encryptingFunctions.currentVersion); | ||
85 | }, | 86 | }, |
86 | 87 | ||
87 | 'cachedServerDataSection': function(aSectionName) { | 88 | 'cachedServerDataSection': function(aSectionName) { |
88 | return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName]; | 89 | return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName]; |
89 | }, | 90 | }, |
90 | 91 | ||
91 | 'updateAllSections': function() { | 92 | 'updateAllSections': function() { |
92 | this.resetUpdatedSections(); | 93 | this.resetUpdatedSections(); |
93 | this.markSectionAsUpdated('records'); | 94 | this.markSectionAsUpdated('records'); |
94 | this.markSectionAsUpdated('directLogins'); | 95 | this.markSectionAsUpdated('directLogins'); |
95 | this.markSectionAsUpdated('preferences'); | 96 | this.markSectionAsUpdated('preferences'); |
96 | this.markSectionAsUpdated('oneTimePasswords'); | 97 | this.markSectionAsUpdated('oneTimePasswords'); |
97 | 98 | ||
98 | return MochiKit.Async.succeed(this); | 99 | return MochiKit.Async.succeed(this); |
99 | }, | 100 | }, |
100 | 101 | ||
101 | 'updatedSectionHandler': function(anEvent) { | 102 | 'updatedSectionHandler': function(anEvent) { |
102 | this.markSectionAsUpdated(anEvent.parameters()); | 103 | this.markSectionAsUpdated(anEvent.parameters()); |
103 | }, | 104 | }, |
104 | 105 | ||
105 | //------------------------------------------------------------------------- | 106 | //------------------------------------------------------------------------- |
106 | 107 | ||
107 | 'getObjectKeyIndex': function(anObject) { | 108 | 'getObjectKeyIndex': function(anObject) { |
108 | var result; | 109 | var result; |
109 | varitemReference; | 110 | varitemReference; |
110 | var index; | 111 | var index; |
111 | 112 | ||
112 | result = {}; | 113 | result = {}; |
113 | index = 0; | 114 | index = 0; |
114 | 115 | ||
115 | for (itemReference in anObject) { | 116 | for (itemReference in anObject) { |
116 | result[itemReference] = index.toString(); | 117 | result[itemReference] = index.toString(); |
117 | index ++; | 118 | index ++; |
118 | } | 119 | } |
119 | 120 | ||
120 | return result; | 121 | return result; |
121 | }, | 122 | }, |
122 | 123 | ||
123 | //------------------------------------------------------------------------- | 124 | //------------------------------------------------------------------------- |
124 | 125 | ||
125 | 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) { | 126 | 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) { |
126 | var result; | 127 | var result; |
127 | var records; | 128 | var records; |
128 | var recordReference; | 129 | var recordReference; |
129 | 130 | ||
130 | //MochiKit.Logging.logDebug(">>> Header.serializedData"); | 131 | //MochiKit.Logging.logDebug(">>> Header.serializedData"); |
131 | result = { | 132 | result = { |
132 | 'records': {}, | 133 | 'records': {}, |
133 | 'directLogins': {} | 134 | 'directLogins': {} |
134 | }; | 135 | }; |
135 | 136 | ||
136 | records = this.user().records(); | 137 | records = this.user().records(); |
137 | for (recordReference in records) { | 138 | for (recordReference in records) { |
138 | result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData(); | 139 | result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData(); |
139 | } | 140 | } |
140 | 141 | ||
141 | for (directLoginReference in this.user().directLoginReferences()) { | 142 | for (directLoginReference in this.user().directLoginReferences()) { |
142 | var currentDirectLogin; | 143 | var currentDirectLogin; |
143 | vardirectLoginData; | 144 | vardirectLoginData; |
144 | 145 | ||
145 | currentDirectLogin = this.user().directLoginReferences()[directLoginReference]; | 146 | currentDirectLogin = this.user().directLoginReferences()[directLoginReference]; |
146 | if (aRecordIndexes[currentDirectLogin.recordReference()] != null) { | 147 | if (aRecordIndexes[currentDirectLogin.recordReference()] != null) { |
147 | directLoginData = { | 148 | directLoginData = { |
148 | // reference: currentDirectLogin.reference(), | 149 | // reference: currentDirectLogin.reference(), |
149 | record: aRecordIndexes[currentDirectLogin.recordReference()].toString(), | 150 | record: aRecordIndexes[currentDirectLogin.recordReference()].toString(), |
150 | label: currentDirectLogin.label(), | 151 | label: currentDirectLogin.label(), |
151 | favicon:currentDirectLogin.favicon() || "" | 152 | favicon:currentDirectLogin.favicon() || "" |
152 | } | 153 | } |
153 | 154 | ||
154 | result['directLogins'][aDirectLoginIndexs[directLoginReference]] = directLoginData; | 155 | result['directLogins'][aDirectLoginIndexs[directLoginReference]] = directLoginData; |
155 | } | 156 | } |
156 | 157 | ||
157 | } | 158 | } |
158 | //MochiKit.Logging.logDebug("<<< Header.serializedData - result: " + Clipperz.Base.serializeJSON(result)); | 159 | //MochiKit.Logging.logDebug("<<< Header.serializedData - result: " + Clipperz.Base.serializeJSON(result)); |
159 | //MochiKit.Logging.logDebug("<<< Header.serializedData"); | 160 | //MochiKit.Logging.logDebug("<<< Header.serializedData"); |
160 | 161 | ||
161 | return result; | 162 | return result; |
162 | }, | 163 | }, |
163 | 164 | ||
164 | //------------------------------------------------------------------------- | 165 | //------------------------------------------------------------------------- |
165 | 166 | ||
166 | 'encryptedData': function() { | 167 | 'encryptedData': function() { |
167 | var deferredResult; | 168 | var deferredResult; |
168 | var recordIndex; | 169 | var recordIndex; |
169 | var directLoginIndex; | 170 | var directLoginIndex; |
170 | varserializedData; | 171 | varserializedData; |
171 | var result; | 172 | var result; |
172 | 173 | ||
173 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Header.encryptedData"); | 174 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Header.encryptedData"); |
174 | //MochiKit.Logging.logDebug("### Header.encryptedData - " + Clipperz.Base.serializeJSON(this.updatedSections())); | 175 | //MochiKit.Logging.logDebug("### Header.encryptedData - " + Clipperz.Base.serializeJSON(this.updatedSections())); |
175 | result = { | 176 | result = { |
176 | 'records': this.cachedServerDataSection('records'), | 177 | 'records': this.cachedServerDataSection('records'), |
177 | 'directLogins': this.cachedServerDataSection('directLogins'), | 178 | 'directLogins': this.cachedServerDataSection('directLogins'), |
178 | 'preferences': this.cachedServerDataSection('preferences'), | 179 | 'preferences': this.cachedServerDataSection('preferences'), |
179 | 'oneTimePasswords': this.cachedServerDataSection('oneTimePasswords'), | 180 | 'oneTimePasswords': this.cachedServerDataSection('oneTimePasswords'), |
180 | 'version': '0.1' | 181 | 'version': '0.1' |
181 | }; | 182 | }; |
182 | 183 | ||
183 | if (this.hasSectionBeenUpdated('records')) { | 184 | if (this.hasSectionBeenUpdated('records')) { |
184 | recordIndex = this.getObjectKeyIndex(this.user().records()); | 185 | recordIndex = this.getObjectKeyIndex(this.user().records()); |
185 | result['records']['index'] = recordIndex; | 186 | result['records']['index'] = recordIndex; |
186 | } else { | 187 | } else { |
187 | recordIndex = result['records']['index']; | 188 | recordIndex = result['records']['index']; |
188 | } | 189 | } |
189 | 190 | ||
190 | if (this.hasSectionBeenUpdated('directLogins')) { | 191 | if (this.hasSectionBeenUpdated('directLogins')) { |
191 | directLoginIndex = this.getObjectKeyIndex(this.user().directLoginReferences()); | 192 | directLoginIndex = this.getObjectKeyIndex(this.user().directLoginReferences()); |
192 | result['directLogins']['index'] = directLoginIndex; | 193 | result['directLogins']['index'] = directLoginIndex; |
193 | } else { | 194 | } else { |
194 | directLoginIndex = result['directLogins']['index']; | 195 | directLoginIndex = result['directLogins']['index']; |
195 | } | 196 | } |
196 | 197 | ||
197 | if (this.hasSectionBeenUpdated('records') || this.hasSectionBeenUpdated('directLogins')) { | 198 | if (this.hasSectionBeenUpdated('records') || this.hasSectionBeenUpdated('directLogins')) { |
198 | serializedData = this.serializedDataWithRecordAndDirectLoginIndexes(recordIndex, directLoginIndex); | 199 | serializedData = this.serializedDataWithRecordAndDirectLoginIndexes(recordIndex, directLoginIndex); |
199 | } | 200 | } |
200 | 201 | ||
201 | deferredResult = new MochiKit.Async.Deferred(); | 202 | deferredResult = new MochiKit.Async.Deferred(); |
202 | 203 | ||
203 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1: " + res); return res;}); | 204 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1: " + res); return res;}); |
204 | if (this.hasSectionBeenUpdated('records')) { | 205 | if (this.hasSectionBeenUpdated('records')) { |
205 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.1: " + res); return res;}); | 206 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.1: " + res); return res;}); |
206 | deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { | 207 | deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { |
207 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['records']); | 208 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['records']); |
208 | }, this, result, serializedData); | 209 | }, this, result, serializedData); |
209 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.2: " + res); return res;}); | 210 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.2: " + res); return res;}); |
210 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 211 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
211 | aResult['records']['data'] = aValue; | 212 | aResult['records']['data'] = aValue; |
212 | }, this, result); | 213 | }, this, result); |
213 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.3: " + res); return res;}); | 214 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.3: " + res); return res;}); |
214 | } | 215 | } |
215 | 216 | ||
216 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2: " + res); return res;}); | 217 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2: " + res); return res;}); |
217 | if (this.hasSectionBeenUpdated('directLogins')) { | 218 | if (this.hasSectionBeenUpdated('directLogins')) { |
218 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.1: " + res); return res;}); | 219 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.1: " + res); return res;}); |
219 | deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { | 220 | deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { |
220 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['directLogins']); | 221 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['directLogins']); |
221 | }, this, result, serializedData); | 222 | }, this, result, serializedData); |
222 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.2: " + res); return res;}); | 223 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.2: " + res); return res;}); |
223 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 224 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
224 | aResult['directLogins']['data'] = aValue; | 225 | aResult['directLogins']['data'] = aValue; |
225 | }, this, result); | 226 | }, this, result); |
226 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.3: " + res); return res;}); | 227 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.3: " + res); return res;}); |
227 | } | 228 | } |
228 | 229 | ||
229 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3: " + res); return res;}); | 230 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3: " + res); return res;}); |
230 | if (this.hasSectionBeenUpdated('preferences')) { | 231 | if (this.hasSectionBeenUpdated('preferences')) { |
231 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.1: " + res); return res;}); | 232 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.1: " + res); return res;}); |
232 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 233 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
233 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().preferences().serializedData()); | 234 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().preferences().serializedData()); |
234 | }, this, result); | 235 | }, this, result); |
235 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.2: " + res); return res;}); | 236 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.2: " + res); return res;}); |
236 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 237 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
237 | aResult['preferences']['data'] = aValue; | 238 | aResult['preferences']['data'] = aValue; |
238 | }, this, result); | 239 | }, this, result); |
239 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.3: " + res); return res;}); | 240 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.3: " + res); return res;}); |
240 | } | 241 | } |
241 | 242 | ||
242 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4: " + res); return res;}); | 243 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4: " + res); return res;}); |
243 | if (this.hasSectionBeenUpdated('oneTimePasswords')) { | 244 | if (this.hasSectionBeenUpdated('oneTimePasswords')) { |
244 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.1: " + res); return res;}); | 245 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.1: " + res); return res;}); |
245 | // deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); | 246 | // deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); |
246 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.2: " + res); return res;}); | 247 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.2: " + res); return res;}); |
247 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 248 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
248 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().oneTimePasswordManager().serializedData()); | 249 | return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().oneTimePasswordManager().serializedData()); |
249 | }, this, result); | 250 | }, this, result); |
250 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.3: " + res); return res;}); | 251 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.3: " + res); return res;}); |
251 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 252 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
252 | aResult['oneTimePasswords']['data'] = aValue; | 253 | aResult['oneTimePasswords']['data'] = aValue; |
253 | }, this, result); | 254 | }, this, result); |
254 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.4: " + res); return res;}); | 255 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.4: " + res); return res;}); |
255 | } | 256 | } |
256 | 257 | ||
257 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 5: " + res); return res;}); | 258 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 5: " + res); return res;}); |
258 | deferredResult.addCallback(function(anHeader, aResult, aValue) { | 259 | deferredResult.addCallback(function(anHeader, aResult, aValue) { |
259 | var serverData; | 260 | var serverData; |
260 | 261 | ||
261 | serverData = Clipperz.Base.serializeJSON(aResult); | 262 | serverData = Clipperz.Base.serializeJSON(aResult); |
262 | anHeader.setServerData(serverData); | 263 | anHeader.setServerData(serverData); |
263 | 264 | ||
264 | return serverData; | 265 | return serverData; |
265 | }, this, result); | 266 | }, this, result); |
266 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 6: " + res); return res;}); | 267 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 6: " + res); return res;}); |
267 | 268 | ||
268 | deferredResult.callback(); | 269 | deferredResult.callback(); |
269 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Header.encryptedData"); | 270 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Header.encryptedData"); |
270 | 271 | ||
271 | return deferredResult; | 272 | return deferredResult; |
272 | }, | 273 | }, |
273 | 274 | ||
274 | //------------------------------------------------------------------------- | 275 | //------------------------------------------------------------------------- |
275 | 276 | ||
276 | 'serverData': function() { | 277 | 'serverData': function() { |
277 | return this._serverData; | 278 | return this._serverData; |
278 | }, | 279 | }, |
279 | 280 | ||
280 | 'setServerData': function(aValue) { | 281 | 'setServerData': function(aValue) { |
281 | //MochiKit.Logging.logDebug(">>> Header.setServerData"); | 282 | //MochiKit.Logging.logDebug(">>> Header.setServerData"); |
282 | //MochiKit.Logging.logDebug("[start]============================================="); | 283 | //MochiKit.Logging.logDebug("[start]============================================="); |
283 | //MochiKit.Logging.logDebug("SERVER_DATA: " + aValue); | 284 | //MochiKit.Logging.logDebug("SERVER_DATA: " + aValue); |
284 | //MochiKit.Logging.logDebug("[end]==============================================="); | 285 | //MochiKit.Logging.logDebug("[end]==============================================="); |
285 | this._serverData = aValue; | 286 | this._serverData = aValue; |
286 | //MochiKit.Logging.logDebug("--- Header.setServerData - 1"); | 287 | //MochiKit.Logging.logDebug("--- Header.setServerData - 1"); |
287 | this.resetUpdatedSections(); | 288 | this.resetUpdatedSections(); |
288 | //MochiKit.Logging.logDebug("--- Header.setServerData - 2"); | 289 | //MochiKit.Logging.logDebug("--- Header.setServerData - 2"); |
289 | this.resetJsonEvaledServerData(); | 290 | this.resetJsonEvaledServerData(); |
290 | //MochiKit.Logging.logDebug("<<< Header.setServerData"); | 291 | //MochiKit.Logging.logDebug("<<< Header.setServerData"); |
291 | }, | 292 | }, |
292 | 293 | ||
293 | 'jsonEvaledServerData': function() { | 294 | 'jsonEvaledServerData': function() { |
294 | if (this._jsonEvaledServerData == null) { | 295 | if (this._jsonEvaledServerData == null) { |
295 | this._jsonEvaledServerData = Clipperz.Base.evalJSON(this.serverData()); | 296 | this._jsonEvaledServerData = Clipperz.Base.evalJSON(this.serverData()); |
296 | } | 297 | } |
297 | 298 | ||
298 | return this._jsonEvaledServerData; | 299 | return this._jsonEvaledServerData; |
299 | }, | 300 | }, |
300 | 301 | ||
301 | 'resetJsonEvaledServerData': function() { | 302 | 'resetJsonEvaledServerData': function() { |
302 | this._jsonEvaledServerData = null; | 303 | this._jsonEvaledServerData = null; |
303 | }, | 304 | }, |
304 | 305 | ||
305 | //------------------------------------------------------------------------- | 306 | //------------------------------------------------------------------------- |
306 | 307 | ||
307 | 'serverDataVersion': function() { | 308 | 'serverDataVersion': function() { |
308 | return this._serverDataVersion; | 309 | return this._serverDataVersion; |
309 | }, | 310 | }, |
310 | 311 | ||
311 | 'setServerDataVersion': function(aValue) { | 312 | 'setServerDataVersion': function(aValue) { |
312 | this._serverDataVersion = aValue; | 313 | this._serverDataVersion = aValue; |
313 | }, | 314 | }, |
314 | 315 | ||
315 | //------------------------------------------------------------------------- | 316 | //------------------------------------------------------------------------- |
316 | 317 | ||
317 | 'decryptedLegacyServerData': function() { | 318 | 'decryptedLegacyServerData': function() { |
318 | var deferredResult; | 319 | var deferredResult; |
319 | 320 | ||
320 | //MochiKit.Logging.logDebug(">>> Header.decryptedLegacyServerData"); | 321 | //MochiKit.Logging.logDebug(">>> Header.decryptedLegacyServerData"); |
321 | deferredResult = new MochiKit.Async.Deferred(); | 322 | deferredResult = new MochiKit.Async.Deferred(); |
322 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 1: "/* + res*/); return res;}); | 323 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 1: "/* + res*/); return res;}); |
323 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 324 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
324 | deferredResult.addCallback(MochiKit.Base.method(this, 'updateAllSections')); | 325 | deferredResult.addCallback(MochiKit.Base.method(this, 'updateAllSections')); |
325 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 2: "/* + res*/); return res;}); | 326 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 2: "/* + res*/); return res;}); |
326 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 327 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
327 | if (this._decryptedLegacyServerData == null) { | 328 | if (this._decryptedLegacyServerData == null) { |
328 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 3: "/* + res*/); return res;}); | 329 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 3: "/* + res*/); return res;}); |
329 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 330 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
330 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); | 331 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); |
331 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 4: "/* + res*/); return res;}); | 332 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 4: "/* + res*/); return res;}); |
332 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 333 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
333 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), this.serverData(), this.serverDataVersion()); | 334 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), this.serverData(), this.serverDataVersion()); |
334 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 5: "/* + res*/); return res;}); | 335 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 5: "/* + res*/); return res;}); |
335 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 336 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
336 | deferredResult.addCallback(function(anHeader, aValue) { | 337 | deferredResult.addCallback(function(anHeader, aValue) { |
337 | anHeader._decryptedLegacyServerData = aValue; | 338 | anHeader._decryptedLegacyServerData = aValue; |
338 | }, this); | 339 | }, this); |
339 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 6: "/* + res*/); return res;}); | 340 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 6: "/* + res*/); return res;}); |
340 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 341 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
341 | }; | 342 | }; |
342 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 7: "/* + res*/); return res;}); | 343 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 7: "/* + res*/); return res;}); |
343 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 344 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
344 | 345 | ||
345 | deferredResult.addCallback(function(anHeader) { | 346 | deferredResult.addCallback(function(anHeader) { |
346 | return anHeader._decryptedLegacyServerData; | 347 | return anHeader._decryptedLegacyServerData; |
347 | }, this); | 348 | }, this); |
348 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 8: "/* + res*/); return res;}); | 349 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 8: "/* + res*/); return res;}); |
349 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 350 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
350 | deferredResult.callback(); | 351 | deferredResult.callback(); |
351 | //MochiKit.Logging.logDebug("<<< Header.decryptedLegacyServerData"); | 352 | //MochiKit.Logging.logDebug("<<< Header.decryptedLegacyServerData"); |
352 | 353 | ||
353 | return deferredResult; | 354 | return deferredResult; |
354 | }, | 355 | }, |
355 | 356 | ||
356 | //------------------------------------------------------------------------- | 357 | //------------------------------------------------------------------------- |
357 | 358 | ||
358 | 'serverDataFormat': function() { | 359 | 'serverDataFormat': function() { |
359 | var result; | 360 | var result; |
360 | 361 | ||
361 | //MochiKit.Logging.logDebug(">>> Header.serverDataFormat"); | 362 | //MochiKit.Logging.logDebug(">>> Header.serverDataFormat"); |
362 | if (this.serverData().charAt(0) == '{') { | 363 | if (this.serverData().charAt(0) == '{') { |
363 | varserverData; | 364 | varserverData; |
364 | 365 | ||
365 | serverData = Clipperz.Base.evalJSON(this.serverData()); | 366 | serverData = Clipperz.Base.evalJSON(this.serverData()); |
366 | result = serverData['version']; | 367 | result = serverData['version']; |
367 | } else { | 368 | } else { |
368 | result = 'LEGACY'; | 369 | result = 'LEGACY'; |
369 | } | 370 | } |
370 | //MochiKit.Logging.logDebug("<<< Header.serverDataFormat"); | 371 | //MochiKit.Logging.logDebug("<<< Header.serverDataFormat"); |
371 | 372 | ||
372 | return result; | 373 | return result; |
373 | }, | 374 | }, |
374 | 375 | ||
375 | //------------------------------------------------------------------------- | 376 | //------------------------------------------------------------------------- |
376 | 377 | ||
377 | 'extractHeaderDataFromUserDetails': function(someUserDetails) { | 378 | 'extractHeaderDataFromUserDetails': function(someUserDetails) { |
378 | if (this.serverData() == null) { | 379 | if (this.serverData() == null) { |
379 | this.setServerData(someUserDetails['header']); | 380 | this.setServerData(someUserDetails['header']); |
380 | this.setServerDataVersion(someUserDetails['version']) | 381 | this.setServerDataVersion(someUserDetails['version']) |
381 | } | 382 | } |
382 | }, | 383 | }, |
383 | 384 | ||
384 | //------------------------------------------------------------------------- | 385 | //------------------------------------------------------------------------- |
385 | 386 | ||
386 | 'extractDataWithKey': function(aKey) { | 387 | 'extractDataWithKey': function(aKey) { |
387 | var deferredResult; | 388 | var deferredResult; |
388 | 389 | ||
389 | //MochiKit.Logging.logDebug(">>> Header.extractDataWithKey"); | 390 | //MochiKit.Logging.logDebug(">>> Header.extractDataWithKey"); |
390 | deferredResult = new MochiKit.Async.Deferred(); | 391 | deferredResult = new MochiKit.Async.Deferred(); |
391 | 392 | ||
392 | switch (this.serverDataFormat()) { | 393 | switch (this.serverDataFormat()) { |
393 | case 'LEGACY': | 394 | case 'LEGACY': |
394 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 1: "/* + res*/); return res;}); | 395 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 1: "/* + res*/); return res;}); |
395 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 396 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
396 | deferredResult.addCallback(MochiKit.Base.method(this, 'decryptedLegacyServerData')); | 397 | deferredResult.addCallback(MochiKit.Base.method(this, 'decryptedLegacyServerData')); |
397 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 2: "/* + res*/); return res;}); | 398 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 2: "/* + res*/); return res;}); |
398 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 399 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
399 | deferredResult.addCallback(function(someDecryptedValues) { | 400 | deferredResult.addCallback(function(someDecryptedValues) { |
400 | return someDecryptedValues[aKey] || {}; | 401 | return someDecryptedValues[aKey] || {}; |
401 | }) | 402 | }) |
402 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 3: "/* + res*/); return res;}); | 403 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 3: "/* + res*/); return res;}); |
403 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 404 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
404 | break; | 405 | break; |
405 | case '0.1': | 406 | case '0.1': |
406 | var data; | 407 | var data; |
407 | 408 | ||
408 | //# data = Clipperz.Base.evalJSON(this.serverData()); | 409 | //# data = Clipperz.Base.evalJSON(this.serverData()); |
409 | data = this.jsonEvaledServerData(); | 410 | data = this.jsonEvaledServerData(); |
410 | if (typeof(data[aKey]) != 'undefined') { | 411 | if (typeof(data[aKey]) != 'undefined') { |
411 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 4: "/* + res*/); return res;}); | 412 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 4: "/* + res*/); return res;}); |
412 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 413 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
413 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); | 414 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); |
414 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 5: "/* + res*/); return res;}); | 415 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 5: "/* + res*/); return res;}); |
416 | //deferredResult.addBoth(function(res) {console.log("aKey: " + aKey); return res;}); | ||
415 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 417 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
416 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), data[aKey]['data'], this.serverDataVersion()); | 418 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), data[aKey]['data'], this.serverDataVersion()); |
417 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); | 419 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); |
418 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 420 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
419 | deferredResult.addCallback(function(/*anHeader,*/ aKey, aData, aRecordIndex, aValue) { | 421 | deferredResult.addCallback(function(/*anHeader,*/ aKey, aData, aRecordIndex, aValue) { |
420 | var result; | 422 | var result; |
421 | //MochiKit.Logging.logDebug(">>> [start] ==============================================="); | 423 | //MochiKit.Logging.logDebug(">>> [start] ==============================================="); |
422 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 0 [" + aKey + "]: " + Clipperz.Base.serializeJSON(aValue)); | 424 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 0 [" + aKey + "]: " + Clipperz.Base.serializeJSON(aValue)); |
423 | //MochiKit.Logging.logDebug("<<< [end] ================================================="); | 425 | //MochiKit.Logging.logDebug("<<< [end] ================================================="); |
424 | if (aKey == 'records') { | 426 | if (aKey == 'records') { |
425 | var recordKey; | 427 | var recordKey; |
426 | 428 | ||
427 | result = {}; | 429 | result = {}; |
428 | for (recordKey in aData['index']) { | 430 | for (recordKey in aData['index']) { |
429 | result[recordKey] = aValue[aData['index'][recordKey]]; | 431 | result[recordKey] = aValue[aData['index'][recordKey]]; |
430 | } | 432 | } |
431 | } else if (aKey == 'directLogins') { | 433 | } else if (aKey == 'directLogins') { |
432 | varrecordKeyReversedIndex; | 434 | varrecordKeyReversedIndex; |
433 | var recordKey; | 435 | var recordKey; |
434 | var directLoginKey; | 436 | var directLoginKey; |
435 | 437 | ||
436 | result = {}; | 438 | result = {}; |
437 | recordKeyReversedIndex = {}; | 439 | recordKeyReversedIndex = {}; |
438 | 440 | ||
439 | for (recordKey in aRecordIndex) { | 441 | for (recordKey in aRecordIndex) { |
440 | recordKeyReversedIndex[aRecordIndex[recordKey]] = recordKey; | 442 | recordKeyReversedIndex[aRecordIndex[recordKey]] = recordKey; |
441 | } | 443 | } |
442 | 444 | ||
443 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 1 - aData['index']: " + Clipperz.Base.serializeJSON(aData['index'])); | 445 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 1 - aData['index']: " + Clipperz.Base.serializeJSON(aData['index'])); |
444 | for (directLoginKey in aData['index']) { | 446 | for (directLoginKey in aData['index']) { |
445 | try { | 447 | try { |
446 | if ((aData['index'][directLoginKey] != null) && (aValue[aData['index'][directLoginKey]] != null)) { | 448 | if ((aData['index'][directLoginKey] != null) && (aValue[aData['index'][directLoginKey]] != null)) { |
447 | result[directLoginKey] = aValue[aData['index'][directLoginKey]]; | 449 | result[directLoginKey] = aValue[aData['index'][directLoginKey]]; |
448 | result[directLoginKey]['record'] = recordKeyReversedIndex[result[directLoginKey]['record']]; | 450 | result[directLoginKey]['record'] = recordKeyReversedIndex[result[directLoginKey]['record']]; |
449 | } | 451 | } |
450 | } catch(exception) { | 452 | } catch(exception) { |
451 | //result[directLoginKey] has no properties | 453 | //result[directLoginKey] has no properties |
452 | MochiKit.Logging.logDebug("[Header 391] EXCEPTION: " + exception); | 454 | MochiKit.Logging.logDebug("[Header 391] EXCEPTION: " + exception); |
453 | throw exception; | 455 | throw exception; |
454 | } | 456 | } |
455 | } | 457 | } |
456 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 2"); | 458 | //MochiKit.Logging.logDebug("--- extractDataWithKey - 2"); |
457 | } else { | 459 | } else { |
458 | result = aValue; | 460 | result = aValue; |
459 | } | 461 | } |
460 | 462 | ||
461 | return result; | 463 | return result; |
462 | }, /*this,*/ aKey, data[aKey], data['records']['index']); | 464 | }, /*this,*/ aKey, data[aKey], data['records']['index']); |
463 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); | 465 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); |
464 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 466 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
465 | } else { | 467 | } else { |
466 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 7: "/* + res*/); return res;}); | 468 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 7: "/* + res*/); return res;}); |
467 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 469 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
468 | deferredResult.addCallback(MochiKit.Async.succeed, {}); | 470 | deferredResult.addCallback(MochiKit.Async.succeed, {}); |
469 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 8: "/* + res*/); return res;}); | 471 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 8: "/* + res*/); return res;}); |
470 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 472 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
471 | } | 473 | } |
472 | break; | 474 | break; |
473 | } | 475 | } |
474 | 476 | ||
475 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 9: "/* + res*/); return res;}); | 477 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 9: "/* + res*/); return res;}); |
476 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 478 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
477 | deferredResult.callback(); | 479 | deferredResult.callback(); |
478 | //MochiKit.Logging.logDebug("<<< Header.extractDataWithKey"); | 480 | //MochiKit.Logging.logDebug("<<< Header.extractDataWithKey"); |
479 | 481 | ||
480 | return deferredResult; | 482 | return deferredResult; |
481 | }, | 483 | }, |
482 | 484 | ||
483 | //------------------------------------------------------------------------- | 485 | //------------------------------------------------------------------------- |
484 | 486 | ||
485 | 'processRecordData': function(someRecordData) { | 487 | 'processRecordData': function(someRecordData) { |
486 | var records; | 488 | var records; |
487 | varrecordReference; | 489 | varrecordReference; |
488 | 490 | ||
489 | //console.log("HeaderRecordData parameters", someRecordData); | 491 | //console.log("HeaderRecordData parameters", someRecordData); |
490 | //MochiKit.Logging.logDebug(">>> Header.processRecordData"); | 492 | //MochiKit.Logging.logDebug(">>> Header.processRecordData"); |
491 | records = someRecordData; | 493 | records = someRecordData; |
492 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 1"); | 494 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 1"); |
493 | if (records != null) { | 495 | if (records != null) { |
494 | //MochiKit.Logging.logDebug("--- Header.processRecordData - records: " + Clipperz.Base.serializeJSON(records)); | 496 | //MochiKit.Logging.logDebug("--- Header.processRecordData - records: " + Clipperz.Base.serializeJSON(records)); |
495 | for (recordReference in records) { | 497 | for (recordReference in records) { |
496 | var newRecord; | 498 | var newRecord; |
497 | var parameters; | 499 | var parameters; |
498 | 500 | ||
499 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 2 - recordReference: " + recordReference); | 501 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 2 - recordReference: " + recordReference); |
500 | if (recordReference != "stacktrace") { | 502 | if (recordReference != "stacktrace") { |
501 | parameters = records[recordReference];//.slice(); | 503 | parameters = records[recordReference];//.slice(); |
502 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 3"); | 504 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 3"); |
503 | if (typeof(parameters['notes']) != 'undefined') { | 505 | if (typeof(parameters['notes']) != 'undefined') { |
504 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 4"); | 506 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 4"); |
505 | if (parameters['notes'] != "") { | 507 | if (parameters['notes'] != "") { |
506 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 5"); | 508 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 5"); |
507 | parameters['headerNotes'] = parameters['notes']; | 509 | parameters['headerNotes'] = parameters['notes']; |
508 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 6"); | 510 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 6"); |
509 | } | 511 | } |
510 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 7"); | 512 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 7"); |
511 | delete parameters['notes']; | 513 | delete parameters['notes']; |
512 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 8"); | 514 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 8"); |
513 | } | 515 | } |
514 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 9"); | 516 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 9"); |
515 | parameters['reference'] = recordReference; | 517 | parameters['reference'] = recordReference; |
516 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 10"); | 518 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 10"); |
517 | parameters['user'] = this.user(); | 519 | parameters['user'] = this.user(); |
518 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 11"); | 520 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 11"); |
519 | 521 | ||
520 | newRecord = new Clipperz.PM.DataModel.Record(parameters); | 522 | newRecord = new Clipperz.PM.DataModel.Record(parameters); |
521 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 12"); | 523 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 12"); |
522 | this.user().addRecord(newRecord, true); | 524 | this.user().addRecord(newRecord, true); |
523 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 13"); | 525 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 13"); |
524 | } | 526 | } |
525 | } | 527 | } |
526 | 528 | ||
527 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 14"); | 529 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 14"); |
528 | Clipperz.NotificationCenter.notify(null, 'recordAdded', null, true); | 530 | Clipperz.NotificationCenter.notify(null, 'recordAdded', null, true); |
529 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 15"); | 531 | //MochiKit.Logging.logDebug("--- Header.processRecordData - 15"); |
530 | } | 532 | } |
531 | //MochiKit.Logging.logDebug("<<< Header.processRecordData"); | 533 | //MochiKit.Logging.logDebug("<<< Header.processRecordData"); |
532 | 534 | ||
533 | return this.user().records(); | 535 | return this.user().records(); |
534 | }, | 536 | }, |
535 | 537 | ||
536 | //------------------------------------------------------------------------- | 538 | //------------------------------------------------------------------------- |
537 | 539 | ||
538 | 'processDirectLoginData': function(someDirectLoginData) { | 540 | 'processDirectLoginData': function(someDirectLoginData) { |
539 | var directLogins; | 541 | var directLogins; |
540 | var directLoginReference; | 542 | var directLoginReference; |
541 | 543 | ||
542 | //MochiKit.Logging.logDebug(">>> Header.processDirectLoginData"); | 544 | //MochiKit.Logging.logDebug(">>> Header.processDirectLoginData"); |
543 | directLogins = someDirectLoginData; | 545 | directLogins = someDirectLoginData; |
544 | if (directLogins != null) { | 546 | if (directLogins != null) { |
545 | for (directLoginReference in directLogins) { | 547 | for (directLoginReference in directLogins) { |
546 | var directLoginReference; | 548 | var directLoginReference; |
547 | var parameters; | 549 | var parameters; |
548 | 550 | ||
549 | parameters = directLogins[directLoginReference];//.slice(); | 551 | parameters = directLogins[directLoginReference];//.slice(); |
550 | parameters.user = this.user(); | 552 | parameters.user = this.user(); |
551 | parameters.reference = directLoginReference; | 553 | parameters.reference = directLoginReference; |
552 | directLoginReference = new Clipperz.PM.DataModel.DirectLoginReference(parameters); | 554 | directLoginReference = new Clipperz.PM.DataModel.DirectLoginReference(parameters); |
553 | if (directLoginReference.record() != null) { | 555 | if (directLoginReference.record() != null) { |
554 | this.user().addDirectLoginReference(directLoginReference, true); | 556 | this.user().addDirectLoginReference(directLoginReference, true); |
555 | } | 557 | } |
556 | } | 558 | } |
557 | } | 559 | } |
558 | 560 | ||
559 | Clipperz.NotificationCenter.notify(null, 'directLoginAdded', null, true); | 561 | Clipperz.NotificationCenter.notify(null, 'directLoginAdded', null, true); |
560 | //MochiKit.Logging.logDebug("<<< Header.processDirectLoginData"); | 562 | //MochiKit.Logging.logDebug("<<< Header.processDirectLoginData"); |
561 | 563 | ||
562 | return this.user().directLoginReferences(); | 564 | return this.user().directLoginReferences(); |
563 | }, | 565 | }, |
564 | 566 | ||
565 | //------------------------------------------------------------------------- | 567 | //------------------------------------------------------------------------- |
566 | 568 | ||
567 | 'shouldLoadSections': function() { | 569 | 'shouldLoadSections': function() { |
568 | return this._shouldLoadSections; | 570 | return this._shouldLoadSections; |
569 | }, | 571 | }, |
570 | 572 | ||
571 | 'shouldLoadSection': function(aSectionName) { | 573 | 'shouldLoadSection': function(aSectionName) { |
572 | var result; | 574 | var result; |
573 | 575 | ||
574 | if (typeof(this.shouldLoadSections()[aSectionName]) != 'undefined') { | 576 | if (typeof(this.shouldLoadSections()[aSectionName]) != 'undefined') { |
575 | result = this.shouldLoadSections()[aSectionName]; | 577 | result = this.shouldLoadSections()[aSectionName]; |
576 | } else { | 578 | } else { |
577 | result = true; | 579 | result = true; |
578 | } | 580 | } |
579 | 581 | ||
580 | return result; | 582 | return result; |
581 | }, | 583 | }, |
582 | 584 | ||
583 | 'setShouldLoadSection': function(aSectionName, aValue) { | 585 | 'setShouldLoadSection': function(aSectionName, aValue) { |
584 | this.shouldLoadSections()[aSectionName] = aValue; | 586 | this.shouldLoadSections()[aSectionName] = aValue; |
585 | }, | 587 | }, |
586 | 588 | ||
587 | //------------------------------------------------------------------------- | 589 | //------------------------------------------------------------------------- |
588 | 590 | ||
589 | 'loadRecords': function() { | 591 | 'loadRecords': function() { |
590 | var deferredResult; | 592 | var deferredResult; |
591 | 593 | ||
592 | if (this.shouldLoadSection('records') == true) { | 594 | if (this.shouldLoadSection('records') == true) { |
593 | this.setShouldLoadSection('records', false); | 595 | this.setShouldLoadSection('records', false); |
594 | 596 | ||
595 | deferredResult = new MochiKit.Async.Deferred(); | 597 | deferredResult = new MochiKit.Async.Deferred(); |
596 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 1: "/* + res*/); return res;}); | 598 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 1: "/* + res*/); return res;}); |
597 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 599 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
598 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); | 600 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); |
599 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 2: "/* + res*/); return res;}); | 601 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 2: "/* + res*/); return res;}); |
600 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 602 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
601 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); | 603 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); |
602 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 3: "/* + res*/); return res;}); | 604 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 3: "/* + res*/); return res;}); |
603 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 605 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
604 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'records')); | 606 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'records')); |
605 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 4: "/* + res*/); return res;}); | 607 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 4: "/* + res*/); return res;}); |
606 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 608 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
607 | deferredResult.addCallback(MochiKit.Base.method(this, 'processRecordData')); | 609 | deferredResult.addCallback(MochiKit.Base.method(this, 'processRecordData')); |
608 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 5: "/* + res*/); return res;}); | 610 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 5: "/* + res*/); return res;}); |
609 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 611 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
610 | deferredResult.callback(); | 612 | deferredResult.callback(); |
611 | } else { | 613 | } else { |
612 | deferredResult = MochiKit.Async.succeed(this.user().records()); | 614 | deferredResult = MochiKit.Async.succeed(this.user().records()); |
613 | } | 615 | } |
614 | 616 | ||
615 | return deferredResult; | 617 | return deferredResult; |
616 | }, | 618 | }, |
617 | 619 | ||
618 | //------------------------------------------------------------------------- | 620 | //------------------------------------------------------------------------- |
619 | 621 | ||
620 | 'loadDirectLogins': function() { | 622 | 'loadDirectLogins': function() { |
621 | var deferredResult; | 623 | var deferredResult; |
622 | 624 | ||
623 | if (this.shouldLoadSection('directLogins') == true) { | 625 | if (this.shouldLoadSection('directLogins') == true) { |
624 | this.setShouldLoadSection('directLogins', false); | 626 | this.setShouldLoadSection('directLogins', false); |
625 | 627 | ||
626 | deferredResult = new MochiKit.Async.Deferred(); | 628 | deferredResult = new MochiKit.Async.Deferred(); |
627 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 1: "/* + res*/); return res;}); | 629 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 1: "/* + res*/); return res;}); |
628 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 630 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
629 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); | 631 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); |
630 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 2: "/* + res*/); return res;}); | 632 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 2: "/* + res*/); return res;}); |
631 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 633 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
632 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); | 634 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); |
633 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 3: "/* + res*/); return res;}); | 635 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 3: "/* + res*/); return res;}); |
634 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 636 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
635 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'directLogins')); | 637 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'directLogins')); |
636 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 4: "/* + res*/); return res;}); | 638 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 4: "/* + res*/); return res;}); |
637 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 639 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
638 | deferredResult.addCallback(MochiKit.Base.method(this, 'processDirectLoginData')); | 640 | deferredResult.addCallback(MochiKit.Base.method(this, 'processDirectLoginData')); |
639 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 5: "/* + res*/); return res;}); | 641 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 5: "/* + res*/); return res;}); |
640 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 642 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
641 | deferredResult.callback(); | 643 | deferredResult.callback(); |
642 | } else { | 644 | } else { |
643 | deferredResult = MochiKit.Async.succeed(this.user().directLoginReferences()); | 645 | deferredResult = MochiKit.Async.succeed(this.user().directLoginReferences()); |
644 | } | 646 | } |
645 | 647 | ||
646 | return deferredResult; | 648 | return deferredResult; |
647 | }, | 649 | }, |
648 | 650 | ||
649 | //------------------------------------------------------------------------- | 651 | //------------------------------------------------------------------------- |
650 | 652 | ||
651 | 'loadPreferences': function() { | 653 | 'loadPreferences': function() { |
652 | var deferredResult; | 654 | var deferredResult; |
653 | 655 | ||
654 | if (this.shouldLoadSection('preferences') == true) { | 656 | if (this.shouldLoadSection('preferences') == true) { |
655 | this.setShouldLoadSection('preferences', false); | 657 | this.setShouldLoadSection('preferences', false); |
656 | 658 | ||
657 | deferredResult = new MochiKit.Async.Deferred(); | 659 | deferredResult = new MochiKit.Async.Deferred(); |
658 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 1: "/* + res*/); return res;}); | 660 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 1: "/* + res*/); return res;}); |
659 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 661 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
660 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); | 662 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); |
661 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 2: "/* + res*/); return res;}); | 663 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 2: "/* + res*/); return res;}); |
662 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 664 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
663 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); | 665 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); |
664 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 3: "/* + res*/); return res;}); | 666 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 3: "/* + res*/); return res;}); |
665 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 667 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
666 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'preferences')); | 668 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'preferences')); |
667 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 4: "/* + res*/); return res;}); | 669 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 4: "/* + res*/); return res;}); |
668 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 670 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
669 | deferredResult.addCallback(MochiKit.Base.method(this.user().preferences(), 'updateWithData')); | 671 | deferredResult.addCallback(MochiKit.Base.method(this.user().preferences(), 'updateWithData')); |
670 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 5: "/* + res*/); return res;}); | 672 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 5: "/* + res*/); return res;}); |
671 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 673 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
672 | deferredResult.callback(); | 674 | deferredResult.callback(); |
673 | } else { | 675 | } else { |
674 | deferredResult = MochiKit.Async.succeed(this.user().preferences()); | 676 | deferredResult = MochiKit.Async.succeed(this.user().preferences()); |
675 | } | 677 | } |
676 | 678 | ||
677 | return deferredResult; | 679 | return deferredResult; |
678 | }, | 680 | }, |
679 | 681 | ||
680 | //------------------------------------------------------------------------- | 682 | //------------------------------------------------------------------------- |
681 | 683 | ||
682 | 'loadOneTimePasswords': function() { | 684 | 'loadOneTimePasswords': function() { |
683 | var deferredResult; | 685 | var deferredResult; |
684 | 686 | ||
685 | if (this.shouldLoadSection('oneTimePasswords') == true) { | 687 | if (this.shouldLoadSection('oneTimePasswords') == true) { |
686 | this.setShouldLoadSection('oneTimePasswords', false); | 688 | this.setShouldLoadSection('oneTimePasswords', false); |
687 | 689 | ||
688 | deferredResult = new MochiKit.Async.Deferred(); | 690 | deferredResult = new MochiKit.Async.Deferred(); |
689 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 1: "/* + res*/); return res;}); | 691 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 1: "/* + res*/); return res;}); |
690 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 692 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
691 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); | 693 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); |
692 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 2: "/* + res*/); return res;}); | 694 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 2: "/* + res*/); return res;}); |
693 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 695 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
694 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); | 696 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); |
695 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 3: "/* + res*/); return res;}); | 697 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 3: "/* + res*/); return res;}); |
696 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 698 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
697 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'oneTimePasswords')); | 699 | deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'oneTimePasswords')); |
698 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 4: "/* + res*/); return res;}); | 700 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 4: "/* + res*/); return res;}); |
699 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 701 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
700 | deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithData')); | 702 | deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithData')); |
701 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 5: "/* + res*/); return res;}); | 703 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 5: "/* + res*/); return res;}); |
702 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 704 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
703 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getOneTimePasswordsDetails', {}); | 705 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getOneTimePasswordsDetails', {}); |
704 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 6: "/* + res*/); return res;}); | 706 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 6: "/* + res*/); return res;}); |
705 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 707 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
706 | deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithServerData')); | 708 | deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithServerData')); |
707 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 7: "/* + res*/); return res;}); | 709 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 7: "/* + res*/); return res;}); |
708 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 710 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
709 | deferredResult.callback(); | 711 | deferredResult.callback(); |
710 | } else { | 712 | } else { |
711 | deferredResult = MochiKit.Async.succeed(this.user().oneTimePasswordManager()); | 713 | deferredResult = MochiKit.Async.succeed(this.user().oneTimePasswordManager()); |
712 | } | 714 | } |
713 | 715 | ||
714 | return deferredResult; | 716 | return deferredResult; |
715 | }, | 717 | }, |
716 | 718 | ||
717 | //------------------------------------------------------------------------- | 719 | //------------------------------------------------------------------------- |
718 | 720 | ||
719 | 'loadAllSections': function() { | 721 | 'loadAllSections': function() { |
720 | var deferredResult; | 722 | var deferredResult; |
721 | 723 | ||
722 | deferredResult = new MochiKit.Async.Deferred(); | 724 | deferredResult = new MochiKit.Async.Deferred(); |
723 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 1: "/* + res*/); return res;}); | 725 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 1: "/* + res*/); return res;}); |
724 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 726 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
725 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadRecords')); | 727 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadRecords')); |
726 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 2: "/* + res*/); return res;}); | 728 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 2: "/* + res*/); return res;}); |
727 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 729 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
728 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadDirectLogins')); | 730 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadDirectLogins')); |
729 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 3: "/* + res*/); return res;}); | 731 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 3: "/* + res*/); return res;}); |
730 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 732 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
731 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadPreferences')); | 733 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadPreferences')); |
732 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 4: "/* + res*/); return res;}); | 734 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 4: "/* + res*/); return res;}); |
733 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 735 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
734 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); | 736 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); |
735 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 5: "/* + res*/); return res;}); | 737 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 5: "/* + res*/); return res;}); |
736 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); | 738 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); |
737 | deferredResult.callback(); | 739 | deferredResult.callback(); |
738 | 740 | ||
739 | return deferredResult; | 741 | return deferredResult; |
740 | }, | 742 | }, |
741 | 743 | ||
742 | //------------------------------------------------------------------------- | 744 | //------------------------------------------------------------------------- |
743 | __syntaxFix__: "syntax fix" | 745 | __syntaxFix__: "syntax fix" |
744 | 746 | ||
745 | }); | 747 | }); |
746 | 748 | ||