summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM/DataModel/User.js
Unidiff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM/DataModel/User.js') (more/less context) (show whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.js24
1 files changed, 10 insertions, 14 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
index 646ce21..fd18faf 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
@@ -1,46 +1,44 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* 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
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 24if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 25if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 26if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
29 27
30 28
31//############################################################################# 29//#############################################################################
32 30
33Clipperz.PM.DataModel.User = function (args) { 31Clipperz.PM.DataModel.User = function (args) {
34 args = args || {}; 32 args = args || {};
35 33
36 Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments); 34 Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments);
37 35
38 this._username = args.username || null; 36 this._username = args.username || null;
39 this._getPassphraseFunction = args.getPassphraseFunction || null; 37 this._getPassphraseFunction = args.getPassphraseFunction || null;
40 38
41 this._data = null; 39 this._data = null;
42 40
43 this._connection = null; 41 this._connection = null;
44 this._connectionVersion = 'current'; 42 this._connectionVersion = 'current';
45 43
46 this._serverData = null; 44 this._serverData = null;
@@ -307,49 +305,48 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
307 var result; 305 var result;
308 306
309 if (anHeader.charAt(0) == '{') { 307 if (anHeader.charAt(0) == '{') {
310 varheaderData; 308 varheaderData;
311 309
312 headerData = Clipperz.Base.evalJSON(anHeader); 310 headerData = Clipperz.Base.evalJSON(anHeader);
313 result = headerData['version']; 311 result = headerData['version'];
314 } else { 312 } else {
315 result = 'LEGACY'; 313 result = 'LEGACY';
316 } 314 }
317 315
318 return result; 316 return result;
319 }, 317 },
320 318
321 //------------------------------------------------------------------------- 319 //-------------------------------------------------------------------------
322 320
323 'unpackServerData': function (someServerData) { 321 'unpackServerData': function (someServerData) {
324 var unpackedData; 322 var unpackedData;
325 var headerVersion; 323 var headerVersion;
326 324
327 varrecordsIndex; 325 varrecordsIndex;
328 var preferences; 326 var preferences;
329 var oneTimePasswords; 327 var oneTimePasswords;
330 328
331//console.log(">>> ***************** user.unpackServerData", someServerData);
332 // this.setServerLockValue(someServerData['lock']); 329 // this.setServerLockValue(someServerData['lock']);
333 330
334 headerVersion = this.headerFormatVersion(someServerData['header']); 331 headerVersion = this.headerFormatVersion(someServerData['header']);
335 332
336 switch (headerVersion) { 333 switch (headerVersion) {
337 case 'LEGACY': 334 case 'LEGACY':
338 varlegacyHeader; 335 varlegacyHeader;
339 336
340 legacyHeader = new Clipperz.PM.DataModel.User.Header.Legacy({ 337 legacyHeader = new Clipperz.PM.DataModel.User.Header.Legacy({
341 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), 338 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'),
342 'remoteData': { 339 'remoteData': {
343 'data': someServerData['header'], 340 'data': someServerData['header'],
344 'version': someServerData['version'], 341 'version': someServerData['version'],
345 'recordsStats': someServerData['recordsStats'] 342 'recordsStats': someServerData['recordsStats']
346 }, 343 },
347 // 'encryptedDataKeypath': 'data', 344 // 'encryptedDataKeypath': 'data',
348 // 'encryptedVersionKeypath': 'version', 345 // 'encryptedVersionKeypath': 'version',
349 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') 346 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail')
350 }); 347 });
351 348
352 recordsIndex = legacyHeader; 349 recordsIndex = legacyHeader;
353 preferences = legacyHeader; 350 preferences = legacyHeader;
354 oneTimePasswords= legacyHeader; 351 oneTimePasswords= legacyHeader;
355 break; 352 break;
@@ -396,49 +393,48 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
396 } else { 393 } else {
397 oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ 394 oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({
398 'name':'preferences', 395 'name':'preferences',
399 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') 396 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase')
400 }); 397 });
401 } 398 }
402 399
403 break; 400 break;
404 } 401 }
405 402
406 unpackedData = { 403 unpackedData = {
407 'version': someServerData['version'], 404 'version': someServerData['version'],
408 'statistics': someServerData['statistics'], 405 'statistics': someServerData['statistics'],
409 'header': { 406 'header': {
410 'data': someServerData['header'], 407 'data': someServerData['header'],
411 'version': headerVersion, 408 'version': headerVersion,
412 409
413 'recordsIndex': recordsIndex, 410 'recordsIndex': recordsIndex,
414 'preferences': preferences, 411 'preferences': preferences,
415 'oneTimePasswords': oneTimePasswords 412 'oneTimePasswords': oneTimePasswords
416 } 413 }
417 }; 414 };
418 415
419 this._serverData = unpackedData; 416 this._serverData = unpackedData;
420//console.log("<<< ***************** user.unpackServerData", this._serverData);
421 417
422 return this._serverData; 418 return this._serverData;
423 }, 419 },
424 420
425 //------------------------------------------------------------------------- 421 //-------------------------------------------------------------------------
426 422
427 'getServerData': function() { 423 'getServerData': function() {
428 var deferredResult; 424 var deferredResult;
429 425
430 deferredResult = new Clipperz.Async.Deferred("User.getServerData", {trace:false}); 426 deferredResult = new Clipperz.Async.Deferred("User.getServerData", {trace:false});
431 deferredResult.acquireLock(this.deferredLockForSection('serverData')); 427 deferredResult.acquireLock(this.deferredLockForSection('serverData'));
432 deferredResult.addCallback(MochiKit.Base.bind(function(aResult) { 428 deferredResult.addCallback(MochiKit.Base.bind(function(aResult) {
433 var innerDeferredResult; 429 var innerDeferredResult;
434 430
435 innerDeferredResult = new Clipperz.Async.Deferred("User.getUserDetails.innerDeferred", {trace:false}); 431 innerDeferredResult = new Clipperz.Async.Deferred("User.getUserDetails.innerDeferred", {trace:false});
436 if (this._serverData == null) { 432 if (this._serverData == null) {
437 innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadingUserDetails'); 433 innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadingUserDetails');
438 innerDeferredResult.addMethod(this.connection(), 'message', 'getUserDetails'); 434 innerDeferredResult.addMethod(this.connection(), 'message', 'getUserDetails');
439 innerDeferredResult.addMethod(this, 'unpackServerData'); 435 innerDeferredResult.addMethod(this, 'unpackServerData');
440 innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadedUserDetails'); 436 innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadedUserDetails');
441 } 437 }
442 438
443 innerDeferredResult.addCallback(MochiKit.Base.bind(function () { 439 innerDeferredResult.addCallback(MochiKit.Base.bind(function () {
444 return this._serverData; 440 return this._serverData;