diff --git a/frontend/delta/css/clipperz.css b/frontend/delta/css/clipperz.css index eb8b934..a7cea2f 100644 --- a/frontend/delta/css/clipperz.css +++ b/frontend/delta/css/clipperz.css @@ -58,7 +58,7 @@ table { font-family: "clipperz-icons"; font-style: normal; font-weight: normal; - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABRIAAwAAAAAE/gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABHAAAAs4AAALO7TLxLU9TLzIAAAPsAAAAYAAAAGAIYwCFY21hcAAABEwAAACEAAAAhNFx0aZnYXNwAAAE0AAAAAgAAAAIAAAAEGdseWYAAATYAAAMLAAADCwzNy3OaGVhZAAAEQQAAAA2AAAANgO5wZ9oaGVhAAARPAAAACQAAAAkA/kCMWhtdHgAABFgAAAAwAAAAMApygKpbG9jYQAAEiAAAABiAAAAYi/cLURtYXhwAAAShAAAACAAAAAgADkAfG5hbWUAABKkAAABhAAAAYSH7XEQcG9zdAAAFCgAAAAgAAAAIAADAAAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAAAAAABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACgAAAAEAJgAQAEoAfgCMAOIBHAEsAVABeAGcAaoBtAH6AjICSgJqAooAAQAQAAQABQAGAAcACAAJAAoADgAPABEAEwAUABUAFgAXAC8AAgAGACIAKAANAAcABwADABAACAAYAAMACQAMAAgADgAHACIACAAHAAcAAwAGAAQAEwAHAAEABAAlAAQABAAGAA0ABQAMAB4AKgA8AEgALAAIABEADwAPAAQAEAAHABQAHAAFAA4AEQAUAAgAHgAIAA4ADAASABIACAATABkAHAAFAA4ACAAEABMAHAAGAAQAEAAGAAgADgADAAgAEgAsAB0ABAARABAACAAjAAwADAATAAgABgAVAAMADgARAAoADAAQABwABgAIAA4ACAAVAAgAAQAEACcABQAPAAQADAAOAAIABgAWABwABwAEAAwADgAWABMACAAcAAYABAAMAA4ACAAHAAEABAAtABEACAAQAAgAEwAEABUACAADABIABAAUABQAGAARABMABwACAAYAFAApAAYAEQAGAA0ACAAHACQABwARAAQABwAMABAACgABAAQAGwAEAAgAEAAWAAEABAAdAAIADQADAAgAHgA4ACsACgAIAA8AEQAXAAgAAwAVAAQACgArAAwACAAPABEAFwAIAAMACQAMAAgADgAHACEABgAIAAYACAAQABUAAwAIACAALgAmAAsACwARABgAAwAHAAgAFQAEAAwADgAgAAYACAAEABMABgALAB0ABAAE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) format("woff"); } + src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABU8AAwAAAAAFOwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABHAAAAwYAAAMG8Kr0309TLzIAAAQkAAAAYAAAAGAIYwBrY21hcAAABIQAAACcAAAAnNHb0kxnYXNwAAAFIAAAAAgAAAAIAAAAEGdseWYAAAUoAAAMaAAADGg2OtN/aGVhZAAAEZAAAAA2AAAANgSXPhtoaGVhAAARyAAAACQAAAAkA/kCNGhtdHgAABHsAAAAzAAAAMwrygKpbG9jYQAAErgAAABoAAAAaDAeMsBtYXhwAAATIAAAACAAAAAgADwAfG5hbWUAABNAAAAB2gAAAdo7wz5qcG9zdAAAFRwAAAAgAAAAIAADAAAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAAAAAABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACgAAAAEAJgAQAEoAfgCMAQIBPAFMAXABmAG8AcoB1AIyAmoCggKiAsIAAQAQAAcACAAJAAoACwAMAA0AEQASABQAFgAXABgAGQAaADIAAgAGACIAKwANAAoACgADABMACwAbAAMADAAPAAsAEQAKACUACAAKAAoAAwAJAAcAFgAKAAEABAAoAAQABwAJABAABgAOACwAPgBKAFwAaAArAA4AFgALAAcAGAALAAMAEwALABsAAwAEAAYABQAvAAgAFAASABIABwATAAoAFwAfAAUAEQAUABcACwAhAAgAEQAPABUAFQALABYAHAAfAAUAEQALAAcAFgAfAAYABwATAAkACwARAAMACAASACwAIAAEABQAEwALACYADAAPABYACwAJABgAAwARABQADQAPABMAHwAGAAsAEQALABgACwABAAQAKgAFABIABwAPABEAAgAGABYAHwAHAAcADwARABkAFgALAB8ABgAHAA8AEQALAAoAAQAEADAAEQALABMACwAWAAcAGAALAAMAFQAHABcAFwAbABQAFgAKAAIABgAUACwABgAUAAkAEAALAAoAJwAHABQABwAKAA8AEwANAAEABAAeAAQACwATABkAAQAEACAAAgAQAAQACgAgADoAUAAuAAoACwASABQAGgALAAMAGAAHAA0ALgAMAAsAEgAUABoACwADAAwADwALABEACgAuAAoACwASABQAGgALAAMABAAGAAUAJAAGAAsACQAL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) format("woff"); } /* @font-face { font-family: "clipperz-password"; @@ -469,6 +469,21 @@ div.overlay { -ms-animation-delay: -0.0833s; -o-animation-delay: -0.0833s; animation-delay: -0.0833s; } + div.overlay .progressBar { + width: 100%; + background-color: #222; + height: 4px; + margin-top: 86px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; } + div.overlay .progressBar .progress { + background-color: #999; + height: 4px; + display: block; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; } @-webkit-keyframes overlay-spin { from { @@ -619,7 +634,7 @@ html { visibility: visible; display: block; } -input { +input[type=text] { -webkit-appearance: none; } .mainPage > #selectionPanel { @@ -866,6 +881,37 @@ input { width: 100%; height: 100%; background-color: black; } + #extraFeaturesPanel .extraFeatureContent .extraFeature { + display: -webkit-box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .header { + -webkit-box-flex: none; + -webkit-flex: none; + -moz-box-flex: none; + -moz-flex: none; + -ms-flex: none; + flex: none; + padding: 20px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .content { + -webkit-box-flex: auto; + -webkit-flex: auto; + -moz-box-flex: auto; + -moz-flex: auto; + -ms-flex: auto; + flex: auto; + padding: 0px 20px 20px 20px; + overflow: auto; + -webkit-overflow-scrolling: touch; } .container { height: 100%; @@ -2031,6 +2077,8 @@ span.count { background-color: #333; } #extraFeaturesPanel .extraFeatureIndex > div ul li > ul > li > div { padding: 4px; } + #extraFeaturesPanel .extraFeatureIndex > div ul li > ul > li.offlineCopy { + cursor: default; } #extraFeaturesPanel .extraFeatureIndex > div ul li h2 { font-weight: 300; font-size: 14pt; } @@ -2102,14 +2150,13 @@ span.count { */ } #extraFeaturesPanel .extraFeatureContent header { display: none; } - #extraFeaturesPanel .extraFeatureContent .extraFeature { - padding: 20px; } - #extraFeaturesPanel .extraFeatureContent .extraFeature h1 { - font-size: 20pt; - padding-bottom: 20px; } - #extraFeaturesPanel .extraFeatureContent form label { + #extraFeaturesPanel .extraFeatureContent .extraFeature .header h1 { + font-size: 20pt; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .header p { + padding: 10px 0px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature form label { display: none; } - #extraFeaturesPanel .extraFeatureContent form input { + #extraFeaturesPanel .extraFeatureContent .extraFeature form input { display: block; font-size: 18pt; margin-bottom: 8px; @@ -2117,10 +2164,10 @@ span.count { border: 0px solid white; width: 350px; color: black; } - #extraFeaturesPanel .extraFeatureContent form input.invalid { + #extraFeaturesPanel .extraFeatureContent .extraFeature form input.invalid { border: 0px solid #ff9900; color: gray; } - #extraFeaturesPanel .extraFeatureContent form p { + #extraFeaturesPanel .extraFeatureContent .extraFeature form p { display: -webkit-box; display: -webkit-flex; display: -moz-flex; @@ -2131,8 +2178,9 @@ span.count { -webkit-flex-direction: row; -moz-flex-direction: row; -ms-flex-direction: row; - flex-direction: row; } - #extraFeaturesPanel .extraFeatureContent form p input { + flex-direction: row; + padding-top: 8px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature form p input { width: 30px; -webkit-box-flex: auto; -webkit-flex: auto; @@ -2140,15 +2188,18 @@ span.count { -moz-flex: auto; -ms-flex: auto; flex: auto; } - #extraFeaturesPanel .extraFeatureContent form p span { + #extraFeaturesPanel .extraFeatureContent .extraFeature form p label { -webkit-box-flex: auto; -webkit-flex: auto; -moz-box-flex: auto; -moz-flex: auto; -ms-flex: auto; flex: auto; - font-size: 12pt; } - #extraFeaturesPanel .extraFeatureContent form button { + font-size: 12pt; + display: block; + cursor: pointer; + line-height: 1.5em; } + #extraFeaturesPanel .extraFeatureContent .extraFeature form button { font-family: "clipperz-font"; color: white; font-size: 14pt; @@ -2162,10 +2213,383 @@ span.count { -o-transition: background-color font-weight 0.2s linear; -ms-transition: background-color font-weight 0.2s linear; transition: background-color font-weight 0.2s linear; } - #extraFeaturesPanel .extraFeatureContent form button:disabled { + #extraFeaturesPanel .extraFeatureContent .extraFeature form button:disabled { font-weight: 100; background-color: #c0c0c0; cursor: default; } + #extraFeaturesPanel .extraFeatureContent .extraFeature ul { + color: white; } + #extraFeaturesPanel .extraFeatureContent .extraFeature ul li { + padding-bottom: 30px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature h3 { + font-size: 18pt; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .description { + padding: 10px 0px 20px 0px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .description p { + font-size: 10pt; + margin-bottom: 7px; + line-height: 1.4em; + color: #bbb; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .description p em { + text-decoration: underline; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .description p.warning { + font-weight: bold; + color: white; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .button { + display: inline-block; + color: white; + background-color: #ff9900; + font-size: 14pt; + border: 1px solid white; + padding: 10px 14px; } + #extraFeaturesPanel .extraFeatureContent .extraFeature .button.disabled { + background-color: #c0c0c0; + cursor: default; } + #extraFeaturesPanel .extraFeatureContent .OTP { + height: 100%; } + #extraFeaturesPanel .extraFeatureContent .OTP .header .description { + padding-bottom: 0px; } + #extraFeaturesPanel .extraFeatureContent .OTP .header .description p { + margin-bottom: 0px; + padding-bottom: 0px; } + #extraFeaturesPanel .extraFeatureContent .OTP .actions { + padding-left: 9px; + padding-top: 6px; } + #extraFeaturesPanel .extraFeatureContent .OTP .actions a { + font-family: 'clipperz-icons'; + -webkit-font-feature-settings: "liga" 1, "dlig" 1; + -moz-font-feature-settings: "liga" 1, "dlig" 1; + -ms-font-feature-settings: "liga" 1, "dlig" 1; + -o-font-feature-settings: "liga" 1, "dlig" 1; + font-feature-settings: "liga" 1, "dlig" 1; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + cursor: pointer; + font-size: 18pt; + line-height: 1.1em; } + #extraFeaturesPanel .extraFeatureContent .OTP .actions a:hover { + color: green; } + #extraFeaturesPanel .extraFeatureContent .OTP .selectMenu { + margin-top: 1em; } + #extraFeaturesPanel .extraFeatureContent .OTP .selectMenu li { + display: inline-block; + margin-right: 1em; + padding: 1em 0; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail { + display: -webkit-box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + border: 1px solid #222; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px 0; + margin: 4px 0; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction { + width: 40px; + text-align: center; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction a { + font-family: 'clipperz-icons'; + -webkit-font-feature-settings: "liga" 1, "dlig" 1; + -moz-font-feature-settings: "liga" 1, "dlig" 1; + -ms-font-feature-settings: "liga" 1, "dlig" 1; + -o-font-feature-settings: "liga" 1, "dlig" 1; + font-feature-settings: "liga" 1, "dlig" 1; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + cursor: pointer; + font-size: 16pt; + line-height: 1.1em; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction a:hover { + color: red; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpPassword { + font-size: 14pt; + line-height: 1.3em; + -webkit-user-select: text; + /* Chrome all / Safari all */ + -moz-user-select: text; + /* Firefox all */ + -ms-user-select: text; + /* IE 10+ */ + /* No support for these yet, use at own risk */ + -o-user-select: text; + user-select: text; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpLabel span { + font-size: 12pt; + color: gray; + padding: 4px 0px 4px 0px; + line-height: 1.3em; + cursor: pointer; + display: block; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpLabel input { + font-size: 12pt; + color: gray; + width: 100%; + border: 0px; + padding: 2px; + padding-left: 0px; + margin: 0px; + margin-bottom: 1px; + background-color: #333; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpStatusInfo { + font-size: 8pt; + color: gray; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpStatusInfo span { + padding-right: 10px; } + #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail.REQUESTED, #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail.USED { + background-color: #222; } + #extraFeaturesPanel .extraFeatureContent .OTP .button { + margin: 1em 1em 0 0; } + #extraFeaturesPanel .extraFeatureContent .OTP table tr td a { + font-size: small; + padding: 0 1em; + text-decoration: underline; + cursor: pointer; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content { + display: block; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + /* + .csvTable { + background: white; + margin: 1em 0; + } + + + .button { + margin-right:1em; + } + + .jsonPreview { + width: 100%; + height:80%; + overflow: auto; + margin-top:1em; + + h3 { + font-weight:bold; + } + + ul { + margin-bottom:1em; + padding-left:1em; + + li { + .label { + font-weight:bold; + } + } + } + } + */ } + #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar { + -webkit-box-flex: none; + -webkit-flex: none; + -moz-box-flex: none; + -moz-flex: none; + -ms-flex: none; + flex: none; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + font-size: 24pt; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar.Input { + display: none; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar li { + display: inline-block; + padding: 0px; + padding-right: 10px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar li.disabled { + color: gray; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step { + -webkit-box-flex: auto; + -webkit-flex: auto; + -moz-box-flex: auto; + -moz-flex: auto; + -ms-flex: auto; + flex: auto; + overflow: auto; + -webkit-overflow-scrolling: touch; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input .description p { + width: 100%; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form .dropArea { + width: calc(100% - 6px); + text-align: center; + height: inherit; + line-height: 2em; + border: 3px dashed white; + background: black; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form p { + margin: 10px 50%; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form p.error { + color: red; + font-size: 10pt; + font-style: italic; + margin: 0px 0px 10px 0px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form textarea { + width: 100%; + min-height: 100px; + display: block; + margin: 1em 0; + border: 0; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card { + display: -webkit-box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + padding-top: 15px; + padding-bottom: 0px; + border-bottom: 1px solid #333; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card.archived { + background-color: #333; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card input { + width: 30px; + margin-top: 6px; + -webkit-box-flex: none; + -webkit-flex: none; + -moz-box-flex: none; + -moz-flex: none; + -ms-flex: none; + flex: none; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent { + -webkit-box-flex: auto; + -webkit-flex: auto; + -moz-box-flex: auto; + -moz-flex: auto; + -ms-flex: auto; + flex: auto; + display: -webkit-box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: auto; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent h3 { + font-size: 24pt; + padding-bottom: 6px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li { + display: inline-block; + padding-right: 10px; + padding-bottom: 5px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li:before { + content: 'tag'; + font-family: 'clipperz-icons'; + -webkit-font-feature-settings: "liga" 1, "dlig" 1; + -moz-font-feature-settings: "liga" 1, "dlig" 1; + -ms-font-feature-settings: "liga" 1, "dlig" 1; + -o-font-feature-settings: "liga" 1, "dlig" 1; + font-feature-settings: "liga" 1, "dlig" 1; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-size: 10pt; + padding-right: 5px; + line-height: 28px; + color: #ccc; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dt { + font-size: 12pt; + color: gray; + line-height: 16pt; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd { + font-size: 16pt; + color: white; + line-height: 24pt; + padding-bottom: 6pt; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd.PASSWORD { + font-family: clipperz-password; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent p { + font-size: 10pt; + padding-top: 10px; + padding-bottom: 10px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Import h5 { + padding-bottom: 15px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable { + width: 100%; + color: white; + border-collapse: collapse; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable thead { + background-color: gray; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable thead th { + align: left; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable tbody td { + align: right; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable td, #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th { + border: 1px solid #999; + padding: 0.5rem; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable td.PASSWORD, #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.PASSWORD { + font-family: clipperz-password; + font-size: 14.9pt; + line-height: 10pt; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th { + background-color: #666; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.title { + background-color: #888; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.notes { + background-color: #aaa; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th input { + color: white; + border: 0px; + padding: 0px; + font-size: 12pt; + font-weight: bold; + background-color: inherit; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons { + -webkit-box-flex: none; + -webkit-flex: none; + -moz-box-flex: none; + -moz-flex: none; + -ms-flex: none; + flex: none; + text-align: center; + padding-top: 10px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons.Input .button.back { + visibility: hidden; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons.Import .button.next { + visibility: hidden; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button { + margin: 0px 5px; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button span { + display: none; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.back { + background-color: #c0c0c0; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.back:before { + content: '<<'; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.next.DISABLED { + background-color: #d3d3d3; } + #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.next:after { + content: '>>'; } + #extraFeaturesPanel .extraFeatureContent form input.valid + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.empty + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input:focus + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.invalid:focus + .invalidMsg { + visibility: hidden; } .mainPage.narrow #extraFeaturesPanel .extraFeatureContent header { display: block; diff --git a/frontend/delta/css/clipperz.css.map b/frontend/delta/css/clipperz.css.map index 4fe7ec0..1140b66 100644 --- a/frontend/delta/css/clipperz.css.map +++ b/frontend/delta/css/clipperz.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["../scss/core/reset.scss","../scss/core/fonts.scss","../scss/core/clipperz-font/dejavu.scss","../scss/core/mixin.scss","../scss/core/overlay.scss","../scss/core/layout.scss","../scss/core/behavior.scss","../scss/core/parameters.scss","../scss/core/flex.scss","../scss/core/palette.scss","../scss/core/tagEditor.scss","../scss/style/loadingPage.scss","../scss/style/loginPage.scss","../scss/style/registrationPage.scss","../scss/style/selectionPanel.scss","../scss/style/settingsPanel.scss","../scss/style/accountStatus.scss","../scss/style/card.scss","../scss/style/dialogBox.scss","../scss/clipperz.scss","../scss/core/sizes.scss"], "names": [], "file": "clipperz.css" diff --git a/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json b/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json index 42edcb8..20b7e4c 100755 --- a/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json +++ b/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json @@ -26,7 +26,7 @@ "ligatures": "generate password", "name": "key" }, - "setIdx": 1, + "setIdx": 2, "setId": 7, "iconIdx": 141 }, @@ -55,7 +55,7 @@ "ligatures": "view password", "name": "eye" }, - "setIdx": 1, + "setIdx": 2, "setId": 7, "iconIdx": 206 }, @@ -81,7 +81,7 @@ "name": "tag", "ligatures": "tag" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 0 }, @@ -108,7 +108,7 @@ "name": "tags", "ligatures": "tags" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 1 }, @@ -135,7 +135,7 @@ "name": "clock", "ligatures": "recent" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 2 }, @@ -164,7 +164,7 @@ "name": "spinner", "ligatures": "loading" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 3 }, @@ -192,7 +192,7 @@ "name": "search", "ligatures": "search" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 4 }, @@ -220,7 +220,7 @@ "name": "locked", "ligatures": "locked" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 6 }, @@ -246,7 +246,7 @@ "name": "unlocked", "ligatures": "unlocked" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 7 }, @@ -275,7 +275,7 @@ "name": "menu", "ligatures": "menu" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 8 }, @@ -304,7 +304,7 @@ "name": "close", "ligatures": "failure, failed, delete, clear, cancel, close" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 9 }, @@ -333,7 +333,7 @@ "name": "checkmark", "ligatures": "done, ok, save" }, - "setIdx": 2, + "setIdx": 3, "setId": 6, "iconIdx": 10 }, @@ -348,8 +348,10 @@ "grid": 0, "tags": [ "commands" - ] + ], + "attrs": [] }, + "attrs": [], "properties": { "order": 18, "id": 1, @@ -358,7 +360,7 @@ "name": "commands", "ligatures": "commands" }, - "setIdx": 3, + "setIdx": 4, "setId": 4, "iconIdx": 0 }, @@ -371,8 +373,10 @@ "grid": 0, "tags": [ "logo" - ] + ], + "attrs": [] }, + "attrs": [], "properties": { "order": 4, "id": 0, @@ -381,7 +385,7 @@ "name": "logo", "ligatures": "clipperz" }, - "setIdx": 3, + "setIdx": 4, "setId": 4, "iconIdx": 1 }, @@ -398,8 +402,10 @@ "envelope", "contact" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 4, "order": 19, @@ -408,7 +414,7 @@ "name": "mail", "ligatures": "email" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 4 }, @@ -422,8 +428,10 @@ "popout", "new window" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 35, "order": 9, @@ -432,7 +440,7 @@ "name": "popup", "ligatures": "url, direct login" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 35 }, @@ -446,17 +454,19 @@ "add", "sum" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 125, "order": 14, "prevSize": 32, "code": 58895, "name": "plus", - "ligatures": "add new field" + "ligatures": "add new field, create new OTP" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 125 }, @@ -472,17 +482,19 @@ "remove", "delete" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 126, "order": 17, "prevSize": 32, "code": 58898, "name": "cross", - "ligatures": "remove field, remove tag" + "ligatures": "remove field, remove tag, remove OTP" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 126 }, @@ -496,8 +508,10 @@ "add", "sum" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 128, "order": 20, @@ -506,7 +520,7 @@ "name": "plus3", "ligatures": "add card" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 128 }, @@ -520,8 +534,10 @@ "left", "previous" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 205, "order": 11, @@ -530,7 +546,7 @@ "name": "arrow-left", "ligatures": "back" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 205 }, @@ -544,8 +560,10 @@ "right", "next" ], - "grid": 20 + "grid": 20, + "attrs": [] }, + "attrs": [], "properties": { "id": 208, "order": 12, @@ -554,7 +572,7 @@ "name": "arrow-right", "ligatures": "show detail" }, - "setIdx": 6, + "setIdx": 7, "setId": 0, "iconIdx": 208 } @@ -584,7 +602,8 @@ "showMetadata": false, "autoHost": false, "embed": true, - "showVersion": true + "showVersion": true, + "ligaReset": "tags" }, "imagePref": { "color": 0, diff --git a/frontend/delta/html/index_template.html b/frontend/delta/html/index_template.html index 4514f08..109f841 100644 --- a/frontend/delta/html/index_template.html +++ b/frontend/delta/html/index_template.html @@ -110,7 +110,8 @@ Clipperz_normalizedNewLine = '\x0d\x0a'; // Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.Offline({ 'dataStore':dataStore, 'type':'OFFLINE_COPY', 'typeDescription':'Offline copy'}); Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.Offline({ 'dataStore':dataStore, 'type':'ONLINE', 'typeDescription':'Offline copy'}); Clipperz.PM.Proxy.defaultProxy.dataStore().setupWithEncryptedData(testData); - + + diff --git a/frontend/delta/js/Clipperz/Base.js b/frontend/delta/js/Clipperz/Base.js index d6d9f6f..cac32e9 100644 --- a/frontend/delta/js/Clipperz/Base.js +++ b/frontend/delta/js/Clipperz/Base.js @@ -82,6 +82,7 @@ MochiKit.Base.update(Clipperz.Base, { return MochiKit.Base.compare(a[aKey].toLowerCase(), b[aKey].toLowerCase()); } }, + //------------------------------------------------------------------------- /* 'dependsOn': function(module, deps) { @@ -111,6 +112,10 @@ MochiKit.Base.update(Clipperz.Base, { return aValue.replace(/^\s+|\s+$/g, ""); }, + 'zipWithRange': function (anArray) { + return MochiKit.Base.zip(MochiKit.Iter.range(anArray.length), anArray); + }, + //------------------------------------------------------------------------- 'stringToByteArray': function (aValue) { diff --git a/frontend/delta/js/Clipperz/PM/Connection.js b/frontend/delta/js/Clipperz/PM/Connection.js index bb9df22..9dade4a 100644 --- a/frontend/delta/js/Clipperz/PM/Connection.js +++ b/frontend/delta/js/Clipperz/PM/Connection.js @@ -240,13 +240,13 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. //------------------------------------------------------------------------- - 'updateCredentials': function (aUsername, aPassphrase, someUserData) { + 'updateCredentials': function (someData) { var deferredResult; deferredResult = new Clipperz.Async.Deferred("Connection.updateCredentials", {trace:false}); deferredResult.collectResults({ 'credentials': [ - MochiKit.Base.method(this, 'normalizedCredentials', {username:aUsername, password:aPassphrase}), + MochiKit.Base.method(this, 'normalizedCredentials', {username:someData['newUsername'], password:someData['newPassphrase']}), MochiKit.Base.bind(function(someCredentials) { var srpConnection; var result; @@ -258,15 +258,13 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. return result; }, this) ], - 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData) + 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someData['user']), + 'oneTimePasswords': MochiKit.Base.partial(MochiKit.Async.succeed, someData['oneTimePasswords']) }); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); deferredResult.addMethod(this, 'message', 'upgradeUserCredentials'); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); deferredResult.callback(); return deferredResult; - }, //========================================================================= @@ -309,12 +307,12 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. 'message': 'oneTimePassword', 'version': Clipperz.PM.Connection.communicationProtocol.currentVersion, 'parameters': { - 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(someParameters['username'], normalizedOTP), + 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(normalizedOTP), 'oneTimePasswordKeyChecksum': Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(someParameters['username'], normalizedOTP) } } - return Clipperz.Async.callbacks("Connction.redeemOTP", [ + return Clipperz.Async.callbacks("Connction.redeemOneTimePassword", [ MochiKit.Base.method(this.proxy(), 'handshake', args), function(aResult) { return Clipperz.PM.Crypto.deferredDecrypt({ @@ -364,8 +362,6 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. return result; }); deferredResult.addMethod(this.proxy(), 'handshake'); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_credentialVerification'); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); deferredResult.addCallback(function(someParameters) { var result; @@ -415,10 +411,6 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. return someParameters; }, this)); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_loggedIn'); -// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); -// deferredResult.addCallback(MochiKit.Async.succeed, {result:"done"}); - deferredResult.callback(); return deferredResult; diff --git a/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js index 482c13d..17a1c3d 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js @@ -120,7 +120,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { 'setLabelKeepingBackwardCompatibilityWithBeta': function (aValue) { return Clipperz.Async.callbacks("DirectLogin.setLabelKeepingBackwardCompatibilityWithBeta", [ MochiKit.Base.method(this, 'setIndexDataForKey', 'label', aValue), - MochiKit.Base.method(this, 'setValue', 'label', aValue) + MochiKit.Base.method(this, 'setValue', 'label', aValue), + MochiKit.Base.partial(MochiKit.Async.succeed, this), ], {trace:false}); }, @@ -497,7 +498,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { MochiKit.Base.method(this, 'updateFormValuesAfterChangingBookmarkletConfiguration'), MochiKit.Base.method(this, 'updateBindingsAfterChangingBookmarkletConfiguration'), - MochiKit.Base.noop +// MochiKit.Base.noop + MochiKit.Base.partial(MochiKit.Async.succeed, this), ], {trace:false}); }, @@ -607,6 +609,20 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { ], {trace:false}); }, + 'setBindings': function (someBindings, originalFields) { + var self = this; + + return Clipperz.Async.callbacks("DirectLogin.setBindings", [ + function () { + return MochiKit.Base.map(function (aBindingInfo) { + return self.bindFormFieldWithLabelToRecordFieldWithLabel(aBindingInfo[0], originalFields[aBindingInfo[1]]['label']); + }, MochiKit.Base.zip(MochiKit.Base.keys(someBindings), MochiKit.Base.values(someBindings))); + }, + Clipperz.Async.collectAll, + MochiKit.Base.partial(MochiKit.Async.succeed, this), + ], {trace:false}); + }, + //------------------------------------------------------------------------- /* 'bindingValues': function () { diff --git a/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js b/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js index 8e325d7..2b52000 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js @@ -72,7 +72,7 @@ Clipperz.PM.DataModel.EncryptedRemoteObject = function(args) { // // getRemoteData // unpackRemoteData -// getDecryptData [encryptedDataKeypath, encryptedVersionKeypath] +// getDecryptedData [encryptedDataKeypath, encryptedVersionKeypath] // unpackData // // diff --git a/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js b/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js index c774bff..157807b 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js @@ -31,18 +31,13 @@ if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; Clipperz.PM.DataModel.OneTimePassword = function(args) { args = args || {}; -// this._user = args['user']; + this._username = args['username']; + this._passphraseCallback = args['passphraseCallback']; this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); this._password = args['password']; this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']); - this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date(); - this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null; - - this._status = args['status'] || 'ACTIVE'; // 'REQUESTED', 'USED', 'DISABLED' - this._connectionInfo= null; - - this._key = null; - this._keyChecksum = null; + this._label = args['label'] || ""; + this._usageDate = args['usageDate'] || null; // Usage date is stored when the client is sure that the otp was used return this; } @@ -52,19 +47,35 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { 'toString': function() { return "Clipperz.PM.DataModel.OneTimePassword"; }, -/* - //------------------------------------------------------------------------- - 'user': function() { - return this._user; + 'username': function() { + return this._username; }, - //------------------------------------------------------------------------- + 'passphraseCallback': function () { + return this._passphraseCallback; + }, + + 'setPassphraseCallback': function(aPassphraseCallback) { + this._passphraseCallback = aPassphraseCallback; + }, 'password': function() { return this._password; }, + 'label': function() { + return this._label; + }, + + 'usageDate': function() { + return this._usageDate; + }, + + 'setUsageDate': function(aDate) { + this._usageDate = aDate; + }, + //------------------------------------------------------------------------- 'passwordValue': function() { @@ -73,12 +84,6 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { //------------------------------------------------------------------------- - 'creationDate': function() { - return this._creationDate; - }, - - //------------------------------------------------------------------------- - 'reference': function() { return this._reference; }, @@ -86,51 +91,18 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { //------------------------------------------------------------------------- 'key': function() { - if (this._key == null) { - this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue()); - } - - return this._key; + return Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(this.passwordValue()); }, - + //------------------------------------------------------------------------- 'keyChecksum': function() { - if (this._keyChecksum == null) { - this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue()); - } - - return this._keyChecksum; - }, -*/ - //------------------------------------------------------------------------- - - 'status': function() { - return this._status; - }, - - 'setStatus': function(aValue) { - this._status = aValue; - }, - - //------------------------------------------------------------------------- -/* - 'serializedData': function() { - var result; - - result = { - 'password': this.password(), - 'created': this.creationDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.creationDate()) : null, - 'used': this.usageDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.usageDate()) : null, - 'status': this.status() - }; - - return result; + return Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.username(), this.passwordValue()); }, //------------------------------------------------------------------------- - 'packedPassphrase': function() { + 'packedPassphrase': function(aPassphrase) { var result; var packedPassphrase; var encodedPassphrase; @@ -140,32 +112,29 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { getRandomBytes = MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes'); - encodedPassphrase = new Clipperz.ByteArray(this.user().passphrase()).toBase64String(); -//Clipperz.logDebug("--- encodedPassphrase.length: " + encodedPassphrase.length); + encodedPassphrase = new Clipperz.ByteArray(aPassphrase).toBase64String(); prefixPadding = getRandomBytes(getRandomBytes(1).byteAtIndex(0)).toBase64String(); -//Clipperz.logDebug("--- prefixPadding.length: " + prefixPadding.length); suffixPadding = getRandomBytes((500 - prefixPadding.length - encodedPassphrase.length) * 6 / 8).toBase64String(); -//Clipperz.logDebug("--- suffixPadding.length: " + suffixPadding.length); -//Clipperz.logDebug("--- total.length: " + (prefixPadding.length + encodedPassphrase.length + suffixPadding.length)); - + packedPassphrase = { 'prefix': prefixPadding, 'passphrase': encodedPassphrase, 'suffix': suffixPadding }; -// result = Clipperz.Base.serializeJSON(packedPassphrase); result = packedPassphrase; -//Clipperz.logDebug("===== OTP packedPassprase: [" + result.length + "]" + result); -//Clipperz.logDebug("<<< OneTimePassword.packedPassphrase"); return result; }, //------------------------------------------------------------------------- - 'encryptedPackedPassphrase': function() { - return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(this.passwordValue(), this.packedPassphrase()) + 'encryptedPackedPassphrase': function(aPassphrase) { + return Clipperz.PM.Crypto.deferredEncrypt({ + 'key': this.passwordValue(), + 'value': this.packedPassphrase(aPassphrase), + 'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion + }) }, //------------------------------------------------------------------------- @@ -174,8 +143,6 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { var deferredResult; var result; -//Clipperz.logDebug(">>> OneTimePassword.encryptedData"); -//Clipperz.logDebug("--- OneTimePassword.encryptedData - id: " + this.reference()); result = { 'reference': this.reference(), 'key': this.key(), @@ -183,116 +150,26 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { 'data': "", 'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion } -//Clipperz.logDebug("--- OneTimePassword.encryptedData - 2: " + Clipperz.Base.serializeJSON(result)); - deferredResult = new MochiKit.Async.Deferred(); -//Clipperz.logDebug("--- OneTimePassword.encryptedData - 3"); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 1: " + res); return res;}); -//# deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.passwordValue(), this.packedPassphrase()); + deferredResult = new Clipperz.Async.Deferred("OneTimePassword.encryptedData", {trace: false}); + deferredResult.addCallback(this.passphraseCallback()); deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedPackedPassphrase')); -//Clipperz.logDebug("--- OneTimePassword.encryptedData - 4"); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 2: [" + res.length + "]" + res); return res;}); deferredResult.addCallback(function(aResult, res) { aResult['data'] = res; return aResult; }, result); -//Clipperz.logDebug("--- OneTimePassword.encryptedData - 5"); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 3: " + Clipperz.Base.serializeJSON(res)); return res;}); + deferredResult.callback(); -//Clipperz.logDebug("--- OneTimePassword.encryptedData - 6"); return deferredResult; }, - //------------------------------------------------------------------------- - - 'saveChanges': function() { - var deferredResult; - var result; - -//Clipperz.logDebug(">>> OneTimePassword.saveChanges"); - result = {}; - deferredResult = new MochiKit.Async.Deferred(); - - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_encryptUserData'); - deferredResult.addCallback(MochiKit.Base.method(this.user(), 'encryptedData')); - deferredResult.addCallback(function(aResult, res) { - aResult['user'] = res; - return aResult; - }, result); - - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_encryptOTPData'); - deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData')); - deferredResult.addCallback(function(aResult, res) { - aResult['oneTimePassword'] = res; - return aResult; - }, result); - - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_sendingData'); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 1: " + Clipperz.Base.serializeJSON(res)); return res;}); - deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewOneTimePassword'); - - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_updatingInterface'); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 2: " + res); return res;}); - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'OTPUpdated'); - deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'oneTimePassword_saveChanges_done', null); -//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 2: " + res); return res;}); - deferredResult.callback(); -//Clipperz.logDebug("<<< OneTimePassword.saveChanges"); - - return deferredResult; - }, - - //------------------------------------------------------------------------- - - 'usageDate': function() { - return this._usageDate; - }, - - 'setUsageDate': function(aValue) { - this._usageDate = aValue; - }, - - //------------------------------------------------------------------------- - - 'connectionInfo': function() { - return this._connectionInfo; - }, - - 'setConnectionInfo': function(aValue) { - this._connectionInfo = aValue; - }, - - //------------------------------------------------------------------------- - - 'isExpired': function() { - return (this.usageDate() != null); - }, - - //------------------------------------------------------------------------- - - 'updateStatusWithValues': function(someValues) { - var result; - - result = false; - - if (someValues['status'] != this.status()) { - result = true; - } - - this.setStatus(someValues['status']); - this.setUsageDate(Clipperz.PM.Date.parseDateWithUTCFormat(someValues['requestDate'])); - this.setConnectionInfo(someValues['connection']); - - return result; - }, -*/ //------------------------------------------------------------------------- __syntaxFix__: "syntax fix" }); //############################################################################# -Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword = function(anUsername, aPassword) { +Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword = function(aPassword) { return Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aPassword)).toHexString().substring(2); } @@ -348,3 +225,32 @@ Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword = function(aPass }; //############################################################################# + +Clipperz.PM.DataModel.OneTimePassword.generateRandomBase32OTPValue = function() { + var randomValue; + var result; + + randomValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(160/8); + result = randomValue.toBase32String(); + result = result.replace(/.{4}\B/g, '$&' + ' '); + result = result.replace(/(.{4} ){2}/g, '$&' + '- '); + + return result; + }, + +//############################################################################# + +Clipperz.PM.DataModel.OneTimePassword.createNewOneTimePassword = function(aUsername, aPassphraseCallback) { + var result; + var password; + + password = Clipperz.PM.DataModel.OneTimePassword.generateRandomBase32OTPValue(); + result = new Clipperz.PM.DataModel.OneTimePassword({ + 'username': aUsername, + 'passphraseCallback': aPassphraseCallback, + 'password': password, + 'label': "" + }); + + return result; +} \ No newline at end of file diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js index e97970d..998e00d 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js @@ -175,7 +175,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, { deferredResult.addMethod(this, 'actionType'); deferredResult.addCallback(function (aValue) { fieldValues['actionType'] = aValue; }); deferredResult.addMethod(this, 'isHidden'); - deferredResult.addCallback(function (aValue) { fieldValues['isHidden'] = aValue; }); + deferredResult.addCallback(function (aValue) { fieldValues['hidden'] = aValue; }); deferredResult.addCallback(function () { return fieldValues; }); deferredResult.callback(); diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js index db91fad..7b2bf93 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js @@ -327,16 +327,15 @@ console.log("Record.Version.hasPendingChanges"); deferredResult = new Clipperz.Async.Deferred('Record.Version.export', {trace:false}); deferredResult.addMethod(this,'fields'); deferredResult.addCallback(MochiKit.Base.values); - deferredResult.addCallback(MochiKit.Base.map, function(fieldIn) { + deferredResult.addCallback(MochiKit.Base.map, function (fieldIn) { return fieldIn.content(); }); deferredResult.addCallback(Clipperz.Async.collectAll); deferredResult.addCallback(function(listIn) { -// return listIn.reduce(function(result, field) { return MochiKit.Iter.reduce(function(result, field) { - var ref = field.reference; + var ref = field['reference']; result[ref] = field; - delete result[ref].reference; + delete result[ref]['reference']; return result; }, listIn, {}); }); diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.js index 7feacd4..43e2980 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/Record.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.js @@ -170,7 +170,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt }, //............................................................................ - + 'label': function () { return Clipperz.Async.callbacks("Record.label", [ MochiKit.Base.method(this, 'fullLabel'), @@ -1128,7 +1128,8 @@ console.log("Record.hasPendingChanges RESULT", result); Clipperz.Async.collectAll, MochiKit.Base.method(aRecord, 'directLogins'), MochiKit.Base.values, -//function (aValue) { console.log("-> DirectLogin Values", aValue); return aValue; }, +//function (aValue) { console.log("-> SETUP WITH RECORD: DirectLogin Values", aValue); return aValue; }, + // TODO: possibly broken implementation of direct login cloning MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addDirectLogin')), //function (aValue) { console.log("-> DirectLogin Values", aValue); return aValue; }, // Clipperz.Async.collectAll, @@ -1136,16 +1137,25 @@ console.log("Record.hasPendingChanges RESULT", result); MochiKit.Base.bind(function () { return this; }, this) ], {trace:false}); }, + + 'directLoginWithJsonData': function (someData) { + var result; - 'setUpWithJSON': function(data) { + result = new Clipperz.PM.DataModel.DirectLogin({'record': this}); + + return result; + }, + + 'setUpWithJSON': function(data, labelPostfix) { return Clipperz.Async.callbacks("Record.setUpWithJSON", [ // TODO: proper tag handling - MochiKit.Base.method(this,'setLabel',data.label), - MochiKit.Base.method(this,'setNotes',data.data.notes), + MochiKit.Base.method(this,'setLabel', data['label'] + ((labelPostfix) ? labelPostfix : '')), + MochiKit.Base.method(this,'setNotes', data['data']['notes']), // TODO: check whether fields' order is kept or not - function(){ return MochiKit.Base.values(data.currentVersion.fields); }, - MochiKit.Base.partial(MochiKit.Base.map,MochiKit.Base.method(this, 'addField')), - Clipperz.Async.collectAll + MochiKit.Base.partial(MochiKit.Base.values, data['currentVersion']['fields']), + MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addField')), + Clipperz.Async.collectAll, + MochiKit.Base.partial(MochiKit.Async.succeed, this), ], {trace:false}); }, @@ -1174,12 +1184,12 @@ console.log("Record.hasPendingChanges RESULT", result); var label; var data; var currentVersion; - var directLogins; +// var directLogins; var currentVersionObject; data = {}; currentVersion = {}; - directLogins = {}; +// directLogins = {}; deferredResult = new Clipperz.Async.Deferred('Record.export', {trace:false}); deferredResult.addMethod(this, 'getCurrentRecordVersion'); deferredResult.addCallback(function(recordVersionIn) { currentVersionObject = recordVersionIn; }) @@ -1211,7 +1221,6 @@ console.log("Record.hasPendingChanges RESULT", result); __syntaxFix__: "syntax fix" }); - Clipperz.PM.DataModel.Record.defaultCardInfo = { '_rowObject': MochiKit.Async.succeed, '_reference': MochiKit.Base.methodcaller('reference'), @@ -1277,3 +1286,14 @@ Clipperz.PM.DataModel.Record.extractTagsFromFullLabel = function (aLabel) { return result; }; + +Clipperz.PM.DataModel.Record.labelContainsTag = function (aLabel, aTag) { + return MochiKit.Iter.some( + MochiKit.Base.keys(Clipperz.PM.DataModel.Record.extractTagsFromFullLabel(aLabel)), + MochiKit.Base.partial(MochiKit.Base.operator.eq, aTag) + ); +} + +Clipperz.PM.DataModel.Record.labelContainsArchiveTag = function (aLabel) { + return Clipperz.PM.DataModel.Record.labelContainsTag(aLabel, Clipperz.PM.DataModel.Record.archivedTag); +} \ No newline at end of file diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js index 189a7f8..cbd2e6c 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js @@ -31,7 +31,13 @@ if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.Data Clipperz.PM.DataModel.User.Header.OneTimePasswords = function(args) { Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.constructor.apply(this, arguments); + // TODO: there are still method calls around passing these values: should be cleared... + this._connection = args['connection']; + this._username = args['username']; + this._passphraseCallback = args['retrieveKeyFunction']; + this._oneTimePasswords = null; + this._oneTimePasswordsDetails = null; return this; } @@ -45,55 +51,45 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipper }, //------------------------------------------------------------------------- -/* - 'packData': function (someData) { // ++ - var result; - result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packData.apply(this, arguments); - - return result; + 'connection': function() { + return this._connection; }, -*/ - //------------------------------------------------------------------------- -/* - 'packRemoteData': function (someData) { - var result; - result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packRemoteData.apply(this, arguments); - - return result; + 'username': function() { + return this._username; }, -*/ - //------------------------------------------------------------------------- -/* - 'prepareRemoteDataWithKey': function (aKey) { - var result; - result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.prepareRemoteDataWithKey.apply(this, arguments); - - return result; + 'passphraseCallback': function() { + return this._passphraseCallback; }, -*/ + //========================================================================= 'oneTimePasswords': function () { var deferredResult; deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.oneTimePasswords", {trace:false}); + + // TODO: change with transient state + // Also, OTPs created here don't store username, making it impossible to generate the key checksum (shouldn't be used anywhere, but probably the design should be changed) if (this._oneTimePasswords == null) { - deferredResult.addMethod(this, 'values') + deferredResult.addMethod(this, 'values'); deferredResult.addCallback(MochiKit.Base.bind(function (someData) { var otpKey; this._oneTimePasswords = {}; - + for (otpKey in someData) { var otp; var otpParameters; otpParameters = Clipperz.Base.deepClone(someData[otpKey]); otpParameters['reference'] = otpKey; - + otpParameters['username'] = this.username(); + otpParameters['passphraseCallback'] = this.passphraseCallback(); + otpParameters['usageDate'] = someData[otpKey]['usageDate'] || null; + otp = new Clipperz.PM.DataModel.OneTimePassword(otpParameters); this._oneTimePasswords[otpKey] = otp; } @@ -109,6 +105,182 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipper return deferredResult; }, + 'oneTimePasswordsDetails': function() { + if (this._oneTimePasswordsDetails) { + return MochiKit.Async.succeed(this._oneTimePasswordsDetails); + } else { + return Clipperz.Async.callbacks("User.oneTimePasswordsDetails", [ + MochiKit.Base.method(this.connection(), 'message', 'getOneTimePasswordsDetails'), + MochiKit.Base.bind(function(someData) { + this._oneTimePasswordsDetails = someData; + + return someData; + }, this) + ], {trace:false}); + } + }, + + //========================================================================= + + 'getReferenceFromKey': function(aKey) { + return Clipperz.Async.callbacks("User.Header.OneTimePasswords.getReferenceFromKey", [ + MochiKit.Base.method(this, 'values'), + function(someValues) { + var result; + var normalizedOTP; + var i; + + result = null; + for (i in someValues) { + normalizedOTP = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(someValues[i]['password']); + + if (Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(normalizedOTP) == aKey) { + result = i; + } + } + + return result; + } + ], {trace:false}); + }, + + //========================================================================= + + 'createNewOTP': function (aUsername, aPassphraseCallback) { + var newOneTimePassword; + + newOneTimePassword = Clipperz.PM.DataModel.OneTimePassword.createNewOneTimePassword(aUsername, aPassphraseCallback); + + // TODO: this is deferred --> change everything to deferred + // TestData include 'created' and 'status' + this.setValue(newOneTimePassword.reference(), { + // 'created': newOneTimePassword.creationDate().toString(), // won't work: creation date is no more stored in OTP + 'password': newOneTimePassword.password(), + 'label': newOneTimePassword.label() + // 'status': newOneTimePassword.status() + }); + + this._oneTimePasswords = null; + this._oneTimePasswordsDetails = null; + + return newOneTimePassword; + }, + + //......................................................................... + + 'deleteOTPs': function (aList) { + this._oneTimePasswords = null; + this._oneTimePasswordsDetails = null; + + return Clipperz.Async.callbacks("User.Header.OneTimePasswords.deleteOTPs", [ + MochiKit.Base.method(this, 'values'), + MochiKit.Base.keys, + MochiKit.Base.bind(function(someKeys) { + var result; + + result = []; + MochiKit.Base.map(MochiKit.Base.bind(function(aList, aKey) { + if (aList.indexOf(aKey) >= 0) { + this.removeValue(aKey); + } else { + result.push(aKey); + } + }, this, aList), someKeys); + + return result; // Return a list of references of the remaining OTPs, needed for the 'updateOneTimePasswords' message + // Maybe this logic should be moved to another method + }, this), + ], {trace:false}); + }, + + //......................................................................... + + 'changeOTPLabel': function (aReference, aLabel) { + this._oneTimePasswords = null; + + return Clipperz.Async.callbacks("User.Header.OneTimePasswords.changeOTPLabel", [ + MochiKit.Base.method(this, 'getValue', aReference), + function(aValue) { + aValue['label'] = aLabel; + return aValue; + }, + MochiKit.Base.method(this, 'setValue', aReference) + ], {trace:false}); + }, + + //......................................................................... + + 'markOTPAsUsed': function(aKey) { + var reference; + + this._oneTimePasswords = null; + + return Clipperz.Async.callbacks("User.Header.OneTimePasswords.markOTPAsUsed", [ + MochiKit.Base.method(this, 'getReferenceFromKey', aKey), + function(aReference) { + reference = aReference; + return aReference; + }, + MochiKit.Base.method(this, 'getValue'), + MochiKit.Base.bind(function(aValue) { + if (aValue) { + aValue['usageDate'] = new Date().toString(); + this.setValue(reference, aValue); + } + }, this) + ], {trace:false}); + }, + + //========================================================================= + + 'getEncryptedOTPData': function(aPassphraseCallback) { + var deferredResult; + + deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.getEncryptedOTPData", {trace:false}); + + deferredResult.collectResults({ + 'oneTimePasswords': MochiKit.Base.method(this, 'oneTimePasswords'), + 'oneTimePasswordsDetails': MochiKit.Base.method(this, 'oneTimePasswordsDetails') + }); + deferredResult.addCallback(function (someData) { + var result; + var otpFilteredList; + var i; + + var otpList = MochiKit.Base.values(someData['oneTimePasswords']); + + otpFilteredList = MochiKit.Base.filter(function (aOTP) { + return (someData['oneTimePasswordsDetails'][aOTP.reference()] + && someData['oneTimePasswordsDetails'][aOTP.reference()]['status'] == 'ACTIVE' + && ! someData['oneTimePasswords'][aOTP.reference()].usageDate() + ); + }, otpList); + + result = MochiKit.Base.map(function (aOTP) { + aOTP.setPassphraseCallback(aPassphraseCallback); + return aOTP.encryptedData(); + }, otpFilteredList); + + return result; + }); + deferredResult.addCallback(Clipperz.Async.collectAll); + deferredResult.addCallback(function (someData) { + var result; + var i; + + result = {}; + for (i in someData) { + result[someData[i].reference] = someData[i]; + } + + return result; + }); + + deferredResult.callback(); + + return deferredResult; + }, + //========================================================================= __syntaxFix__: "syntax fix" }); diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.js b/frontend/delta/js/Clipperz/PM/DataModel/User.js index 7b10a2e..3277de2 100644 --- a/frontend/delta/js/Clipperz/PM/DataModel/User.js +++ b/frontend/delta/js/Clipperz/PM/DataModel/User.js @@ -59,6 +59,8 @@ Clipperz.PM.DataModel.User = function (args) { '__syntaxFix__': 'syntax fix' }; + this._usedOTP = null; + return this; } @@ -80,6 +82,40 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { //------------------------------------------------------------------------- + 'setUsedOTP': function(aOTP) { + this._usedOTP = aOTP; + + return aOTP; + }, + + 'resetUsedOTP': function(aOTP) { + this._usedOTP = null; + }, + + 'markUsedOTP': function(aOTP) { + var result; + var oneTimePasswordKey; + + if (this._usedOTP) { + oneTimePasswordKey = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword( + Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(this._usedOTP) + ); + + result = Clipperz.Async.callbacks("User.markUsedOTP", [ // NOTE: fired also when passphrase looks exactly like OTP + MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), + MochiKit.Base.methodcaller('markOTPAsUsed', oneTimePasswordKey), + MochiKit.Base.method(this,'saveChanges'), // Too 'heavy'? + MochiKit.Base.method(this, 'resetUsedOTP') + ], {'trace': false}); + } else { + result = MochiKit.Async.succeed(); + } + + return result; + }, + + //------------------------------------------------------------------------- + // this.setSubscription(new Clipperz.PM.DataModel.User.Subscription(someServerData['subscription'])); 'accountInfo': function () { return this._accountInfo; @@ -138,21 +174,17 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { //------------------------------------------------------------------------- 'getPassphrase': function() { - var deferredResult; - - deferredResult = new Clipperz.Async.Deferred("User.getPassphrase", {trace:false}); - deferredResult.acquireLock(this.deferredLockForSection('passphrase')); - deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', this.getPassphraseFunction()); - deferredResult.releaseLock(this.deferredLockForSection('passphrase')); - deferredResult.callback(); - - return deferredResult; + return this._getPassphraseFunction(); }, 'getPassphraseFunction': function () { return this._getPassphraseFunction; }, + 'setPassphraseFunction': function(aFunction) { + this._getPassphraseFunction = aFunction; + }, + //------------------------------------------------------------------------- 'getCredentials': function () { @@ -164,26 +196,44 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { //------------------------------------------------------------------------- - 'changePassphrase': function (aNewValue) { - return this.updateCredentials(this.username(), aNewValue); + 'changePassphrase': function (aNewValueCallback) { + return this.updateCredentials(this.username(), aNewValueCallback); }, //......................................................................... - 'updateCredentials': function (aUsername, aPassphrase) { + 'updateCredentials': function (aUsername, aPassphraseCallback) { var deferredResult; deferredResult = new Clipperz.Async.Deferred("User.updateCredentials", {trace:false}); -// deferredResult.addMethod(this, 'getPassphrase'); -// deferredResult.setValue('currentPassphrase'); deferredResult.addMethod(this.connection(), 'ping'); - deferredResult.addMethod(this, 'setUsername', aUsername) - deferredResult.acquireLock(this.deferredLockForSection('passphrase')); - deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', aPassphrase); - deferredResult.releaseLock(this.deferredLockForSection('passphrase')); -// deferredResult.getValue('currentPassphrase'); - deferredResult.addMethod(this, 'prepareRemoteDataWithKey', aPassphrase); - deferredResult.addMethod(this.connection(), 'updateCredentials', aUsername, aPassphrase); + deferredResult.collectResults({ + 'newUsername': MochiKit.Base.partial(MochiKit.Async.succeed, aUsername), + 'newPassphrase': aPassphraseCallback, + 'user': MochiKit.Base.method(this, 'prepareRemoteDataWithKeyFunction', aPassphraseCallback), + 'oneTimePasswords': [ + MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), + MochiKit.Base.methodcaller('getEncryptedOTPData', aPassphraseCallback), + function (otps) { + var result; + var otpRefs; + var i, c; + + result = {}; + otpRefs = MochiKit.Base.keys(otps); + c = otpRefs.length; + for (i=0; i= 0); - } - }, - - //-------------------------------------------------------------------------- - - goToStep: function(aStep) { - this.setState({ - 'currentStep': aStep, - 'nextStepCallback': null, - 'error': null - }); - }, - - handleNextStepOnClick: function() { - if (this.state.nextStepCallback) { - var newImportContext = this.state.nextStepCallback(); - - if (newImportContext) { - MochiKit.Base.update(this.state.importContext, newImportContext); - - if (this.state.currentStep == 'Input' && this.state.importContext.format == 'json') { - this.goToStep('Preview'); - } else if (this.state.currentStep == 'Preview') { - this.state.importContext.resetContext(); - this.goToStep('Input'); - } else { - this.goToStep(this.getStepAfter()); - } - } else { - if (this.state.currentStep == "Input") { - this.setState({'error': "unrecognized input format."}); - } else { - this.setState({'error': "unknown error."}); - } - } - } - }, - - handleBackOnClick: function() { - if (this.state.importContext.format == 'json' && this.state.currentStep == 'Preview') { - delete this.state.importContext.format; - this.goToStep('Input'); - } else if (this.state.currentStep != this._steps[0]) { - this.goToStep(this.getStepBefore()); - } - }, + //========================================================================= - setNextStepCallback: function(aFunction) { - this.setState({'nextStepCallback': aFunction}); - }, - - getStepNavbarClass: function(aStep) { - var result; - - if (aStep == this.state.currentStep) { - result = 'active'; - } else if (this.state.importContext.format == 'json' && (aStep>=1&&aStep<=5) ) { - result = 'disabled'; - } else { - result = 'inactive'; + componentWithName: function (aName) { + var result; + var path; + var i, c; + + path = aName.split('.'); + + result = Clipperz.PM.UI.Components.ExtraFeatures.DataImport; + c = path.length; + for (i=0; i=0) ? true : false; + return (MochiKit.Base.keys(this.state.recordsToImport).indexOf(record['reference']) != -1) ? true : false; }, getTags: function (aTitle) { @@ -85,10 +72,10 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl var tagList; var tagObject = Clipperz.PM.DataModel.Record.extractTagsFromFullLabel(aTitle); - + tagList = MochiKit.Base.keys(tagObject); - tagList = MochiKit.Base.filter(function(aTag) { return tagObject[aTag] }, tagList); - + tagList = MochiKit.Base.filter(function(aTag) { return !Clipperz.PM.DataModel.Record.isSpecialTag(aTag); }, tagList); + if (tagList.length > 0) { result = React.DOM.ul({'className': 'tagList'}, MochiKit.Base.map(function(aTag){ @@ -102,50 +89,44 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl return result; }, - renderCardFields: function(someFields) { - return MochiKit.Base.map(function(key) { + renderCardFields: function (someFields) { + return MochiKit.Base.map(function (key) { var field = someFields[key]; - return [ - React.DOM.dt({},field.label), - React.DOM.dd({},field.value), + React.DOM.dt({}, field['label']), + React.DOM.dd({'className': field['actionType'] + (field['hidden'] ? ' password' : '')}, field['value']), ]; - } ,MochiKit.Base.keys(someFields)); + }, MochiKit.Base.keys(someFields)); }, - - renderCard: function(aCard) { - var notesParagraph = (aCard.data.notes) ? React.DOM.p({'className': 'notes'}, aCard.data.notes) : null; - return React.DOM.li({'className': 'card'}, [ + + renderCard: function (aCard) { + var classes; + + classes = { + 'card': true, + 'archived': Clipperz.PM.DataModel.Record.labelContainsArchiveTag(aCard['label']) + } + + return React.DOM.li({'className':Clipperz.PM.UI.Components.classNames(classes)}, [ React.DOM.input({ 'type': 'checkbox', 'checked': this.isRecordToImport(aCard), - 'onChange': MochiKit.Base.partial(this.toggleRecordToImport,aCard) + 'onChange': MochiKit.Base.partial(this.toggleRecordToImport, aCard) }), - React.DOM.h3({}, Clipperz.PM.DataModel.Record.extractLabelFromFullLabel(aCard.label)), - this.getTags(aCard.label), - React.DOM.dl({'className': 'fields'}, this.renderCardFields(aCard.currentVersion.fields)), - notesParagraph + React.DOM.div({'className': 'cardContent'}, [ + React.DOM.h3({}, Clipperz.PM.DataModel.Record.extractLabelFromFullLabel(aCard['label'])), + this.getTags(aCard['label']), + React.DOM.dl({'className': 'fields'}, this.renderCardFields(aCard['currentVersion']['fields'])), + (aCard['data']['notes']) ? React.DOM.p({'className': 'notes'}, aCard['data']['notes']) : null + ]) ]); }, render: function() { - var result; - - if (typeof(this.state.jsonToImport)=='undefined' || !this.state.jsonToImport) { - result = "Error"; - } else { - var renderedPreview = React.DOM.ul({}, - MochiKit.Base.map(this.renderCard, this.state.jsonToImport) - ); - - result = - React.DOM.div({'className': 'jsonPreview'}, React.DOM.ul({}, - MochiKit.Base.map(this.renderCard, this.state.jsonToImport) - ) ); - } - - return React.DOM.div({},result); - } + return React.DOM.div({'className': 'preview'}, + React.DOM.ul({}, MochiKit.Base.map(MochiKit.Base.method(this, 'renderCard'), this.props.importContext.state('jsonData'))) + ); + }, }); diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js index 8339750..2976c1b 100644 --- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js +++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js @@ -75,17 +75,19 @@ Clipperz.PM.UI.Components.ExtraFeatures.DeleteAccountClass = React.createClass({ render: function () { return React.DOM.div({className:'extraFeature deleteAccount'}, [ - React.DOM.h1({}, "Delete Account"), + React.DOM.div({'className':'header'}, [ + React.DOM.h1({}, "Delete Account"), + ]), React.DOM.div({'className': 'content'}, [ React.DOM.form({'key':'form', 'className':'deleteAccountForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleDeleteAccount}, [ React.DOM.div({'key':'fields'},[ - React.DOM.label({'key':'username-label', 'htmlFor' :'name'}, "username"), - React.DOM.input({'key':'username', 'className':this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}), - React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor' :'passphrase'}, "passphrase"), - React.DOM.input({'key':'passphrase', 'className':this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}), + React.DOM.label({'key':'username-label', 'htmlFor':'name'}, "username"), + React.DOM.input({'key':'username', 'className': this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}), + React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor':'passphrase'}, "passphrase"), + React.DOM.input({'key':'passphrase', 'className': this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}), React.DOM.p({}, [ - React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}), - React.DOM.span({}, "I understand that all my data will be deleted and that this action is irreversible.") + React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'id':'deleteAccountConfirmCheckbox', 'name':'confirm', 'ref':'confirm'}), + React.DOM.label({'htmlFor':'deleteAccountConfirmCheckbox'}, "I understand that all my data will be deleted and that this action is not reversible.") ]), ]), React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableDeleteAccountButton(), 'className':'button'}, "Delete my account") diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js index 9c8e938..9ac9aa5 100644 --- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js +++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js @@ -35,7 +35,9 @@ Clipperz.PM.UI.Components.ExtraFeatures.DevicePINClass = React.createClass({ render: function () { return React.DOM.div({className:'extraFeature devicePIN'}, [ - React.DOM.h1({}, "Device PIN"), + React.DOM.div({'className':'header'}, [ + React.DOM.h1({}, "Device PIN"), + ]), React.DOM.div({'className': 'content'}, [ React.DOM.h3({}, this.props['PIN']) ]) diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js new file mode 100644 index 0000000..a21ab9b --- /dev/null +++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js @@ -0,0 +1,229 @@ +/* + +Copyright 2008-2015 Clipperz Srl + +This file is part of Clipperz, the online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz. If not, see http://www.gnu.org/licenses/. + +*/ + +"use strict"; +Clipperz.Base.module('Clipperz.PM.UI.Components.ExtraFeatures'); + +Clipperz.PM.UI.Components.ExtraFeatures.OTPClass = React.createClass({ + + // TODO: add print button!!!! + + getInitialState: function() { + return { +// 'selectedOTPs': [], + 'labelBeingEdited': null, + 'otpLabel': '', + }; + }, + + propTypes: { + }, + + //========================================================================= + + handleNew: function() { + MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'createNewOTP'); + }, + + handleDelete: function (anOtpReference) { + MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteOTPs', [anOtpReference]); + }, + + //------------------------------------------------------------------------- + + enableOtpLabelEditing: function(anOTP) { + var newState = this.state; + + newState['labelBeingEdited'] = anOTP.reference(); + newState['otpLabel'] = anOTP.label(); + + this.setState(newState); + }, + + updateOtpLabel: function (anOTP, anEvent) { + var newState = this.state; + var newLabel = anEvent.target.value + + newState['otpLabel'] = newLabel; + + this.setState(newState); + }, + + handleKeyPressed: function (anOTP, anEvent) { + switch (anEvent.keyCode) { + case 9: // tab + this.handleLabelSave(anOTP); + // TODO: edit label of next OTP + break; + case 13: // enter + this.handleLabelSave(anOTP); + case 27: // escape + this.handleLabelCancel(anOTP); + break; + } + }, + + handleLabelSave: function (anOTP) { + MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'changeOTPLabel', anOTP.reference(), this.state['otpLabel']); + this.handleLabelCancel() + }, + + handleLabelCancel: function() { + var newState; + + newState = this.state; + newState['labelBeingEdited'] = null; + + this.setState(newState); + }, + + //========================================================================= + + handlePrint: function () { + this.printOneTimePasswords(); + }, + + printOneTimePasswords: function () { + var newWindow; + + var filteredOtpList = MochiKit.Base.filter(MochiKit.Base.bind(function (anOTP) { + return (this.props.userInfo.otpsDetails[anOTP.reference()]['status'] == 'ACTIVE'); + }, this), this.props.userInfo.otpList); + + newWindow = window.open("", ""); + newWindow.document.write( + '' + + '' + + '' + + '' + + 'Active One Time Passwords - Clipperz' + + '' + + '' + + '' + + '' + + '' + + '' + ); + + newWindow.document.close(); + newWindow.focus(); + newWindow.print(); + newWindow.close(); + }, + + //========================================================================= + + renderOtpRows: function() { + var result; + + if (this.props.userInfo.otpList) { + result = MochiKit.Base.map(MochiKit.Base.bind(function (anOTP) { + var reference = anOTP.reference(); + var otpDetailInfo = this.props.userInfo.otpsDetails[reference]; + var labelComponent; + var otpStatusInfo; + var otpClasses; + var optLabel; + + otpClasses = { + 'otpDetail': true, + }; + otpClasses[otpDetailInfo['status']] = true; + + if (otpDetailInfo['status'] != 'ACTIVE') { + otpStatusInfo = React.DOM.div({'className':'otpStatusInfo'}, [ + React.DOM.span({'className':'otpStatus'}, otpDetailInfo['status']), + React.DOM.span({'className':'requestDate'}, otpDetailInfo['requestDate']), + React.DOM.span({'className':'connectionIp'}, otpDetailInfo['connection']['ip']), + React.DOM.span({'className':'connectionBrowser'}, otpDetailInfo['connection']['browser']), + ]) + } else { + otpStatusInfo = null; + } + + if (reference == this.state.labelBeingEdited) { + labelComponent = React.DOM.input({ + 'autoFocus':true, + 'value':this.state.otpLabel, + 'onChange':MochiKit.Base.partial(this.updateOtpLabel, anOTP), + 'onKeyDown':MochiKit.Base.partial(this.handleKeyPressed, anOTP), + }); + } else { + labelComponent = React.DOM.span({'onClick':MochiKit.Base.partial(this.enableOtpLabelEditing, anOTP)}, (anOTP.label()) ? anOTP.label() : "---") + } + + return React.DOM.li({ + 'key':'otp-' + reference, + 'className':Clipperz.PM.UI.Components.classNames(otpClasses) + }, [ + React.DOM.div({'className':'otpAction'}, [ + React.DOM.a({'onClick':MochiKit.Base.partial(this.handleDelete, reference)}, 'remove OTP'), + ]), + React.DOM.div({'className':'otpInfo'}, [ + React.DOM.div({'className':'otpPassword'}, anOTP.password()), + React.DOM.div({'className':'otpLabel'}, labelComponent), + otpStatusInfo, + ]), + ]); + }, this), this.props.userInfo.otpList); + } else { + result = React.DOM.li({}, React.DOM.div({}, "...")); + } + + return result; + }, + + render: function () { + return React.DOM.div({'className':'extraFeature OTP'}, [ + React.DOM.div({'className':'header'}, [ + React.DOM.h1({}, "One Time Passwords"), + React.DOM.div({'className':'description'}, [ + React.DOM.p({}, "A one-time passphrase works like your regular passphrase, but can be used only once. This makes it expecially useful for using it in places where keyloggers may be installed."), + ]), + React.DOM.a({'className':'button', 'onClick':this.handlePrint}, "Print") + ]), + React.DOM.div({'className':'content'}, [ + React.DOM.ul({'className':'otpList'}, this.renderOtpRows()), + React.DOM.div({'className':'actions'}, [ + React.DOM.a({'onClick': this.handleNew}, "create new OTP"), + ]), + ]) + ]); + }, + + //========================================================================= +}); + +Clipperz.PM.UI.Components.ExtraFeatures.OTP = React.createFactory(Clipperz.PM.UI.Components.ExtraFeatures.OTPClass); diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js index 49f7aeb..53fa2db 100644 --- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js +++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js @@ -100,7 +100,9 @@ Clipperz.PM.UI.Components.ExtraFeatures.PassphraseClass = React.createClass({ render: function () { return React.DOM.div({className:'extraFeature passphrase'}, [ - React.DOM.h1({}, "Change Passphrase"), + React.DOM.div({'className':'header'}, [ + React.DOM.h1({}, "Change Passphrase"), + ]), React.DOM.div({'className': 'content'}, [ React.DOM.form({'key':'form', 'className':'changePassphraseForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleChangePassphrase}, [ React.DOM.div({'key':'fields'},[ @@ -117,8 +119,8 @@ Clipperz.PM.UI.Components.ExtraFeatures.PassphraseClass = React.createClass({ React.DOM.input({'key':'confirm-new-passphrase', 'className':this.state['confirm-new-passphrase'], 'type':'password', 'name':'confirm-new-passphrase', 'ref':'confirm-new-passphrase', 'placeholder':"confirm new passphrase"}), React.DOM.p({}, [ - React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}), - React.DOM.span({}, "I understand that Clipperz will not be able to recover a lost passphrase.") + React.DOM.input({'key':'confirm', 'id':'changePassphraseConfirmCheckbox', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}), + React.DOM.label({'htmlFor':'changePassphraseConfirmCheckbox'}, "I understand that Clipperz will not be able to help me recovering a lost passphrase.") ]), ]), React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableChangePassphraseButton(), 'className':'button'}, "Change passphrase"), diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js b/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js index 23df0bc..6e929d0 100644 --- a/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js +++ b/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js @@ -34,16 +34,16 @@ Clipperz.PM.UI.Components.Pages.MainPageClass = React.createClass({ }, propTypes: { - 'tags': React.PropTypes.object, - 'allTags': React.PropTypes.array, - 'messageBox': React.PropTypes.object.isRequired, - 'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired, - 'features': React.PropTypes.array.isRequired, - 'userInfo': React.PropTypes.object.isRequired, - 'accountInfo': React.PropTypes.object.isRequired, -// 'mediaQueryStyle': React.PropTypes.oneOf(['extra-short', 'narrow', 'wide', 'extra-wide']).isRequired, + 'tags': React.PropTypes.object, + 'allTags': React.PropTypes.array, + 'messageBox': React.PropTypes.object.isRequired, + 'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired, + 'features': React.PropTypes.array.isRequired, + 'userInfo': React.PropTypes.object.isRequired, + 'accountInfo': React.PropTypes.object.isRequired, 'style': React.PropTypes.oneOf(Clipperz_PM_UI_availableStyles).isRequired, - // 'cards': React.PropTypes.deferred.isRequired +// 'mediaQueryStyle': React.PropTypes.oneOf(['extra-short', 'narrow', 'wide', 'extra-wide']).isRequired, +// 'cards': React.PropTypes.deferred.isRequired }, getInitialState: function () { @@ -60,8 +60,7 @@ Clipperz.PM.UI.Components.Pages.MainPageClass = React.createClass({ }; classes[this.props['style']] = true; -//console.log("MAIN PAGE", this.props['showGlobalMask']); - return React.DOM.div({'key':'mainPage', 'className':Clipperz.PM.UI.Components.classNames(classes)/*Clipperz.PM.UI.Components.classNames(classes)*/}, [ + return React.DOM.div({'key':'mainPage', 'className':Clipperz.PM.UI.Components.classNames(classes)}, [ this.props['style'] != 'extra-wide' ? Clipperz.PM.UI.Components.Panels.SelectionPanel(this.props) : null, Clipperz.PM.UI.Components.Panels.MainPanel(this.props), Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanel(this.props), diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js b/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js index 50a2854..840a11a 100644 --- a/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js +++ b/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js @@ -26,6 +26,10 @@ Clipperz.Base.module('Clipperz.PM.UI.Components.Panels'); Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ + componentDidMount: function () { + MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'closeSettingsPanel', MochiKit.Base.method(this, 'hideExtraFeatureContent')); + }, + settingsToggleHandler: function (anEvent) { //console.log("settingsToggleHandler"); this.hideExtraFeatureContent(); @@ -40,6 +44,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ propTypes: { 'accountInfo': React.PropTypes.object.isRequired, + 'userInfo': React.PropTypes.object.isRequired }, getInitialState: function() { @@ -81,6 +86,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ }, extraFeaturesProps: function () { +// console.log("ExtraFeaturesPanel, extraFeaturesProps:",this.props); return this.props; }, @@ -95,10 +101,16 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ }, showExtraFeatureContent: function (aComponent, aComponentName) { +// console.log("ExtraFeaturesPanel, showExtraFeatureContent") + if (aComponentName == 'OTP') { + MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'updateOTPListAndDetails'); + } + this.setState({ 'isFullyOpen':true, 'extraFeatureComponentName': aComponentName, - 'extraFeatureContent': aComponent(this.extraFeaturesProps()) + // 'extraFeatureContent': aComponent(this.extraFeaturesProps()), + 'extraFeatureContentComponent': aComponent // Trying to instantiate the component at every render }); }, @@ -124,16 +136,17 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ React.DOM.ul({'key':'accountUL'}, [ React.DOM.li({'key':'account_1', 'onClick':this.toggleExtraFeatureComponent('Passphrase'), 'className':(this.state['extraFeatureComponentName'] == 'Passphrase') ? 'selected' : ''}, [ React.DOM.h2({'key':'account_1_h2'}, "Passphrase"), - React.DOM.div({'key':'account_1_div'}, [ - React.DOM.p({'key':'account_1_p'}, "Change your account passphrase.") - ]) +// React.DOM.div({'key':'account_1_div'}, [ +// React.DOM.p({'key':'account_1_p'}, "Change your account passphrase.") +// ]) ]), - React.DOM.li({'key':'account_2'}, [ + React.DOM.li({'key':'account_2', 'onClick':this.toggleExtraFeatureComponent('OTP')}, [ React.DOM.h2({}, "One Time Passwords"), - React.DOM.div({}, [ - React.DOM.p({}, "") - ]) +// React.DOM.div({}, [ +// React.DOM.p({}, "Manage your OTPs.") +// ]) ]), +/* React.DOM.li({'key':'account_3', 'onClick':this.toggleExtraFeatureComponent('DevicePIN')}, [ React.DOM.h2({}, "Device PIN"), React.DOM.div({}, [ @@ -146,14 +159,16 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ React.DOM.p({}, "") ]) ]), +*/ React.DOM.li({'key':'account_5', 'onClick':this.toggleExtraFeatureComponent('DeleteAccount'), 'className':(this.state['extraFeatureComponentName'] == 'DeleteAccount') ? 'selected' : ''}, [ React.DOM.h2({}, "Delete account"), - React.DOM.div({}, [ - React.DOM.p({}, "Delete your account for good.") - ]) +// React.DOM.div({}, [ +// React.DOM.p({}, "Delete your account for good.") +// ]) ]) ]) ]), +/* React.DOM.li({'key':'subscription', 'className':this.state['index']['subscription'] ? 'open' : 'closed'}, [ React.DOM.h1({'onClick':this.toggleIndexState('subscription')}, "Subscription"), React.DOM.ul({'key':'subscription'}, [ @@ -183,6 +198,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ ]) ]) ]), +*/ React.DOM.li({'key':'data', 'className':this.state['index']['data'] ? 'open' : 'closed'}, [ React.DOM.h1({'onClick':this.toggleIndexState('data')}, "Data"), React.DOM.ul({'key':'data'}, [ @@ -195,22 +211,24 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ // ]), React.DOM.li({'key':'data_2', 'onClick':this.toggleExtraFeatureComponent('DataImport'), 'className':(this.state['extraFeatureComponentName'] == 'DataImport') ? 'selected' : ''}, [ React.DOM.h2({}, "Import"), - React.DOM.div({}, [ - React.DOM.p({}, "CSV, JSON, …") - ]) +// React.DOM.div({}, [ +// React.DOM.p({}, "CSV, JSON, …") +// ]) ]), React.DOM.li({'key':'data_3', 'onClick':this.toggleExtraFeatureComponent('DataExport'), 'className':(this.state['extraFeatureComponentName'] == 'DataExport') ? 'selected' : ''}, [ React.DOM.h2({}, "Export"), - React.DOM.div({}, [ - React.DOM.p({}, "Offline copy, printable version, JSON, …") - ]) +// React.DOM.div({}, [ +// React.DOM.p({}, "Offline copy, printable version, JSON, …") +// ]) ]), +/* React.DOM.li({'key':'data_4'}, [ React.DOM.h2({}, "Sharing"), React.DOM.div({}, [ React.DOM.p({}, "Securely share cards with other users") ]) ]) +*/ ]) ]) ]) @@ -227,7 +245,8 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ React.DOM.header({}, [ React.DOM.div({'className':'button', 'onClick':this.hideExtraFeatureContent}, "close") ]), - this.state['extraFeatureContent'] + // this.state['extraFeatureContent'] + this.state['extraFeatureContentComponent'] ? this.state['extraFeatureContentComponent'](this.props) : null ]); }, @@ -242,7 +261,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({ 'open': isOpen, 'fullOpen': isFullyOpen } - + return React.DOM.div({'key':'extraFeaturesPanel', 'id':'extraFeaturesPanel', 'className':Clipperz.PM.UI.Components.classNames(classes)}, [ this.renderIndex(), this.renderContent(), diff --git a/frontend/delta/js/Clipperz/PM/UI/ExportController.js b/frontend/delta/js/Clipperz/PM/UI/ExportController.js index a4bd81c..00eb30a 100644 --- a/frontend/delta/js/Clipperz/PM/UI/ExportController.js +++ b/frontend/delta/js/Clipperz/PM/UI/ExportController.js @@ -41,6 +41,11 @@ Clipperz.PM.UI.ExportController = function(args) { "padding: 10px;" + "border-bottom: 2px solid black;" + "}" + + + "header p span {" + +// "padding: 0px 4px;" + + "font-weight: bold;" + + "}" + "h1 {" + "margin: 0px;" + @@ -102,6 +107,7 @@ Clipperz.PM.UI.ExportController = function(args) { "margin: 0px;" + "margin-bottom: 5px;" + "padding-left: 10px;" + + "font-size: 13pt;" + "}" + "div > div {" + @@ -110,9 +116,20 @@ Clipperz.PM.UI.ExportController = function(args) { "padding: 10px;" + "}" + + "li p, dd.hidden {" + + "white-space: pre-wrap;" + + "word-wrap: break-word;" + + "font-family: monospace;" + + "}" + + "textarea {" + - "width: 100%;" + - "height: 200px;" + + "display: none" + +// "width: 100%;" + +// "height: 200px;" + + "}" + + + "a {" + + "color: white;" + "}" + "@media print {" + @@ -120,6 +137,10 @@ Clipperz.PM.UI.ExportController = function(args) { "display: none !important;" + "}" + + "div > ul > li.archived {" + + "color: #ddd;" + + "}" + + "ul > li {" + "page-break-inside: avoid;" + "} " + @@ -175,9 +196,11 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, { MochiKit.DOM.DIV({}, MochiKit.DOM.DL({}, MochiKit.Base.map(function(key) { + var isHiddenField = jsonCardData.currentVersion.fields[key]['hidden']; + return [ - MochiKit.DOM.DT(jsonCardData.currentVersion.fields[key].label), - MochiKit.DOM.DD(jsonCardData.currentVersion.fields[key].value), + MochiKit.DOM.DT({}, jsonCardData.currentVersion.fields[key]['label']), + MochiKit.DOM.DD((isHiddenField ? {'class':'hidden'} : {}), jsonCardData.currentVersion.fields[key]['value']), ]; }, MochiKit.Base.keys(jsonCardData.currentVersion.fields)) ) @@ -187,22 +210,30 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, { }, 'renderToHtml': function (jsonData) { - var title; - var style; - var date; - var body; + var title; + var style; + var now; + var dateString; + var timeString + var body; title = "Clipperz data"; style = this._style; - date = "dd/mm/yyyy"; + now = new XDate(); + dateString = now.toString("MMM d, yyyy"); + timeString = now.toString("HH:mm"); body = MochiKit.DOM.DIV({}, MochiKit.DOM.HEADER({}, MochiKit.DOM.H1({}, "Your data on Clipperz"), - MochiKit.DOM.H5({}, "Export date: " + date), + MochiKit.DOM.H5({}, "Export generated on " + dateString + " at " + timeString), MochiKit.DOM.DIV({}, - MochiKit.DOM.P({}, "Security warning - This file lists the content of all your cards in a printer-friendly format. At the very bottom, the same content is also available in JSON format."), - MochiKit.DOM.P({}, "Beware: all data are unencrypted! Therefore make sure to properly store and manage this file. We recommend to delete it as soon as it is no longer needed."), + MochiKit.DOM.P({}, "Security warning - This file lists the content of all your cards in a printer-friendly format"), + MochiKit.DOM.P({}, [ + "Beware: ", + MochiKit.DOM.SPAN({'class':'warning'}, "all data are unencrypted!"), + " Therefore make sure to properly store and manage this file. We recommend to delete it as soon as it is no longer needed." + ]), MochiKit.DOM.P({}, "If you are going to print its content on paper, store the printout in a safe and private place!"), MochiKit.DOM.P({}, "And, if you need to access your data when no Internet connection is available, please consider the much safer option of creating an offline copy.") ) @@ -210,31 +241,33 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, { MochiKit.DOM.UL({}, MochiKit.Base.map(this.renderCardToHtml, jsonData)), MochiKit.DOM.DIV({}, - MochiKit.DOM.H3({}, "JSON content"), - MochiKit.DOM.DIV({}, - MochiKit.DOM.P({}, "Instructions on how to use JSON content"), - MochiKit.DOM.P({}, "The JSON version of your data may be useful if you want to move the whole content of your Clipperz account to a new Clipperz account or recover a card that has been accidentally deleted. Just follow these instructions:"), - MochiKit.DOM.OL({}, - MochiKit.DOM.LI({}, "Login to your Clipperz account and go to \"Data > Import\"."), - MochiKit.DOM.LI({}, "Select the JSON option."), - MochiKit.DOM.LI({}, "Copy and paste the JSON content in the form.") - ), - MochiKit.DOM.P({}, "Of course, the unencrypted JSON content won't be transmitted to the Clipperz server.") - ), +// MochiKit.DOM.H3({}, "JSON content"), +// MochiKit.DOM.DIV({}, +// MochiKit.DOM.P({}, "Instructions on how to use JSON content"), +// MochiKit.DOM.P({}, "The JSON version of your data may be useful if you want to move the whole content of your Clipperz account to a new Clipperz account or recover a card that has been accidentally deleted. Just follow these instructions:"), +// MochiKit.DOM.OL({}, +// MochiKit.DOM.LI({}, "Login to your Clipperz account and go to \"Data > Import\"."), +// MochiKit.DOM.LI({}, "Select the JSON option."), +// MochiKit.DOM.LI({}, "Copy and paste the JSON content in the form.") +// ), +// MochiKit.DOM.P({}, "Of course, the unencrypted JSON content won't be transmitted to the Clipperz server.") +// ), MochiKit.DOM.TEXTAREA({}, Clipperz.Base.serializeJSON(jsonData)), MochiKit.DOM.FOOTER({}, MochiKit.DOM.P({}, - "This file has been downloaded from clipperz.is, a service by Clipperz Srl. - ", + "This file has been downloaded from ", + MochiKit.DOM.A({'href':'https://clipperz.is'} ,"clipperz.is"), + ", a service by Clipperz Srl. - ", MochiKit.DOM.A({'href':'https://clipperz.is/terms_service/'}, "Terms of service"), " - ", MochiKit.DOM.A({'href':'https://clipperz.is/privacy_policy/'}, "Privacy policy") - ), - MochiKit.DOM.H4({}, "Clipperz - keep it to yourself") + ) +// MochiKit.DOM.H4({}, "Clipperz - keep it to yourself") ) ) ); - return '' + title + '' + MochiKit.DOM.toHTML(body) + ''; + return '' + title + '' + MochiKit.DOM.toHTML(body) + ''; }, //---------------------------------------------------------------------------- diff --git a/frontend/delta/js/Clipperz/PM/UI/ImportContext.js b/frontend/delta/js/Clipperz/PM/UI/ImportContext.js index 7a638da..598c499 100644 --- a/frontend/delta/js/Clipperz/PM/UI/ImportContext.js +++ b/frontend/delta/js/Clipperz/PM/UI/ImportContext.js @@ -24,125 +24,422 @@ refer to http://www.clipperz.com. "use strict"; Clipperz.Base.module('Clipperz.PM.UI'); -Clipperz.PM.UI.ImportContext = function(args) { +Clipperz.PM.UI.ImportContext = function(anInputComponent) { + this._importComponent = anInputComponent; + + this._status = { + 'inputString': '', + 'isInputStringValid': false, + 'inputFormat': 'UNDEFINED', + 'currentStep': 'Input', + }; - this.inputString = null; - return this; } MochiKit.Base.update(Clipperz.PM.UI.ImportContext.prototype, { - 'toString': function() { + toString: function() { return "Clipperz.PM.UI.ImportContext"; }, - //============================================================================= - - 'resetContext': function() { - delete this.inputString; - delete this.format; - delete this.jsonToImport; - delete this.recordsToImport; + release: function () { + this._importComponent = null; }, - - 'getInitialJsonContext': function(aJsonList) { - return { - 'format': 'json', - 'jsonToImport': aJsonList, - 'recordsToImport': aJsonList.map(function(d){return d._importId}) - }; - }, - - 'getInitialCsvContext': function(aCsvTable) { - var result; - var nColumns; - var defaultSelectedColumns; - var defaultHiddenColumns; - var defaultColumnLabels; - var columnLabelsFirstrow; - var i; - nColumns = aCsvTable[0].length; + //============================================================================= + + ensureStateConsistency: function () { + var csvData; - defaultSelectedColumns = {}; - defaultHiddenColumns = {}; - defaultColumnLabels = {}; - columnLabelsFirstrow = {}; - for (i=0; i(.*)<\/textarea>.*', 'g'); + if (isExportContent.test(aValue)) { + textarea = MochiKit.DOM.TEXTAREA(); + textarea.innerHTML = aValue.replace(isExportContent, '$1'); + result = textarea.innerHTML; + } + } + + try { + var jsonData; + + jsonData = JSON.parse(result); + jsonData = this.enhanceJsonDataWithCardReferences(jsonData); + + this.setJsonData(jsonData); + if (isUploadingFile == true) { + this.showJsonPreview(); + } + } catch(e) { + var parsedCsv; + + parsedCsv = Papa.parse(result); + if (parsedCsv.errors.length == 0) { + var csvData; + csvData = this.csvFillEmptyCells(parsedCsv.data); + + this.setCsvData(csvData); + if (isUploadingFile == true) { + this.startCsvWizard(csvData); + } + } + } + + this.setState('inputString', result); + return result; + }, + + //============================================================================= + + backButtonStatus: function () { + var result; + + result = 'DISABLED'; + if (this.currentStepIndex() > 0) { + result = 'ENABLED'; + } + + return result; + }, + + //............................................................................. + + forwardButtonStatus: function () { + var result; + + result = 'DISABLED'; + + if (this.currentStep() == 'Input') { + if (this.isInputStringValid()) { + result = 'ENABLED'; + } + } else if (this.currentStep() == 'Preview') { + if (this.state('recordsToImport').length > 0) { + result = 'ENABLED'; + } + } else if (this.currentStep() == 'CSV.Columns') { + if (MochiKit.Iter.some(this.state('csvData.selectedColumns'), MochiKit.Base.operator.identity)) { + result = 'ENABLED'; + } + } else if (this.currentStep() == 'CSV.Labels') { + var selectedColumns = this.state('csvData.selectedColumns'); + if (MochiKit.Iter.every(Clipperz.Base.zipWithRange(this.state('csvData.labels')), function (labelInfo) { return (Clipperz.Base.trim(labelInfo[1]).length > 0) || (selectedColumns[labelInfo[0]] == false)})) { + result = 'ENABLED'; + } + } else if (this.currentStep() == 'CSV.Titles') { + if ((this.state('csvData.titleIndex') != null) && (this.state('csvData.selectedColumns')[this.state('csvData.titleIndex')] == true)) { + result = 'ENABLED'; + } + } else if (this.currentStep() == 'CSV.Notes') { + result = 'ENABLED'; + } else if (this.currentStep() == 'CSV.Hidden') { + result = 'ENABLED'; + } + + return result; + }, + + //============================================================================= + + goBackHandler: function () { + return MochiKit.Base.bind(function (anEvent) { + if (this.backButtonStatus() == 'ENABLED') { + this.goBack(); + } + }, this); + }, + + goForwardHandler: function () { + return MochiKit.Base.bind(function (anEvent) { + if (this.forwardButtonStatus() == 'ENABLED') { + this.goForward(); + } + }, this); + }, + + //============================================================================= + + goBack: function () { + this.setCurrentStep(this.steps()[this.currentStepIndex() - 1]); + }, + + goForward: function () { + if (this.currentStep() == 'CSV.Hidden') { + var jsonData; + + jsonData = this.createJsonDataFromCSV(this.state('csvData')); + this.setState('jsonData', jsonData); + this.setState('recordsToImport', jsonData); + } + + this.setCurrentStep(this.steps()[this.currentStepIndex() + 1]); + }, + + //============================================================================= + + renderCsvTableBody: function (hideDeselectedColumns) { + var importContext = this; + + return React.DOM.tbody({}, MochiKit.Base.map(function (rowInfo) { + var result; + var rowIndex = rowInfo[0]; + var row = rowInfo[1] + + result = React.DOM.tr({'key': 'csv-row-' + rowIndex}, + MochiKit.Base.map(function (cellInfo) { + var result; + var columnIndex = cellInfo[0]; + var columnValue = cellInfo[1]; + + if (importContext.state('csvData.selectedColumns')[columnIndex] || !hideDeselectedColumns) { + result = React.DOM.td({ + 'key':'csv-cell-' + rowIndex + '-' + columnIndex, + 'className':(importContext.state('csvData.hiddenFields')[columnIndex]) ? 'PASSWORD' : null + }, columnValue); + } else{ + result = null; + } + + return result; + }, Clipperz.Base.zipWithRange(row)) + ); + + return result; + }, Clipperz.Base.zipWithRange((importContext.state('csvData.useFirstRowAsLabels')) ? importContext.state('csvData.data').slice(1) : importContext.state('csvData.data')))) + }, + //============================================================================= __syntaxFix__: "syntax fix" }); diff --git a/frontend/delta/js/Clipperz/PM/UI/MainController.js b/frontend/delta/js/Clipperz/PM/UI/MainController.js index 4e7375a..a0dae81 100644 --- a/frontend/delta/js/Clipperz/PM/UI/MainController.js +++ b/frontend/delta/js/Clipperz/PM/UI/MainController.js @@ -63,6 +63,7 @@ Clipperz.PM.UI.MainController = function() { this.registerForNotificationCenterEvents([ 'doLogin', 'registerNewUser', 'showRegistrationForm', 'goBack', 'changePassphrase', 'deleteAccount', + 'updateOTPListAndDetails', 'createNewOTP', 'deleteOTPs', 'changeOTPLabel', // 'export', 'importCards', 'downloadExport', @@ -122,6 +123,16 @@ MochiKit.Base.update(Clipperz.PM.UI.MainController.prototype, { }, //========================================================================= +/* + proxy: function () { + return this._proxy; + }, + + setProxy: function (aValue) { + this._proxy = aValue; + }, +*/ + //========================================================================= isOnline: function() { return navigator.onLine; @@ -246,10 +257,8 @@ console.log("THE BROWSER IS OFFLINE"); var canRegisterNewUsers; canRegisterNewUsers = Clipperz.PM.Proxy.defaultProxy.canRegisterNewUsers(); -//console.log("CAN REGISTER NEW USERS", canRegisterNewUsers); this.selectInitialProxy(); shouldShowRegistrationForm = parameters['shouldShowRegistrationForm'] && canRegisterNewUsers; -// this.pages()['loginPage'].setProps({'mode':this.loginMode(), 'isNewUserRegistrationAvailable':canRegisterNewUsers}); this.showLoginForm(); if (shouldShowRegistrationForm) { @@ -262,7 +271,7 @@ console.log("THE BROWSER IS OFFLINE"); //------------------------------------------------------------------------- - checkPassphrase: function (passphraseIn) { + checkPassphrase: function( passphraseIn ) { var deferredResult; deferredResult = new Clipperz.Async.Deferred("MainController.checkPassphrase", {trace: false}); @@ -931,13 +940,12 @@ console.log("THE BROWSER IS OFFLINE"); //......................................................................... - userInfo: function() { + userInfo: function () { var result; - result = { - 'checkPassphraseCallback': MochiKit.Base.bind(this.checkPassphrase,this) - }; + result = {}; + result['checkPassphraseCallback'] = MochiKit.Base.bind(this.checkPassphrase,this); if (this.user() != null) { result['username'] = this.user().username(); } @@ -1116,6 +1124,9 @@ console.log("THE BROWSER IS OFFLINE"); toggleSettingsPanel_handler: function (anEvent) { this._isSettingsPanelOpen = !this._isSettingsPanelOpen; this.setCloseMaskAction(MochiKit.Base.method(this, 'toggleSettingsPanel_handler')); + if (this._isSettingsPanelOpen == false) { + MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'closeSettingsPanel'); + } this.refreshCurrentPage(); }, @@ -1246,7 +1257,7 @@ console.log("THE BROWSER IS OFFLINE"); }, //---------------------------------------------------------------------------- - + // export_handler: function(exportType) { // return Clipperz.PM.UI.ExportController.exportJSON( this.recordsInfo(), exportType ); // }, @@ -1274,14 +1285,14 @@ console.log("THE BROWSER IS OFFLINE"); var deferredResult; var getPassphraseDelegate; var user; - + getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase); user = new Clipperz.PM.DataModel.User({'username':this.user().username(), 'getPassphraseFunction':getPassphraseDelegate}); deferredResult = new Clipperz.Async.Deferred("MainController.changePassphrase_handler", {trace: false}); // deferredResult.addMethod(currentPage, 'setProps', {'showGlobalMask':true}); deferredResult.addMethod(this.overlay(), 'show', "changing …", true); - deferredResult.addMethod(this.user(), 'changePassphrase', newPassphrase); + deferredResult.addMethod(this.user(), 'changePassphrase', getPassphraseDelegate); deferredResult.addMethod(user, 'login'); deferredResult.addMethod(this, 'setUser', user); // deferredResult.addMethod(currentPage, 'setProps', {'mode':'view', 'showGlobalMask':false}); @@ -1290,12 +1301,12 @@ console.log("THE BROWSER IS OFFLINE"); deferredResult.callback(); return deferredResult; - }, + }, deleteAccount_handler: function() { var deferredResult; var doneMessageDelay = 2; - + deferredResult = new Clipperz.Async.Deferred("MainController.deleteAccount_handler", {trace: false}); deferredResult.addCallback(MochiKit.Base.method(this, 'ask', { 'question': "Do you really want to permanently delete your account?", @@ -1313,23 +1324,22 @@ console.log("THE BROWSER IS OFFLINE"); return deferredResult; }, - + importCards_handler: function(data) { return Clipperz.Async.callbacks("MainController.importCards_handler", [ MochiKit.Base.method(this.overlay(), 'show', "importing …", true), - function() { return data; }, - MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, function(recordData) { - var newRecord; - // I have the feeling this should be done in a more elegant way - return Clipperz.Async.callbacks("MainController.importCards_handler-newRecord", [ - MochiKit.Base.method(this.user(), 'createNewRecord'), - function (aValue) { - newRecord = aValue; - return newRecord; - }, - MochiKit.Base.methodcaller('setUpWithJSON', recordData), - ]) - })), + MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'toggleSettingsPanel'), +// MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}), + function () { return data; }, + MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this.user(), 'createNewRecordFromJSON')), + + // MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.bind(function (recordData) { + // return Clipperz.Async.callbacks("MainController.importCards_handler-newRecord", [ + // MochiKit.Base.method(this.user(), 'createNewRecord'), + // MochiKit.Base.methodcaller('setUpWithJSON', recordData), + // ], {trace:false}) + // }, this)), + Clipperz.Async.collectAll, MochiKit.Base.method(this.user(), 'saveChanges'), MochiKit.Base.partial(MochiKit.Base.method(this, 'resetRecordsInfo')), @@ -1339,6 +1349,61 @@ console.log("THE BROWSER IS OFFLINE"); ], {trace:false}); }, + //---------------------------------------------------------------------------- + + updateOTPListAndDetails: function() { + + return Clipperz.Async.callbacks("MainController.updateOTPListAndDetails", [ + Clipperz.Async.collectResults("User.updateOTPListAndDetails ", { + 'userInfo': MochiKit.Base.method(this, 'userInfo'), + 'otpDetails': Clipperz.Async.collectResults("User.updateOTPListAndDetails ", { + 'otpList': MochiKit.Base.method(this.user(),'getOneTimePasswords'), + 'otpsDetails': MochiKit.Base.method(this.user(),'getOneTimePasswordsDetails'), + }), + }, {trace:false}), + function (someData) { + return MochiKit.Base.update(someData['userInfo'], someData['otpDetails']); + }, + MochiKit.Base.bind(function(someUserInfo) { + this.setPageProperties('mainPage', 'userInfo', someUserInfo); + }, this) + ], {trace:false}); + }, + + /* Used only one time (the first time the OTP ExtraFeature loads), other times + the list update is triggered by other operations. Maybe the first OTP list retrieval + could be done during init, so that this would not be necessary. */ + updateOTPListAndDetails_handler: function () { + return this.updateOTPListAndDetails(); + }, + + createNewOTP_handler: function () { + return Clipperz.Async.callbacks("MainController.createNewOTP_handler", [ + MochiKit.Base.method(this.overlay(), 'show', "", true), + MochiKit.Base.method(this.user(), 'createNewOTP'), + MochiKit.Base.method(this, 'updateOTPListAndDetails'), + MochiKit.Base.method(this.overlay(), 'done', "", 0.5), + ], {trace:false}); + }, + + deleteOTPs_handler: function (aList) { + return Clipperz.Async.callbacks("MainController.deleteOTPs_handler", [ + MochiKit.Base.method(this.overlay(), 'show', "", true), + MochiKit.Base.method(this.user(), 'deleteOTPs', aList), + MochiKit.Base.method(this, 'updateOTPListAndDetails'), + MochiKit.Base.method(this.overlay(), 'done', "", 0.5), + ], {trace:false}); + }, + + changeOTPLabel_handler: function (aReference, aLabel) { + return Clipperz.Async.callbacks("MainController.changeOTPLabel_handler", [ + MochiKit.Base.method(this.overlay(), 'show', "", true), + MochiKit.Base.method(this.user(), 'changeOTPLabel', aReference, aLabel), + MochiKit.Base.method(this, 'updateOTPListAndDetails'), + MochiKit.Base.method(this.overlay(), 'done', "", 0.5), + ], {trace:false}); + }, + //---------------------------------------------------------------------------- saveChanges: function () { diff --git a/frontend/delta/js/TestData/User.data.js b/frontend/delta/js/TestData/User.data.js index caa95ca..704e9c6 100644 --- a/frontend/delta/js/TestData/User.data.js +++ b/frontend/delta/js/TestData/User.data.js @@ -1195,7 +1195,7 @@ testData = { }, "v": "ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf", "version": "0.2", - "userDetails": "{\"records\":{\"index\":{\"062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80\":\"0\",\"d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d\":\"1\",\"de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4\":\"2\",\"d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045\":\"3\",\"f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732\":\"4\",\"6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18\":\"5\",\"9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291\":\"6\",\"6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a\":\"7\",\"6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728\":\"8\",\"f13d3614512f35960896be45bec72fb177209b05cb846741454d10befdc96e0b\":\"9\",\"e5ecff72df3a57862c1aec4084c90a458a04b63d4ede8c6c02cd6c73f1afb0ce\":\"10\",\"2631d52448aa008a918adfa9ac7d092b68ca65d2a8b052501a21a952ea9d158d\":\"11\",\"26f564ac38b07878222831815f4ad2ac3652ad2aa85e463c0d72c245ccb55500\":\"12\",\"bbd1a005b14cd128187a3d8247168d19136c5c3c887b22040a21347b7926a9b6\":\"13\",\"54afc19bc21acb29739395aec2b89f5cb1db05b6066b9bfd4f989ba12ccef1b9\":\"14\",\"e0dba99d2973c63d5231459337603e0c483fe6ec586b4f10d78baa53314d7f02\":\"15\",\"405cf90598df199675bc47a6b86967d3b0fd48a4c23bd1e142e2b7f50b2136fd\":\"16\",\"03e80a849bdcef055859870f6a8789b3c5b9bee22b610eeb0aae1a5c7893a827\":\"17\",\"a519f4a285a8954e47a7ba220986ad3f1e048bd301ade71c32f8d7278bb84b08\":\"18\",\"6b2467a411278edb2415eb37da08b3c570b05d229f5435cc3f8e1ec03cef4858\":\"19\",\"c45fad0ba337cf90493780dafc3ceb6fa29410dca5e1bdf77f3b5e6d1a755128\":\"20\",\"b1015a5ac47a9f3d0b2787c95f871022f39431674825d27759ce8f881705b6a2\":\"21\",\"c4aa834d9059f854c4dd8de275192747e8ff54ac2932ba6b7b57ca13754a2950\":\"22\",\"3bdc93056c8c2c9116380435715d9afc016cd0057e754bb3b919a086f3ce3dac\":\"23\",\"2f68ed41765b3f49c06fc5aa18f56e0f0bd6a0e5024f5af987e6476b47cf7009\":\"24\",\"2aa1871b3dab60d7a0aab1cd4cc3df813fdc35bb3c60d99d7c8e7b46b6cf6484\":\"25\",\"b56413ce2384696e76261660790d452997ff59f3d9feaa90b1dc3ad121d3558d\":\"26\",\"c549f7d97ed162fecba1eaefbf456ca12f0631efeaec9f5394b20674bef93bef\":\"27\",\"d7c2425ad5bd8d36cc7432de28a67d1fe989f48fdfa89249a0b57ff394145673\":\"28\",\"5dfebd797126b11db899509bbd367d22e7985b726aa12e23b3d62419f5db11ad\":\"29\",\"2634a70250cd3cedc08313e642baeae38720a1fa50aaed56fd36556332846206\":\"30\",\"5ebf59d32dd40342d97a7e7a1a1f1faaed1997762680795f8eb7e661b528d702\":\"31\",\"8aaa83ede958b2621bf941e68e801b32e7ddd5d686551392d4d533eaecf58098\":\"32\"},\"data\":\"t6njeKB5pY6kWT\/FbuYJTayHpQMkPr\/O1HQ\/YNpqvuHN+gZQ7k8yTKdVO\/MguanpOnVJJ6ObYImUyQ5BmiLGticHHylQeFx9bwSD4PKHHm1ILNZPYf\/Maafj+kEK8SLkUAd2wipXQLK7KZeWQkoabv87mB0+Du+ejN5DXaKy90Urx21bf\/9KSfRC74TRIA6Qkr2S\/iMJibl3qP37tT3wlIiieKn17JSQca3dOFo3I\/vBhHH92MRKym7ehDSQmhYsbqjGJ0EpxrUinXMiqheyHmBwV102MWox8HiNj9PfRzmBcNj49\/RNqZHpIH5KgfkGREqnGXg2kBDckxEuij3taD0Jf7V\/rID4J5N3wSZmh08assJFwg7CXWJxRwfM7QVJLkMPlXgVYTatwdQcrtL7pmcKefBJa1DzanLNp\/0\/A621TApjxO1RBjwGlfRDp3Gyz6XvT8XeF85ESIGBIiITZpDUsWNctyiPEhj32LXk+CWg8xaEyhM9tq0q0InWEd4cL7GTZEEPOWb4pMIm\/\/c3NpZOwATfYKIqpg9cRrQk0gEG3dk9MV\/5eu\/Q3W0q50VMBXxCmTLcNMu+DodbsWRnq8BT54+WdmWwDq26WiAONUQ7430sV38zjqh97hs7I+if59ineJinKybnEpqJCCHTCMowDFW25xdF3Z03HkTjZWpFaDma5JWXTTA3L5MjkFPxJDGdMp5OeFFkpeM5h9dtpMzG06gsVqlskeLOxFVUhOrWnZ7y2Ofg0UMK+Xfqc0AonlQyzhyQbFAk3puM\/zEOfkxu0gpEGuHWl6\/ejrC0ddjQo1ctvS5e0WruZAJ+GlBMMTWXxOWe9IRRaGX7zSfXFP5QgPCR92ukemx++NLkwa7dpLJ1Spj0NZXW0\/f9\/0TGucs5x4+B46dnceAshVFEBoP6MximJMC1HnxaD3H6M99c8QstoHGmvqEQ1aupQcZlbi5V4r0qYNF4LJ57ee2LIOoo3fcyB1qpmdw4+OaLShjNhNsAPk8yqvy1XErLJwADvVS6vkNy8tSlBs9b1h1iP0UGnS5mT\/LOUz2OORvdJNpim3tCoBCymiOqWZEhz7VMGlSWzQB8UcmEveb\/D3gKa2foQN7WZRbFI\/QTKldoGURCTPEQuuDkAbIbJqQ\/zSK85XeDLb0yD\/FtC1BchCYynQU74vTZPH9dGMufLdSwykuc7NU9rlIbyjNrzfN0H3hIXyjGj2P3LQNfH\/edMvBOcXt5zri12VCs7UD8DmxVWY7bBvzoAy54WV8zZ2jkYqCQ93QDL80wxzE8t0AxXlo9Jpr2fCImtHyGyOg7N433M37pwgKTJecf4wc7136Zh6JsBkAYsVSkrgbfJY\/Di03VUm5fjdE83lD+WqH8YbR44xByDnIXF27k0ECQUW\/MXBkdWHgmdNmNadwJ1RA6nV\/xxtI7caboamRn5ocOlDbwS0fN94bIdCh97wwF3ZuQcFJBxQ9IECJ4dUQ1gNKi9W7Eo1BPfy7MZD4afE43Yrfn4ce4ZdFjQj6dhmN++lZIAHuBrhzZuMQLKPmfzyE7Jd9diE+0kTZSp2ldWn0Ef7Otwear4uYw2BsnFwJMhecKnH++kxLvObHTHFrRLcnRGLayVxLfLprkgFM0Z+YrUgsysFnw6issVlo+bXMPXnC2GCF9oK3dToXu8O8udCE2tajufSUOAHK4ZnZsKA+r35inlc3mtfNki0jeTt5n+ZLtVkw9yODipR1Mqm4mtvDF4vYrDyrYRB3V\/Eok+GDi1uERhQfZiZn1Bsae2bXvOjHnvh\/CkgI6K9CCP8E+xtY5IKFlGVEgIkhy32lZLRNZWQwLAIAIzo\/xg8g+zBJ7kW\/77oTkLiF\/jNT\/run6AFYLZg8uKYXYvKZL5plURu8c4uTbwzNQAzsLL6euqVpQ+IZ0sUk6f35WmQ2niSibHas1VJc9vHFibpouDsDlIoR71VSeTpL+HY6pu4o8M8sjaISf0gDve6+HZFHOXXz0oEnhU5Y7qdO5x7kkpOmexQrlDUYlP8MNCAG5XdGRcIQ7LakMjkOdEIYauUMSNV+K6ncSjE7F+yn09aMhMZsxJRCjxVWI3ErYlSw0ltawi\/kXnp0vcoAjH7Fz4etSU14a\/FR+S0ugmWa6U6uRQ7wYhDN8YeOxTnrIRmF+8F2roZvEiJC\/S0mivJiBlRVABWvI\/cdJ2h5XMGPFAlCeAjI9P\/iN2IhYF11cLZHCnqa+CdDQRp9VWKfGsLBVjE157UnJfwWHnSlGuQ1GAYSsq2In86cf3jUI16nIy7tByzestwQKVtzkh+PYzW+DXcyY8254lRvQtWSBvBicwb6M\/XfdfyOyGntfBeNeCxc\/tvlVtruHQCJ1eouFdk12UlvShzfWD9ZGKkFd2UgwbAAaj6pGfw9NW5d5skhh8qWbvqAIjiatd6adJ9XIVwuwDs+5IqQ8t03O6bdsHf2G4+spgQ7V+ZglFvGY8uxS4zLSRFF90MEDptIz\/jkJKhCVfLgUtRAFakncx8P9R5eDnRjhjdRi5Xf8+NaYL9nuCYKxNhfkVbnpQgbQDT35z6SWeMgmE1L78Tg2AjLWZCD9djKVQsdmhmo2d1kQTNTwzW2ctjaGJ4LLpx+8guUTQKTpSCYaMko6hRvvBjdS8tjx\/Xa28xTWRkwy+R\/24Js\/fXWqAdmJgbpXrMLen09LCXKQri4rkK3LeIZsqrSkkuxxD99tXUyTulGFSeEVQq3o+XlcMs0kSD8fsZ9yRseFu99R3NcEHYfmx2Fy3EgqQjKcQVpL1WXr\/71Zw1MWGZscnX7vAASLFm24Ga3fZ4oXdT81MF0ViRuygaonlVjbxoI2pXvCiIGwpEcsuz+9WYX77WmTUjgOsVEX\/\/oi4305AvfXCygB02dcZciNWVk73FADVr5mlVqTrn3vQcs8sRoaG6GCkiYqqumMFDY3CiWzxOU2U7dQBxXoSCB+GSeljTMim+nOoKJHPFCfftCSnGljx5Fy7+Op\/zJVXppDXbNXT8qbeKUwvcUEiV3UnBA2OJ0Qh7edMHSMziX+PLkHEHr3\/C7rn7dYC1OQQJn7lQn8KEw1wNsqIFu9wwyTxmlhRC2BgMLxdY67Vda96+OI3bsT3\/GT\/d7T7fV7yTzbhQ5wa2DS+lG8PnK0UnVTh0U75PYtD0x1UqGTVxWLgfvrPzlJDOnfBSaXd9yCgK516l88hnrL0OsaOtWTJZu4hlaKlIx3qdZMludDSG+iwCw4dTZ5GFgqqfj2z2mdwIrkI5kvz3CaXs3PGcJDtFTbtXDB8eu9wyPsNlDaHZ90YGL\/eP5uSDmwmx0xzeKd5Fx4B9xw7z0NJ0vIZcZv\/xphOTm6Giy2PMcPBx6sFV2KYnMTTo5aHvxoo4dPqvW5lboIGgaQI1Wp8FNHAMFmi7HguNCPA8cpdk4ux8nX729PuYj+Q6Lzlx9RWpn1yn5sdYirJbgIUlWNEsTquL7hRq7p8KC0\/7sp\/OIQvRGEr+hHBGkjLIDNx5pE\/ToZJ3CCi8lutyJt0QQroCK1A6Qd27uxc86mIYZJn4GbbyOfUZc9er7eNgGKIDNIB+fTY5e5HBRLB7P2M+BaPQviljjsuM76OwOfLB1XrYnK+0Aog5T5QLqdjpHyzynvVLtAwwbf6PKodNMf\/8zSyxtF+bhYF9MN\/r\/SUntfmzH06sQuV7R4tQISFkSMSwOYeayksnSzlioszILkCCXXrkTFO2xJh\/lftONca6cGYc8CxtILZZ2ypmIALoePfXxBXMtxk1t2\/\/OTI5bXe8FhIvScKApM5F3YBGHyOmARJa5UteJZrWY6oXEWxIXx7QxMna\/4yCNddSoDSEPOb7edS4s4Ms0hKke7Q94q7UbCInsiEgNPEfR2Gwg79+I4f0sW6NkDEwPHxkKMcBiz0IAv\/oVsrnmxheBID3s2RS7YNvwTigcoWM2JO8BDkoEwmnIM\/158sS5IhCBWgxJpPYJldUEi2yWXl\/F8vMftJLsFnDrImnrmUzL+bKEJ9WekOp4y0RVEM4pUOLpacqPiMNMlTnR5zyI7MX4t2YLhJJsNvIvyVeC3C1j5CB0bbJtheAX7V\/M8jxh4h7plHe23AKrI881liGSGhftGJvxz2lP\/Lof2btPIOjqgTI2gVh6xYrNLYAThw+UQ2NrNSufIKmxrxA4CJNyqFoRN+oGbTgk03AZ5onDJMqE83N\/3u3w5zvewoB2GI1XbErOeJYmg0aJ0JEgy8KmEjrAX1qPuL\/xhAftGlH41UtdpskIqX6kUeg\/ML33M+MwtnJVnmvt8KYDSum9Kwou1Tfsx2+ELG\/9hCtZC9Wgi3IXqUMWTtmtXivUpFY6fg1ZyWo2TIKjeYxQGk9rG8OfRuaRRyTSBj5qIsbCUzmZvHlvCDYwqvt7oRQZckOCubi0MdmgY3QYusfVxhBYAh3X7+JIQFhBfEcuWGN6jhLSLC9Vw1+kn3msMa8L+0SL8H947ZfpEKl\/QWwnZjgEt1qnlEBDeezy7nXDWrz5rQGRUfy4RHvTPD16U4Slkf9dMpiIFmRrYtT0HTVGqNlBbAjUM7hsxZe8DvMwkkMORAPec7fjn67XqBl27gADn\/yWJ3yMaB4pHeBjnnVHsTdFwsrRgqLmMAuGX2hran5\/f6HmKfvMB8JvYBq0uyWyApNTw1BcgtQObm2ioY8RAptBo6nqn4dTgSxs9h\/n44aLMVlpXORR4GFN2LWLHk65iV8EF49SkNRCMJ1yRLOGWOD29mFgv+9f2U82UCSYIMF4FCblZyZ16Xs3QhW5EP1E3hm3alOIG7BZSdGUO7tgyKjtyQDfZsLgMXkCkEFy0WJbFEbNzjGA5UluLbXBkTrYOgroSDBLfz84F+RxVP827ZNh+vbbGA1ObhhprBb1YRJfa\/3X5+TFIS3ak5eTVuKtF12ZpqB0TiYBQz15pK4axK9Ir9SpwQzJBN6HW6UQno7KajXfFhQM80klawnw7ivOTqdZYDRcwkbXfEImA6La0MobAg0bmS7QndS6\/iJf9TgXIelOjAxof33N8NVwRCn74JaqF5PHugJeh92DBI6G3MseyrDQ0k4AQyjyOAKDjYodEmWoXJA==\"},\"directLogins\":{\"index\":{\"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348\":\"0\",\"dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496\":\"1\",\"aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584\":\"2\",\"6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f\":\"3\",\"f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1\":\"4\",\"a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e\":\"5\",\"f4cc4604c1db808cfab53354260b01ae1f2826c621ac4a3cc499f132ac30f02b\":\"6\",\"aad35cd020e3d78ba03681682096d1ab0303073c971c0282d0bf31d56843fd9f\":\"7\",\"8d7bf22dbce3e7d5eb873fa437c3b27168afa8bd28d06fec76026f9e9dd8c26c\":\"8\",\"cb5a31797a00ac70952c1e8f30679eb101353ea98313543f33caec13624b15e4\":\"9\",\"53baf661f0c41b41026cd8e8cc4dd1855956461b9201286cb98486e4afb8254b\":\"10\",\"5859b5eb97e6a342de219e49bce04c29f9c6aeea77658a699ef27ec2f943e18d\":\"11\",\"69f76440f9c5fa0c66bf4d0b2742c8211f30dcf562d3aaac28e56216d53c2f27\":\"12\",\"aebadbfcc69bf029b2ae47cfb4e3bc2b8b71ae4a90f786538dcb44be6b5fc1f9\":\"13\",\"af97323febc46a095403cf77e9b16b0351556354aeaa4da37b17ab148d917a4a\":\"14\",\"9613ee2be520c7de0af9f67cc5048ebb649fb4a472717bbdb6822b299a4c7f55\":\"15\",\"632f40721cf56606f5c8227020e4a574585feb522cd410872e741ccde348adf3\":\"16\",\"a8818157b59693c573fdff99b3932ee95c8b228670ecd8a2944479edbb91249f\":\"17\",\"9a8e6cc57266b8364547f450e71d98596efd9210df8f5f1a9dc755df0b23f0db\":\"18\",\"e2231d46181622754c6326044448750caa9a9496a290a9661996e47cd5d51e3a\":\"19\",\"f0d93bf3e52bc4f4e8d34c4759f5f566c1bcf220bcf5edd28af71ee8ef0da8dd\":\"20\",\"c50495ba204a69758ef50a95851c7481845e4f9af342341b5bcd8023bc00226e\":\"21\",\"65f93ac9c0f0787dc5d149a44e574140df26cde715372a534189e41658c7f828\":\"22\",\"33a73db6f9626dd260e9d33ca2e6000518b6eea8b7a3e5e55fc4fd4add4d43ab\":\"23\",\"34e2981a6cf30b15b774ba76a7de32b83795c95f4ea04b49e34ba7d85e77c7f2\":\"24\"},\"data\":\"j6o5ZeJ21I0G1KY\/PhJ7DvGXxQlpV7IX8FjT3o2MDuoEZ68FUo4FdMhm9VmmRn8461acH6n7ZWlVuB0v5Zf6FVIxTSwnCzf\/DneEl+6gH6cpr0k8+usMNfTj8LOUlhOPtVdbsZC1S2hdRSz9viQEpWkhTbdOabf8trPXOjjJepJ6RR3VQMlCH3OYUDrm7G\/4z3Qw1T9hbRUttsUafK63JNGUk6GhOtptCpTP8eE2nLlvKd2RguVZpFFh6RDi2vWA\/7CaJbbtvCqIrUTXrPZJTqoZ0bDqV1zIfLm9ui42EXk2cKqZiL76G6bJINR9PU+83fGdsG7CxbdSvhB5gMNmr1FkRZS7u9bvNf8sgYcQQVvmGP8joDeMTIsC+Uz\/595jKKnvnkPnSp1CqhUVmHZHqnIEZAh7VOakN\/k3UunKeinTHtluQBOvkFyqHp8X0zLmDWPeuf3aBA3mCWPeqLVv09iEbsuIZRFkFPivNGPYqQRwSt2Ql+GbmG4VwvRUa6WoeR2X+HIT7w4BcZ1QbvTSnTmV263eY0W1Yjf5wALsxEuwjDIxMemjUgYLoDihawA\/t16QFBJG\/VT4MbBUsVeMNCm1xE8G3GW\/V\/O0G+B+A95eSsL9x8gEIwoaH78vNbvSzYLv6Y\/z5feqb9z8oVimJCX9xKFbW\/1zxaLxcesgzFfmqCpJCnLxhvg1UjA83UUzJgieMzvIKCwklGGWjys+sK6tWQKpL9KISNEDuQ6Rzictd0psIu7JnX2WFZFbC2yTubiN+A59tNsX1h6kQo8CBAw+7F\/uyfIqSei7vphjjPlveQE2yZXoMtfqEuQISEDaK+70GGsdI4j1I2V7rscS1u3bTWR1BD6B7G8aSiZGL2+7MuEcNF3WhGL7W+awG3KSuxb+SBoKyAoT70y\/VJum+7ZXJa1rWCcNoYqLLZ77uwp4UxCvjSylwfzoJwkwebgOVVJf\/ELEd+En8Zi8SPxrgEqdQ\/AxYEoHAyivpcYfeoqaXAOYMU\/St6FvSvZVeT8iRUjTwr\/15aAR5UW7rqoE5i6P72OIu+le82M51w27y4SIBkjrFDM8NTMIeRXvWYt0U9qX\/JkGhS\/syGTNq0EJPl6+qUsHrguZJhky1uxtafNz\/DtN0z0NuCqScnBgrVgUNdXc7FlAkjUImNjsGGdodSnmqz4zo6xHmhfSYgyEGtAgpyqmNzMnZ8AAjV+8EnOseuY0D2xc3UbfthrubzNC97ycIfIv3ouBZi98PxPzd7iQzbZ3\/cK5prVnSHcH6sGap\/+uzzG\/SwFxVOsespkn4iaHuMRlP2Kl6yGPRUmReINGmaMg7EqrTCJpfmVCucop63jxg1RIvVf4PQf5cw7dXj0F\/wQsmo+IbJS85kUyD0VHN+e3AYq4GbFubr0L1udvau30vqZ94Y\/1UsjjFdZXCAikbgoW5138BEhVDM0OOTJnpAcQCKfxDy\/Fgutgr3H659BK6h8eQNBj+mdDuJBnnvjJiZFaZT4x7uphioX2THLZJJ2S82MMqRC59Zo+\/oKa6blU9LYoSKotD4KShGt8ZSU1y6x4l9UK\/8dibrKpS77zAw109TaeLIXeqBRmJVQghpxu1KTb8uLsADszHZiFvQJlphUH3TRevvh2r32l4DxFiD+iOFDyTUHJrAyR6X6LZdTG2308dzOuf9M3oxOPS5cZjUjcl7cI6rvDtTQmijmVFtkqwHh005sLYbhT1Y6T3pAONl+VZnDIMgxPrCT0Son28CfgenLF5sx9qLV3v4ceYPbdiaLFRzm31ZXoUL7Xg06HtJ2pVFFMi232C\/LjpyUGJXA\/yTFN1R12R9pdn8cTPW\/i\/jCoQ8se9Tke\/qXTlM0FQb83XBAb7hiMgUu7sEjxk74rM7xK2XLt\/sJ6XYWGMc6LDUoKXpyJoa9mv+xw9aoE4AMl5FEbKCjxORkFpB9uomyIsC1ywoFYR+d8Di5m2\/rB7QnvfZT053w8pgknBOK6y3u8k8XQXU5Evl\/UxUHgE40Ua5JTUMsJ6gAIk8RBcLayLzkhPY5kut+wynoMuvq2lTZIMCZvi9NmqrzDdsKcjRt9qT5aD7SDNEO7mKvzj11ly9GMk9oxHONJioll4G+ZWwDI+Zi2WS4TEBmAnfw2GPTGpGvpozN1+LqnkwN2MvtKgkX2QoawvkrS6EE9AWY3VFzv42VaNL2UIh+5q1BJk46KFBOCDhLIb092\/sCXfGU\/q0rG7z97fjapVu9IpriswDvS+XkYPsbeLdtoPSY10ZOzGTm0HM43KHePEmmQmh9wfCNhbzg\/boJmXD5Kc+wXLnSuKDsaByD7HyLniNjRNLgtFWr1xf+SHvXgElumrKkVLCq9VSwde5QAp0UQ96i7RjiLhivJX78Tk\/NMlYsowShnykEYUKEv\/la4e1JH5XfW+\/cox1vaTi7njXXga+cOPUbQk3GMJc09ipvWgabUi7E82IEBTN1qDvQGrnNNowfqRLv4OdyVeH5U376DLLZx8c+NSqrusy\/DJU+Ft2FFGtxxT8JnxvaBnMjPxx01EchmMRVqjfgaT0iwljDwru+hweIgrc9M6AgIGA\/3o5Tzl16WGITzmQ+euGbp4IiTvlBkCxp8ie5XQXz8YXVr3DCX1x8G2Uj4l69I+ttvQzjC6RhULpJ+gTN3lR3096quTkudAkUzbPR9mvbLRev8Ds9LsPrSysJstw6HxE6jKiy\/eiMRnYX+frFpwu6qn67wbMBNFWd8dl+WqwnSmN17nITNAc0oc6sjwBHZNjj9km1ykEGNykV9BoCmJcNnRdzslU9znSthZJDSBnH9e\/YuBtR9DsQ2hSe4E8OX2HqQJ9Xt8e\/R8RsbKYwS8wHuj7YubuJh3HLQOVl6oDeUpe2ncpQrZnRMl9OG3NZ\/48SIzaYvDlLbeh+PGxz+jK2wlNjRSd8OPCA9Keb0t98+RWmUZfpyjTYskPJEak8r\/A7Qb1ONMm5Y9cT4OgDYYJI6sxZXCqesCLZPUI+MgMiuVzRi+JX3DJlogPZ4\"},\"preferences\":{\"data\":\"++\/WKXCLtqppntM0EWGmgw3oiBq7QS0CSzhP3GWAv3gm\/VJkxmbRuLS8tZ1eOvq3\"},\"oneTimePasswords\":{\"data\":\"REi10CXWsFACMiL3ejEEFH8h1aaJBgacC5urQDR7WLZg12CCkspnRO2QXtPZFc1UILopwpD9rFhJht+ORlVIsCc8SswZL4vC2rlzlInPyLzUvcW\/G6OuOm5EWPx0E67YvSDthLhlIxL4vMLkPocbV63z51jjgm0V5TXGaPY+ATVmFOmQEQce0wRPN\/+xLV3K86u5JdO2QbizdMvpmgeBLxF8NFz8mXP3C9oCwIgJX5hzLN85FOTD4lYnD01RXGbYS51zJdOS4xtnKW+AfIbjru1kaaNYZqLOPx1H2rvqXkDhaXH92iG8SZ7ccIX74Op4twoh5FxejInhZrYQTnONjFsEIqzYFgmpa0GOwbB2Fc2pG5MZ00ala3NKMJZ7SXAhWXDGacn3uXbTIUVOuAcTh4bSYqlzLXjQYa\/G6IxbIhW8oY\/3hSWPbft\/QI\/DTPmSMtU55b9BoMXbGU0nHZV\/Gdxkshmp3T\/Qh8bcYpbxhl5cPWcxbwuSgs8V+QUCSKqvRQmPig3w73gWtTQNQkVCznaBBjGsXHjTE4gAFI4AZRbJMIti\/6ffxYNFPg6AjEbgrhmo5jI=\"},\"version\":\"0.1\"}", + "userDetails": "{\"records\":{\"index\":{\"062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80\":\"0\",\"d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d\":\"1\",\"de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4\":\"2\",\"d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045\":\"3\",\"f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732\":\"4\",\"6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18\":\"5\",\"9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291\":\"6\",\"6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a\":\"7\",\"6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728\":\"8\",\"f13d3614512f35960896be45bec72fb177209b05cb846741454d10befdc96e0b\":\"9\",\"e5ecff72df3a57862c1aec4084c90a458a04b63d4ede8c6c02cd6c73f1afb0ce\":\"10\",\"2631d52448aa008a918adfa9ac7d092b68ca65d2a8b052501a21a952ea9d158d\":\"11\",\"26f564ac38b07878222831815f4ad2ac3652ad2aa85e463c0d72c245ccb55500\":\"12\",\"bbd1a005b14cd128187a3d8247168d19136c5c3c887b22040a21347b7926a9b6\":\"13\",\"54afc19bc21acb29739395aec2b89f5cb1db05b6066b9bfd4f989ba12ccef1b9\":\"14\",\"e0dba99d2973c63d5231459337603e0c483fe6ec586b4f10d78baa53314d7f02\":\"15\",\"405cf90598df199675bc47a6b86967d3b0fd48a4c23bd1e142e2b7f50b2136fd\":\"16\",\"03e80a849bdcef055859870f6a8789b3c5b9bee22b610eeb0aae1a5c7893a827\":\"17\",\"a519f4a285a8954e47a7ba220986ad3f1e048bd301ade71c32f8d7278bb84b08\":\"18\",\"6b2467a411278edb2415eb37da08b3c570b05d229f5435cc3f8e1ec03cef4858\":\"19\",\"c45fad0ba337cf90493780dafc3ceb6fa29410dca5e1bdf77f3b5e6d1a755128\":\"20\",\"b1015a5ac47a9f3d0b2787c95f871022f39431674825d27759ce8f881705b6a2\":\"21\",\"c4aa834d9059f854c4dd8de275192747e8ff54ac2932ba6b7b57ca13754a2950\":\"22\",\"3bdc93056c8c2c9116380435715d9afc016cd0057e754bb3b919a086f3ce3dac\":\"23\",\"2f68ed41765b3f49c06fc5aa18f56e0f0bd6a0e5024f5af987e6476b47cf7009\":\"24\",\"2aa1871b3dab60d7a0aab1cd4cc3df813fdc35bb3c60d99d7c8e7b46b6cf6484\":\"25\",\"b56413ce2384696e76261660790d452997ff59f3d9feaa90b1dc3ad121d3558d\":\"26\",\"c549f7d97ed162fecba1eaefbf456ca12f0631efeaec9f5394b20674bef93bef\":\"27\",\"d7c2425ad5bd8d36cc7432de28a67d1fe989f48fdfa89249a0b57ff394145673\":\"28\",\"5dfebd797126b11db899509bbd367d22e7985b726aa12e23b3d62419f5db11ad\":\"29\",\"2634a70250cd3cedc08313e642baeae38720a1fa50aaed56fd36556332846206\":\"30\",\"5ebf59d32dd40342d97a7e7a1a1f1faaed1997762680795f8eb7e661b528d702\":\"31\",\"8aaa83ede958b2621bf941e68e801b32e7ddd5d686551392d4d533eaecf58098\":\"32\"},\"data\":\"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\"},\"directLogins\":{\"index\":{\"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348\":\"0\",\"dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496\":\"1\",\"aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584\":\"2\",\"6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f\":\"3\",\"f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1\":\"4\",\"a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e\":\"5\",\"f4cc4604c1db808cfab53354260b01ae1f2826c621ac4a3cc499f132ac30f02b\":\"6\",\"aad35cd020e3d78ba03681682096d1ab0303073c971c0282d0bf31d56843fd9f\":\"7\",\"8d7bf22dbce3e7d5eb873fa437c3b27168afa8bd28d06fec76026f9e9dd8c26c\":\"8\",\"cb5a31797a00ac70952c1e8f30679eb101353ea98313543f33caec13624b15e4\":\"9\",\"53baf661f0c41b41026cd8e8cc4dd1855956461b9201286cb98486e4afb8254b\":\"10\",\"5859b5eb97e6a342de219e49bce04c29f9c6aeea77658a699ef27ec2f943e18d\":\"11\",\"69f76440f9c5fa0c66bf4d0b2742c8211f30dcf562d3aaac28e56216d53c2f27\":\"12\",\"aebadbfcc69bf029b2ae47cfb4e3bc2b8b71ae4a90f786538dcb44be6b5fc1f9\":\"13\",\"af97323febc46a095403cf77e9b16b0351556354aeaa4da37b17ab148d917a4a\":\"14\",\"9613ee2be520c7de0af9f67cc5048ebb649fb4a472717bbdb6822b299a4c7f55\":\"15\",\"632f40721cf56606f5c8227020e4a574585feb522cd410872e741ccde348adf3\":\"16\",\"a8818157b59693c573fdff99b3932ee95c8b228670ecd8a2944479edbb91249f\":\"17\",\"9a8e6cc57266b8364547f450e71d98596efd9210df8f5f1a9dc755df0b23f0db\":\"18\",\"e2231d46181622754c6326044448750caa9a9496a290a9661996e47cd5d51e3a\":\"19\",\"f0d93bf3e52bc4f4e8d34c4759f5f566c1bcf220bcf5edd28af71ee8ef0da8dd\":\"20\",\"c50495ba204a69758ef50a95851c7481845e4f9af342341b5bcd8023bc00226e\":\"21\",\"65f93ac9c0f0787dc5d149a44e574140df26cde715372a534189e41658c7f828\":\"22\",\"33a73db6f9626dd260e9d33ca2e6000518b6eea8b7a3e5e55fc4fd4add4d43ab\":\"23\",\"34e2981a6cf30b15b774ba76a7de32b83795c95f4ea04b49e34ba7d85e77c7f2\":\"24\"},\"data\":\"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\"},\"preferences\":{\"data\":\"y3WB0m/1Pr8yr5JfXffbLrcnwkhwU0qOj6r2F9ZHzm3aIzh0esucZ6PKW8mIe3Dg\"},\"oneTimePasswords\":{\"data\":\"ZtJ7qTQp1O8tc+VC0OLl4M2QCNGEMXVQXU1WDpT20e/PuJouRuNEnZ+qrNVJdq3GfwlUfnjIUnWxfEn2YBVbhKhwD8ERHwn1ZaJLjf18YAgl1CWGfcK4MtfCOXSoH7WFZ+Vq0gj43V7m0efAUU400cGcMUE5ETThNFGe/Fvu19diH1XhlMgQGk7d4tnAJOSpFj39wKzNK3Vm5ii0\"},\"version\":\"0.1\"}", "maxNumberOfRecords": 100, "statistics": "77hYFQnArAQV8a46SszqAIjH" }, @@ -1705,5 +1705,97 @@ testData = { } } }, + + // username: 'test', passphrase: 'test' + '9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8': { + "accountInfo": { + "features": [ + "UPDATE_CREDENTIALS", + "EDIT_CARD", + "CARD_DETAILS", + "ADD_CARD", + "DELETE_CARD", + "OFFLINE_COPY", + "LIST_CARDS" + ], + "paymentVerificationPending": false, + "currentSubscriptionType": "EARLY_ADOPTER", + "isExpiring": false, + "latestActiveLevel": "EARLY_ADOPTER", + "payments": [], + "featureSet": "FULL", + "latestActiveThreshold": "-1.00000000", + "referenceDate": "Fri, 03 April 2015 08:17:46 UTC", + "isExpired": false, + "expirationDate": "Mon, 01 January 4001 00:00:00 UTC" + }, + s: '55a27b18e8fdf1fb5e5bcf859cfa50fcbc69c9a41f04e371606a86411a98f460', + v: '983a6c79e7d5d490c3f13645c49760180fca05cc677914bf60fee009ead5a65d', + version: '0.2', + maxNumberOfRecords: '100', + userDetails: '{"records":{"index":{"3f5cad41321c89a0570c310f8e994a13c39c83842660c540960586fa9f2d2fc0":"0"},"data":"cllv5EtmluxBR3AWjet3jfZsJZDUXFddl1hIO4285PJOUymk5VP8nxLGSkYxkrbwIKHxxSERdwhcSVeuz+QJLFzx4hP/wngSNJT3edxh9pwM+fUs8nJunyK1LNS1JatoaWOIobTV1DbotfvxGUQI5QIxvKA="},"directLogins":{"index":{},"data":"54KM7x3emxWZH4CQDLBj4SkT"},"preferences":{"data":"AwOQXmReKkLpp8qZa4zjaWcY"},"oneTimePasswords":{"data":"1FTEyUjZ/MS1Kp91l3j00WNnOel6EFQhAYyAhcr90ozYwu6UDqlKNKyp5f2ndVZS36ReoxXbzIUYUJoaQegdvic/aVfyU/drjqVA/Ta2S5ICR050ewTUBs5BebBQT2WAMzKhmhQoKvMNCJFpNhLhJ7sbevyAHX4lZbpBUz92hTQ9jtpTi2pZ7IBUFI3JPV71H0reIs8FFA+Ugx3UPVVq77famGm5mh4I0rjY68zVvqNvfB5APM9OKR+AM3jkSHUa1QEzCEObMndR8WfKEyXlYoEhnhr1UEra8v5INHpSacU8210="},"version":"0.1"}', + statistics: 'tmRcqihMK0YvsnFoMKH5F/rN', + userDetailsVersion: '0.3', + records: { + '3f5cad41321c89a0570c310f8e994a13c39c83842660c540960586fa9f2d2fc0': { + data: 'nlihNmY5UjnGFxilT5LoDRvdp5WoHausCTiulBY9/Fm82ZJCEZ0mwH96WzsnQ6zMvrZPFHAr1zGAQPr82/MOr7xTVILjbEP6MKq9rOyEDRhY/3CVQgJVWLPfwiL9ihw9jKkd7ea3eU/RSj7V0UQB1zXzEXFqw0FwQcpSuCOl5hkYPecydA==', + version: '0.3', + creationDate: 'Thu Oct 01 16:21:50 PDT 2009', + updateDate: 'Tue Feb 09 08:57:03 PST 2010', + accessDate: 'Tue Feb 09 08:57:03 PST 2010', + currentVersion: 'ac353e86f69528d21dad0b17d00bbfb3e56c954e2ba71d0d091c903880ba1479', + versions: { + 'c84928db21b880a53e7ba1e51eebc4acc4b2bffe66f30368b8b7070973f5912a': { + header: '####', + data: '0xBSvvZ3EJhc/PmW+8PtpaLSAOmGo4i0sG9Uwe9RGbzDILvna447spjscE3IxIucj1EuBagtc2hvIT/tgkA5IIp4fq2dSvk3RF8h5+hXPy877tEZkiQFpigyUHd27smpYDSYc0Bzv0DWx+eR72TFIjwbU/CXxKR3qqyzma+q1pqIf1GiaZWlM+Qv4xmKEkJnRd6NdOyTwuAQoZ9q0O9pHtkDQ5eKQlwvuZuL+8Tdhn/Mvr5HzIset+4wo5HNvmkLNAtonChJpWWnj6Gc8LTI+ImSjM5PVku/O/pJKuCYtMovzzEoNuFWrtdn9XESKF3yjtpKzuDxsNPrfX5Mz0iBZCefbWEtmqeABn3o5IgkpW/rhSmsyu8UcCoq91O+Yb9+8qlcsJyjcLECd+wgkpN926vcg/LMTWUW6Oq8x1a6mM8Bw1u9kT0eZGgKvu0CZpv3bpgVAWbfGW3aTM/0moWjHa3amJaL0DPjF8Pe9ujUDlqVEiPHznzfS+aVB+M3DtjfNEMysab77imICRs39cm6N/XAz+CNnSuP+W4WPfbZZ+3xWU4BgS7YXd/AM5rlI9sXNQQgzVmQttNo', + version: '0.3', + creationDate: 'Thu Oct 01 16:21:50 PDT 2009', + updateDate: 'Thu Oct 01 16:21:50 PDT 2009', + accessDate: 'Tue Feb 09 08:56:46 PST 2010' + }, + 'ac353e86f69528d21dad0b17d00bbfb3e56c954e2ba71d0d091c903880ba1479': { + header: '####', + data: 'DGvb5Ur86eYxzJrqITEX5XqtGQT3QiaR66B2vw5F+6fo6cxWwCztnoEFyLUPzZGWqYMIIwA2rKaNBW0PxO1ehu7kyyQ/Tj42g64JiI4sVtb47W5/En2blTtkPe1FjpBiVW9ZaTDo4ia2wMzrBxTpUJ/NCT/Hn/xAyhZrafL+SN8U94F/FX6n5x98fV9KwrtjPpqeDEtfwheiEzws4qoPy1arXgnaECxOFnri7KpjwE8WVzwbU/WFOGPewKY4bLcba4pp1KjjObhVcYyj3K+GkSHeXyBDQqZi1grKvGOGvoZkFr7CDndseaXZ8og3A+NpqPcOzbqNst97gsky2RWc7bD2MfyAJ+QHzw5uDFCoKnAv5VH1HxwkShLb2QswQFf9/AGT3IDFi6ssvELk8xSMTgICV9jUwcTwkjkBa1Zpf4GTr6qrzen4YzNeK6XxgAqueKFbJoC8p0l1dBGBoH5zP0bkh3QENEFk67FT3aXUtInP7ZDX9Fnbe6qPkoztgmG7TukNUs2pk1Z/iJTVrUdLTVtwFI56LaTfRT8Ica+yFJc+1zoKeEg9LKcnbgfPY6WK58o1vXlhYb8j', + version: '0.3', + previousVersion: 'c84928db21b880a53e7ba1e51eebc4acc4b2bffe66f30368b8b7070973f5912a', + previousVersionKey: 'vy7sCLt6q3xaMngGjJxVLcYe60vW0LHXDVZGo7QWZCIOjK26Yn9JvpeAi4rKJ0/ggGGyYJncqHVr68u/VHuwJRUmlRb7JRk5k9gJOyuroyx5wg==', + creationDate: 'Tue Feb 09 08:57:03 PST 2010', + updateDate: 'Tue Feb 09 08:57:03 PST 2010', + accessDate: 'Tue Feb 09 08:57:03 PST 2010' + } + } + } + } + } + }, + + 'onetimePasswords': { + // OTP: 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg' (test) + 'c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38': { // reference + 'reference': "c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38", + 'user': "9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8", + 'status': 'ACTIVE', // 1: 'ACTIVE', 2: 'REQUESTED', 3: 'USED', 4: 'DISABLED' + 'creation_date': "2010-02-09 17:57:14", + 'request_date': "4001-01-01 09:00:00", + 'usage_date': "4001-01-01 09:00:00", + 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102", + "key_checksum": "53739910c97d74c80c6028eb3293ffbc652def811d9aa11725fefa3139dfcf29", + "data": "aN3rPl5rusBWXveUpjKqZNFLRPWJgH2Zs8HYQIaS65QObQFWFTZ8lRpBXFoPlvSOHcHQpEavZUuq31Y/2Y9sI/scvmZjQ8UEaT2GY9NiWJVswGq1W3AX8zs32jOgf1L5iBVxK54mfig2vXFoL8lG0JGGY1zHZXlkCvFPWuvwuCcH+uRE0oP3it0FvNFBV4+TiiGnGYgD9LPAVevzr/Doq5UXjn9VplVU+upeDTWY+7rlOdIOnZG/A9P9/dQtsyMb5c5zABD2FNpQQ40JDfG/nHt5WvfuWmPwUisW1181oBAd5BwF9LgVHdrhcSh8OuUL7rdbKTPTlWT826I6JNrFMzYGMY+NV6gllDvc6eCNrgI98ABhL1AoZNpAXXuCy4uQhEYmj+O71C/eXEDw+crMAXiCn6SZrbTM8GT5TQ5yF2NcxhudopO4qoILjnwEHZZ+i37kRDFg6oCBccCD67oHTPexUkSqnKIIYLli5CdmE7UdvX6LuVG/VYJKevOUgMf0UzHDPgvtlp3gsSo09TfNPOtoeAiogL6cAHb1seZwv+6E8Pz7WqkkOTsBQYeHIfPE0OnQPDtUjVRA5MTTX5zt6rCCNDKNbqfkPu8V4am26ykaWOSTXZYIcfnywkG0TfPzdAyQvyxdUyl/r1b36bclQFiXcRzkz9zS9xx14Il3QjYXRbIFWcwm/mEFltBFPdATKo5Zh+wcTLiFh56YEUVa9/h6oN8281X6zxH4DOw=", + 'version': "0.3" + }, + + // OTP: '8tyx g33t - zmnc wye1 - rw50 77r3 - y5fw zda9' (joe) - BROKEN + 'd799007a02896ab97665e1783f3a2f6b35a6ffbaaaec1b7ec8d872d6f33e6f0b' : { + "reference":"d799007a02896ab97665e1783f3a2f6b35a6ffbaaaec1b7ec8d872d6f33e6f0b", + "key":"9f09af59a7533b8a3e9d24754eab48ad0f638804c9c93df528b5edb898e6f41c", + "keyChecksum":"8bf28eb21866718f57a0f8ee5525793887d2234079a37f29b1eaa9d5ce0c014e", + "data":"irgna+/uEypFTkFPYldc15FmkMgXwpep9exT2zGxkcGLz8IllqZt6U17zTVP16UpQw4Pk0dRU2CcRpM42y3TXkLnxSgKC7R03nGBvpjG5Xegl/mlg/V9cxdJCiQ6J4P3G6UzMP5hMqcs9jfS1HyBekYkmwtngauelMjg6DTe5YDMfFiYiTjgEiN23FBETNlneZ6CRV4SBWSk5RHqjqAX5IHPgmoUytbj+uEI7Byi3C9TIdqPDuT0K0PEJMS2sASW/FZX8rz39Zsq6L8WheKk/C9KhZrmUOKHeZocdZMjTwZ8HeyRHOjlkwBoAfw9hmJyVz6Ngj7mWR5p6XKwNYSX9cEquV3YmEpH+8bLUoHnkBJiSbqMO4vpvaKq/Q/w4hrApOIk5FI+pp+yNeYeJG5QFbAbbwiC6MH4mIdIJVDCicEH2aoCsW7uTyC/GRQv9/fJEip4mCWbSPKlmHXdw6w9dTZRNOoq0BAo5EAISQ3WKhhq90FyGwW3d+CsKnJwNmLm/McgRLj19kT8x/eMFcik3fbWDL8a3icziCOxdq7sde6R5ShtMRFeR8DKV8yx0ZD4Ep/t2Nfo9WxWpeNi22DwUFme6niLZmUHhxwgJacgJc2HWhEVbcaEe5Upc6mwREvk+D4AuDjt7EtmEYl+NGGjTBRTv+uZEsh2mn/jmGeyhHMsgh8AtjwRHIfj1mbapxFAkpFA23aAUmB8Xij44El8Y1oRndiljWuTGBCTEqU=", + "version":"0.4", + "user":"f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674", + "status":"ACTIVE", + "creation_date":"2015-06-11 16:39:27", + "request_date":"4001-01-01 09:00:00", + "usage_date":"4001-01-01 09:00:00" + } } } diff --git a/frontend/delta/js/xDate/xdate.js b/frontend/delta/js/xDate/xdate.js new file mode 100644 index 0000000..b2dedc9 --- /dev/null +++ b/frontend/delta/js/xDate/xdate.js @@ -0,0 +1,859 @@ +/* + +Copyright 2008-2015 Clipperz Srl + +This file is part of Clipperz, the online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz. If not, see http://www.gnu.org/licenses/. + +*/ + +/** + * @preserve XDate v@VERSION + * Docs & Licensing: http://arshaw.com/xdate/ + */ + +/* + * Internal Architecture + * --------------------- + * An XDate wraps a native Date. The native Date is stored in the '0' property of the object. + * UTC-mode is determined by whether the internal native Date's toString method is set to + * Date.prototype.toUTCString (see getUTCMode). + * + */ + +var XDate = (function(Date, Math, Array, undefined) { + + +/** @const */ var FULLYEAR = 0; +/** @const */ var MONTH = 1; +/** @const */ var DATE = 2; +/** @const */ var HOURS = 3; +/** @const */ var MINUTES = 4; +/** @const */ var SECONDS = 5; +/** @const */ var MILLISECONDS = 6; +/** @const */ var DAY = 7; +/** @const */ var YEAR = 8; +/** @const */ var WEEK = 9; +/** @const */ var DAY_MS = 86400000; +var ISO_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss(.fff)"; +var ISO_FORMAT_STRING_TZ = ISO_FORMAT_STRING + "zzz"; + + +var methodSubjects = [ + 'FullYear', // 0 + 'Month', // 1 + 'Date', // 2 + 'Hours', // 3 + 'Minutes', // 4 + 'Seconds', // 5 + 'Milliseconds', // 6 + 'Day', // 7 + 'Year' // 8 +]; +var subjectPlurals = [ + 'Years', // 0 + 'Months', // 1 + 'Days' // 2 +]; +var unitsWithin = [ + 12, // months in year + 31, // days in month (sort of) + 24, // hours in day + 60, // minutes in hour + 60, // seconds in minute + 1000, // milliseconds in second + 1 // +]; +var formatStringRE = new RegExp( + "(([a-zA-Z])\\2*)|" + // 1, 2 + "(\\(" + "(('.*?'|\\(.*?\\)|.)*?)" + "\\))|" + // 3, 4, 5 (allows for 1 level of inner quotes or parens) + "('(.*?)')" // 6, 7 +); +var UTC = Date.UTC; +var toUTCString = Date.prototype.toUTCString; +var proto = XDate.prototype; + + + +// This makes an XDate look pretty in Firebug and Web Inspector. +// It makes an XDate seem array-like, and displays [ .toString() ] +proto.length = 1; +proto.splice = Array.prototype.splice; + + + + +/* Constructor +---------------------------------------------------------------------------------*/ + +// TODO: in future, I'd change signature for the constructor regarding the `true` utc-mode param. ~ashaw +// I'd move the boolean to be the *first* argument. Still optional. Seems cleaner. +// I'd remove it from the `xdate`, `nativeDate`, and `milliseconds` constructors. +// (because you can simply call .setUTCMode(true) after) +// And I'd only leave it for the y/m/d/h/m/s/m and `dateString` constructors +// (because those are the only constructors that need it for DST-gap data-loss reasons) +// Should do this for 1.0 + +function XDate() { + return init( + (this instanceof XDate) ? this : new XDate(), + arguments + ); +} + + +function init(xdate, args) { + var len = args.length; + var utcMode; + if (isBoolean(args[len-1])) { + utcMode = args[--len]; + args = slice(args, 0, len); + } + if (!len) { + xdate[0] = new Date(); + } + else if (len == 1) { + var arg = args[0]; + if (arg instanceof Date || isNumber(arg)) { + xdate[0] = new Date(+arg); + } + else if (arg instanceof XDate) { + xdate[0] = _clone(arg); + } + else if (isString(arg)) { + xdate[0] = new Date(0); + xdate = parse(arg, utcMode || false, xdate); + } + } + else { + xdate[0] = new Date(UTC.apply(Date, args)); + if (!utcMode) { + xdate[0] = coerceToLocal(xdate[0]); + } + } + if (isBoolean(utcMode)) { + setUTCMode(xdate, utcMode); + } + return xdate; +} + + + +/* UTC Mode Methods +---------------------------------------------------------------------------------*/ + + +proto.getUTCMode = methodize(getUTCMode); +function getUTCMode(xdate) { + return xdate[0].toString === toUTCString; +}; + + +proto.setUTCMode = methodize(setUTCMode); +function setUTCMode(xdate, utcMode, doCoercion) { + if (utcMode) { + if (!getUTCMode(xdate)) { + if (doCoercion) { + xdate[0] = coerceToUTC(xdate[0]); + } + xdate[0].toString = toUTCString; + } + }else{ + if (getUTCMode(xdate)) { + if (doCoercion) { + xdate[0] = coerceToLocal(xdate[0]); + }else{ + xdate[0] = new Date(+xdate[0]); + } + // toString will have been cleared + } + } + return xdate; // for chaining +} + + +proto.getTimezoneOffset = function() { + if (getUTCMode(this)) { + return 0; + }else{ + return this[0].getTimezoneOffset(); + } +}; + + + +/* get / set / add / diff Methods (except for week-related) +---------------------------------------------------------------------------------*/ + + +each(methodSubjects, function(subject, fieldIndex) { + + proto['get' + subject] = function() { + return _getField(this[0], getUTCMode(this), fieldIndex); + }; + + if (fieldIndex != YEAR) { // because there is no getUTCYear + + proto['getUTC' + subject] = function() { + return _getField(this[0], true, fieldIndex); + }; + + } + + if (fieldIndex != DAY) { // because there is no setDay or setUTCDay + // and the add* and diff* methods use DATE instead + + proto['set' + subject] = function(value) { + _set(this, fieldIndex, value, arguments, getUTCMode(this)); + return this; // for chaining + }; + + if (fieldIndex != YEAR) { // because there is no setUTCYear + // and the add* and diff* methods use FULLYEAR instead + + proto['setUTC' + subject] = function(value) { + _set(this, fieldIndex, value, arguments, true); + return this; // for chaining + }; + + proto['add' + (subjectPlurals[fieldIndex] || subject)] = function(delta, preventOverflow) { + _add(this, fieldIndex, delta, preventOverflow); + return this; // for chaining + }; + + proto['diff' + (subjectPlurals[fieldIndex] || subject)] = function(otherDate) { + return _diff(this, otherDate, fieldIndex); + }; + + } + + } + +}); + + +function _set(xdate, fieldIndex, value, args, useUTC) { + var getField = curry(_getField, xdate[0], useUTC); + var setField = curry(_setField, xdate[0], useUTC); + var expectedMonth; + var preventOverflow = false; + if (args.length == 2 && isBoolean(args[1])) { + preventOverflow = args[1]; + args = [ value ]; + } + if (fieldIndex == MONTH) { + expectedMonth = (value % 12 + 12) % 12; + }else{ + expectedMonth = getField(MONTH); + } + setField(fieldIndex, args); + if (preventOverflow && getField(MONTH) != expectedMonth) { + setField(MONTH, [ getField(MONTH) - 1 ]); + setField(DATE, [ getDaysInMonth(getField(FULLYEAR), getField(MONTH)) ]); + } +} + + +function _add(xdate, fieldIndex, delta, preventOverflow) { + delta = Number(delta); + var intDelta = Math.floor(delta); + xdate['set' + methodSubjects[fieldIndex]]( + xdate['get' + methodSubjects[fieldIndex]]() + intDelta, + preventOverflow || false + ); + if (intDelta != delta && fieldIndex < MILLISECONDS) { + _add(xdate, fieldIndex+1, (delta-intDelta)*unitsWithin[fieldIndex], preventOverflow); + } +} + + +function _diff(xdate1, xdate2, fieldIndex) { // fieldIndex=FULLYEAR is for years, fieldIndex=DATE is for days + xdate1 = xdate1.clone().setUTCMode(true, true); + xdate2 = XDate(xdate2).setUTCMode(true, true); + var v = 0; + if (fieldIndex == FULLYEAR || fieldIndex == MONTH) { + for (var i=MILLISECONDS, methodName; i>=fieldIndex; i--) { + v /= unitsWithin[i]; + v += _getField(xdate2, false, i) - _getField(xdate1, false, i); + } + if (fieldIndex == MONTH) { + v += (xdate2.getFullYear() - xdate1.getFullYear()) * 12; + } + } + else if (fieldIndex == DATE) { + var clear1 = xdate1.toDate().setUTCHours(0, 0, 0, 0); // returns an ms value + var clear2 = xdate2.toDate().setUTCHours(0, 0, 0, 0); // returns an ms value + v = Math.round((clear2 - clear1) / DAY_MS) + ((xdate2 - clear2) - (xdate1 - clear1)) / DAY_MS; + } + else { + v = (xdate2 - xdate1) / [ + 3600000, // milliseconds in hour + 60000, // milliseconds in minute + 1000, // milliseconds in second + 1 // + ][fieldIndex - 3]; + } + return v; +} + + + +/* Week Methods +---------------------------------------------------------------------------------*/ + + +proto.getWeek = function() { + return _getWeek(curry(_getField, this, false)); +}; + + +proto.getUTCWeek = function() { + return _getWeek(curry(_getField, this, true)); +}; + + +proto.setWeek = function(n, year) { + _setWeek(this, n, year, false); + return this; // for chaining +}; + + +proto.setUTCWeek = function(n, year) { + _setWeek(this, n, year, true); + return this; // for chaining +}; + + +proto.addWeeks = function(delta) { + return this.addDays(Number(delta) * 7); +}; + + +proto.diffWeeks = function(otherDate) { + return _diff(this, otherDate, DATE) / 7; +}; + + +function _getWeek(getField) { + return getWeek(getField(FULLYEAR), getField(MONTH), getField(DATE)); +} + + +function getWeek(year, month, date) { + var d = new Date(UTC(year, month, date)); + var week1 = getWeek1( + getWeekYear(year, month, date) + ); + return Math.floor(Math.round((d - week1) / DAY_MS) / 7) + 1; +} + + +function getWeekYear(year, month, date) { // get the year that the date's week # belongs to + var d = new Date(UTC(year, month, date)); + if (d < getWeek1(year)) { + return year - 1; + } + else if (d >= getWeek1(year + 1)) { + return year + 1; + } + return year; +} + + +function getWeek1(year) { // returns Date of first week of year, in UTC + var d = new Date(UTC(year, 0, 4)); + d.setUTCDate(d.getUTCDate() - (d.getUTCDay() + 6) % 7); // make it Monday of the week + return d; +} + + +function _setWeek(xdate, n, year, useUTC) { + var getField = curry(_getField, xdate, useUTC); + var setField = curry(_setField, xdate, useUTC); + + if (year === undefined) { + year = getWeekYear( + getField(FULLYEAR), + getField(MONTH), + getField(DATE) + ); + } + + var week1 = getWeek1(year); + if (!useUTC) { + week1 = coerceToLocal(week1); + } + + xdate.setTime(+week1); + setField(DATE, [ getField(DATE) + (n-1) * 7 ]); // would have used xdate.addUTCWeeks :( + // n-1 because n is 1-based +} + + + +/* Parsing +---------------------------------------------------------------------------------*/ + + +XDate.parsers = [ + parseISO +]; + + +XDate.parse = function(str) { + return +XDate(''+str); +}; + + +function parse(str, utcMode, xdate) { + var parsers = XDate.parsers; + var i = 0; + var res; + for (; i=0; i--) { + uniqueness.push(getField(i)); + } + } + return getField(fieldIndex); + } + + return _format(xdate, formatString, getFieldAndTrace, getSetting, useUTC); +} + + +function _format(xdate, formatString, getField, getSetting, useUTC) { + var m; + var subout; + var out = ''; + while (m = formatString.match(formatStringRE)) { + out += formatString.substr(0, m.index); + if (m[1]) { // consecutive alphabetic characters + out += processTokenString(xdate, m[1], getField, getSetting, useUTC); + } + else if (m[3]) { // parenthesis + subout = _format(xdate, m[4], getField, getSetting, useUTC); + if (parseInt(subout.replace(/\D/g, ''), 10)) { // if any of the numbers are non-zero. or no numbers at all + out += subout; + } + } + else { // else if (m[6]) { // single quotes + out += m[7] || "'"; // if inner is blank, meaning 2 consecutive quotes = literal single quote + } + formatString = formatString.substr(m.index + m[0].length); + } + return out + formatString; +} + + +function processTokenString(xdate, tokenString, getField, getSetting, useUTC) { + var end = tokenString.length; + var replacement; + var out = ''; + while (end > 0) { + replacement = getTokenReplacement(xdate, tokenString.substr(0, end), getField, getSetting, useUTC); + if (replacement !== undefined) { + out += replacement; + tokenString = tokenString.substr(end); + end = tokenString.length; + }else{ + end--; + } + } + return out + tokenString; +} + + +function getTokenReplacement(xdate, token, getField, getSetting, useUTC) { + var formatter = XDate.formatters[token]; + if (isString(formatter)) { + return _format(xdate, formatter, getField, getSetting, useUTC); + } + else if (isFunction(formatter)) { + return formatter(xdate, useUTC || false, getSetting); + } + switch (token) { + case 'fff' : return zeroPad(getField(MILLISECONDS), 3); + case 's' : return getField(SECONDS); + case 'ss' : return zeroPad(getField(SECONDS)); + case 'm' : return getField(MINUTES); + case 'mm' : return zeroPad(getField(MINUTES)); + case 'h' : return getField(HOURS) % 12 || 12; + case 'hh' : return zeroPad(getField(HOURS) % 12 || 12); + case 'H' : return getField(HOURS); + case 'HH' : return zeroPad(getField(HOURS)); + case 'd' : return getField(DATE); + case 'dd' : return zeroPad(getField(DATE)); + case 'ddd' : return getSetting('dayNamesShort')[getField(DAY)] || ''; + case 'dddd' : return getSetting('dayNames')[getField(DAY)] || ''; + case 'M' : return getField(MONTH) + 1; + case 'MM' : return zeroPad(getField(MONTH) + 1); + case 'MMM' : return getSetting('monthNamesShort')[getField(MONTH)] || ''; + case 'MMMM' : return getSetting('monthNames')[getField(MONTH)] || ''; + case 'yy' : return (getField(FULLYEAR)+'').substring(2); + case 'yyyy' : return getField(FULLYEAR); + case 't' : return _getDesignator(getField, getSetting).substr(0, 1).toLowerCase(); + case 'tt' : return _getDesignator(getField, getSetting).toLowerCase(); + case 'T' : return _getDesignator(getField, getSetting).substr(0, 1); + case 'TT' : return _getDesignator(getField, getSetting); + case 'z' : + case 'zz' : + case 'zzz' : return useUTC ? 'Z' : _getTZString(xdate, token); + case 'w' : return _getWeek(getField); + case 'ww' : return zeroPad(_getWeek(getField)); + case 'S' : + var d = getField(DATE); + if (d > 10 && d < 20) return 'th'; + return ['st', 'nd', 'rd'][d % 10 - 1] || 'th'; + } +} + + +function _getTZString(xdate, token) { + var tzo = xdate.getTimezoneOffset(); + var sign = tzo < 0 ? '+' : '-'; + var hours = Math.floor(Math.abs(tzo) / 60); + var minutes = Math.abs(tzo) % 60; + var out = hours; + if (token == 'zz') { + out = zeroPad(hours); + } + else if (token == 'zzz') { + out = zeroPad(hours) + ':' + zeroPad(minutes); + } + return sign + out; +} + + +function _getDesignator(getField, getSetting) { + return getField(HOURS) < 12 ? getSetting('amDesignator') : getSetting('pmDesignator'); +} + + + +/* Misc Methods +---------------------------------------------------------------------------------*/ + + +each( + [ // other getters + 'getTime', + 'valueOf', + 'toDateString', + 'toTimeString', + 'toLocaleString', + 'toLocaleDateString', + 'toLocaleTimeString', + 'toJSON' + ], + function(methodName) { + proto[methodName] = function() { + return this[0][methodName](); + }; + } +); + + +proto.setTime = function(t) { + this[0].setTime(t); + return this; // for chaining +}; + + +proto.valid = methodize(valid); +function valid(xdate) { + return !isNaN(+xdate[0]); +} + + +proto.clone = function() { + return new XDate(this); +}; + + +proto.clearTime = function() { + return this.setHours(0, 0, 0, 0); // will return an XDate for chaining +}; + + +proto.toDate = function() { + return new Date(+this[0]); +}; + + + +/* Misc Class Methods +---------------------------------------------------------------------------------*/ + + +XDate.now = function() { + return +new Date(); +}; + + +XDate.today = function() { + return new XDate().clearTime(); +}; + + +XDate.UTC = UTC; + + +XDate.getDaysInMonth = getDaysInMonth; + + + +/* Internal Utilities +---------------------------------------------------------------------------------*/ + + +function _clone(xdate) { // returns the internal Date object that should be used + var d = new Date(+xdate[0]); + if (getUTCMode(xdate)) { + d.toString = toUTCString; + } + return d; +} + + +function _getField(d, useUTC, fieldIndex) { + return d['get' + (useUTC ? 'UTC' : '') + methodSubjects[fieldIndex]](); +} + + +function _setField(d, useUTC, fieldIndex, args) { + d['set' + (useUTC ? 'UTC' : '') + methodSubjects[fieldIndex]].apply(d, args); +} + + + +/* Date Math Utilities +---------------------------------------------------------------------------------*/ + + +function coerceToUTC(date) { + return new Date(UTC( + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() + )); +} + + +function coerceToLocal(date) { + return new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds(), + date.getUTCMilliseconds() + ); +} + + +function getDaysInMonth(year, month) { + return 32 - new Date(UTC(year, month, 32)).getUTCDate(); +} + + + +/* General Utilities +---------------------------------------------------------------------------------*/ + + +function methodize(f) { + return function() { + return f.apply(undefined, [this].concat(slice(arguments))); + }; +} + + +function curry(f) { + var firstArgs = slice(arguments, 1); + return function() { + return f.apply(undefined, firstArgs.concat(slice(arguments))); + }; +} + + +function slice(a, start, end) { + return Array.prototype.slice.call( + a, + start || 0, // start and end cannot be undefined for IE + end===undefined ? a.length : end + ); +} + + +function each(a, f) { + for (var i=0; i div { @include flex(auto); - @include overflow-auto; + @include overflow-auto(); // overflow: auto; } @@ -233,6 +233,23 @@ input { height: 100%; // background-color: rgba( 0, 0, 0, 0.95); background-color: black; + + .extraFeature { + @include flexbox(); + @include flex-direction(column); + height: 100%; + + .header { + @include flex(none); + padding: 20px; + } + .content { + @include flex(auto); +// height: 100%; + padding: 0px 20px 20px 20px; + @include overflow-auto(); + } + } } } @@ -444,7 +461,7 @@ div.cardContent { @include flex(auto); // overflow-y: scroll; // overflow:auto; - @include overflow-auto; + @include overflow-auto(); } } } diff --git a/frontend/delta/scss/style/settingsPanel.scss b/frontend/delta/scss/style/settingsPanel.scss index 8a8ce7a..32fd62a 100644 --- a/frontend/delta/scss/style/settingsPanel.scss +++ b/frontend/delta/scss/style/settingsPanel.scss @@ -89,7 +89,7 @@ refer to http://www.clipperz.com. &.offlineCopy { cursor: default; - } + } } &.open { @@ -170,19 +170,25 @@ refer to http://www.clipperz.com. .extraFeatureContent { border-right: 1px solid #222; color: white; +// padding: 20px; header { display: none; } .extraFeature { - padding: 20px; + .header { +// padding-bottom: 20px; + + h1 { + font-size: 20pt; + } - h1 { - font-size: 20pt; - padding-bottom: 20px; + p { + padding: 10px 0px; + } } - + form { label { @@ -209,15 +215,19 @@ refer to http://www.clipperz.com. p { @include flexbox; @include flex-direction(row); + padding-top: 8px; input { width: 30px; @include flex(auto); } - - span { + + label { @include flex(auto); font-size: 12pt; + display: block; + cursor: pointer; + line-height: 1.5em; } } @@ -256,7 +266,7 @@ refer to http://www.clipperz.com. color: white; li { - padding-bottom: 40px; + padding-bottom: 30px; } } @@ -265,8 +275,9 @@ refer to http://www.clipperz.com. } .description { - max-width: 500px; +// max-width: 500px; padding: 10px 0px 20px 0px; +// padding-bottom: 20px; p { font-size: 10pt; @@ -277,11 +288,16 @@ refer to http://www.clipperz.com. em { text-decoration: underline; } + + &.warning { + font-weight: bold; + color: white; + } } } .button { - display: inline; + display: inline-block; color: white; background-color: $main-color; @@ -289,14 +305,462 @@ refer to http://www.clipperz.com. font-size: 14pt; border: 1px solid white; - padding: 6px 10px; + padding: 10px 14px; &:after { }; + + &.disabled { + background-color: #c0c0c0; + cursor: default; + } } } + .OTP { + height: 100%; + + .header { + .description { + padding-bottom: 0px; + + p { + margin-bottom: 0px; + padding-bottom: 0px; + } + } + } + + .actions { + padding-left: 9px; + padding-top: 6px; + + a { + @include icon-font(); + cursor: pointer; + font-size: 18pt; + line-height: 1.1em; + + &:hover { + color: green; + }; + } + } + .selectMenu { + margin-top: 1em; + + li { + display: inline-block; + margin-right: 1em; + padding:1em 0; + + // a { +// text-decoration: underline; +// cursor: pointer; +// } + } + } + + .otpList { + + .otpDetail { + $detailPadding: 5px; + $detailMargin: 4px; + $labelPadding: 5px; + + @include flexbox; + @include flex-direction(row); + + border: 1px solid #222; + @include border-radius(5px); + + padding: $detailPadding 0; + margin: $detailMargin 0; + + .otpAction { + width: 40px; + text-align: center; +// @include align-self(center); + + a { + @include icon-font(); + cursor: pointer; + font-size: 16pt; + line-height: 1.1em; + + &:hover { + color: red; + }; + } + } + + .otpInfo { + .otpPassword { + font-size: 14pt; + line-height: 1.3em; + @include user-select(text); + } + + .otpLabel { + + span { + font-size: 12pt; + color: gray; + padding: 4px 0px 4px 0px; + line-height: 1.3em; + cursor:pointer; + display: block; + } + + input { + font-size: 12pt; + color: gray; + width: 100%; + border: 0px; + padding: 2px; + padding-left: 0px; + margin: 0px; + margin-bottom: 1px; + background-color: #333; + } +// .undefinedLabel { +// color: gray; +// } + } + + .otpStatusInfo { + font-size: 8pt; + color: gray; + + span { + padding-right: 10px; + } + } + } + + &.REQUESTED, &.USED { + background-color: #222; + + .otpPassword { +// color: gray; + } + } + + } + } + .button { + margin:1em 1em 0 0; + } + + table { + tr { + td { + a { + font-size: small; + padding: 0 1em; + text-decoration: underline; + cursor: pointer; + } + } + } + } + } + + .dataImport { + + .content { + display: block; + height: 100%; + @include flexbox; + @include flex-direction(column); + + ul.stepNavbar { + @include flex(none); + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + font-size: 24pt; + + &.Input { + display: none; + } + + li { + display: inline-block; + padding: 0px; + padding-right: 10px; +// margin-right:1em; + + &.disabled { + color: gray; + } + + &.active { +// text-decoration: underline; + } + } + } + + .step { + @include flex(auto); + @include overflow-auto(); + + &.Input { + + .description { + + p { + width: 100%; + } + } + + form { + .dropArea { + width: calc(100% - 6px); + text-align: center; + height: inherit; + line-height: 2em; + + border: 3px dashed white; + background: black; + } + + p { + margin: 10px 50%; + + &.error { + color: red; + font-size: 10pt; + font-style: italic; + margin: 0px 0px 10px 0px; + } + } + + + textarea { + width:100%; + min-height:100px; + display: block; + margin: 1em 0; + border: 0; + } + } + } + + &.Preview { + li.card { + @include flexbox; + @include flex-direction(row); + padding-top: 15px; + padding-bottom: 0px; + border-bottom: 1px solid #333; + + &.archived { + background-color: #333; + } + + input { + width: 30px; + margin-top: 6px; + @include flex(none); + } + + div.cardContent { + @include flex(auto); + @include flexbox; + @include flex-direction(column); + height: auto; + + h3 { + font-size: 24pt; + padding-bottom: 6px; + } + + ul.tagList { + li { + display: inline-block; + padding-right: 10px; + padding-bottom: 5px; + + &:before { + content: 'tag'; + @include icon-font(); + font-size: 10pt; + padding-right: 5px; + line-height: 28px; + color: #ccc; + } + } + } + + dl { + dt { + font-size: 12pt; + color: gray; + line-height: 16pt; + } + + dd { + font-size: 16pt; + color: white; + line-height: 24pt; + padding-bottom: 6pt; + + &.PASSWORD { + font-family: clipperz-password; +// color: red; + } + } + } + + p { + font-size: 10pt; + padding-top: 10px; + padding-bottom: 10px; + } + } + } + } + + &.Import { + h5 { + padding-bottom: 15px; + } + } + table.csvTable { + width: 100%; + color: white; + border-collapse: collapse; + + thead { + background-color: gray; + + th { + align: left; + } + } + + tbody { + td { + align: right; + } + } + + td, th { + border: 1px solid #999; + padding: 0.5rem; + + &.PASSWORD { + font-family: clipperz-password; + font-size: 14.9pt; + line-height: 10pt; + } + } + + th { + background-color: #666; + + &.title { + background-color: #888; + } + + &.notes { + background-color: #aaa; + } + + input { + color: white; + border: 0px; + padding: 0px; + font-size: 12pt; + font-weight: bold; + background-color: inherit; + } + } + } + + } + + .buttons { + @include flex(none); + text-align: center; + padding-top: 10px; + + &.Input { + .button.back { + visibility: hidden; + } + } + + &.Import { + .button.next { + visibility: hidden; + } + } + + .button { +// border: 0px; + margin: 0px 5px; + span { + display: none; + } + + &.back { + background-color: #c0c0c0; + &:before { + content: '<<'; + } + } + + &.next { + + &.DISABLED { + background-color: #d3d3d3; + } + + &:after { + content: '>>'; + } + } + } + } +/* + .csvTable { + background: white; + margin: 1em 0; + } + + + .button { + margin-right:1em; + } + + .jsonPreview { + width: 100%; + height:80%; + overflow: auto; + margin-top:1em; + + h3 { + font-weight:bold; + } + + ul { + margin-bottom:1em; + padding-left:1em; + + li { + .label { + font-weight:bold; + } + } + } + } +*/ + } + } + /* .changePassphraseForm { label { @@ -327,11 +791,15 @@ refer to http://www.clipperz.com. } */ - + form { + input.valid + .invalidMsg, input.empty + .invalidMsg, input:focus + .invalidMsg, input.invalid:focus + .invalidMsg { + visibility: hidden; + } + + } } -} - - +} + .mainPage.narrow { #extraFeaturesPanel { .extraFeatureContent { diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html index 6b5a447..1f1194f 100644 --- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html +++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html @@ -41,6 +41,7 @@ refer to http://www.clipperz.com. + diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js index 611e4c6..512f120 100644 --- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js +++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js @@ -95,8 +95,8 @@ var tests = { newPassphrase = 'tset'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); - user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); - user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return otp;}}); + user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, 'test')}); + user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, otp)}); deferredResult = new Clipperz.Async.Deferred("changePassphraseAndLoginUsingOtp_test", someTestArgs); deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']); @@ -107,7 +107,7 @@ var tests = { deferredResult.addCallback(MochiKit.Base.itemgetter('length')); deferredResult.addTest(1, "This account has only a single card"); - deferredResult.addMethod(user, 'changePassphrase', newPassphrase); + deferredResult.addMethod(user, 'changePassphrase', MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase)); deferredResult.addMethod(user, 'logout'); deferredResult.addMethod(user2, 'login'); @@ -181,7 +181,145 @@ var tests = { return deferredResult; }, - //------------------------------------------------------------------------- + 'loginWithANewOTP_test': function(someTestArgs) { + var deferredResult; + var proxy; + var user; + var user2; + var user3; + var username; + var passphrase; + + username = "1"; + passphrase = "1"; + + proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); + user = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, passphrase)}); + user2 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}}); + user3 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}}); + + deferredResult = new Clipperz.Async.Deferred("loginUserWithANewOTP_test", someTestArgs); + deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']); + + deferredResult.addMethod(user, 'login'); + deferredResult.addMethod(user, 'getRecords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "This account has one single card"); + + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(0, "There should be no OTPs initially"); + + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.setValue('otpList'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "There should be one single OTP now"); + + deferredResult.getValue('otpList'); + deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); }); + deferredResult.addMethod(user2, 'setPassphraseFunction'), + deferredResult.addMethod(user, 'logout'); + deferredResult.addMethod(user2, 'login'); + + deferredResult.addMethod(user2, 'getRecords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "This account has one single card"); + + deferredResult.getValue('otpList'); + deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); }); + deferredResult.addMethod(user3, 'setPassphraseFunction'), + deferredResult.addMethod(user2, 'logout'); + deferredResult.addMethod(user3, 'login'); + deferredResult.shouldFail("Second login with the same OTP should fail"); + + deferredResult.callback(); + + return deferredResult; + }, + + 'deleteOTP_test': function(someTestArgs) { + var deferredResult; + var proxy; + var user; + var user2; + var username; + var passphrase; + + username = "1"; + passphrase = "1"; + + proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); + user = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, passphrase)}); + user2 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}}); + + deferredResult = new Clipperz.Async.Deferred("deleteOTP_test", someTestArgs); + deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']); + + deferredResult.addMethod(user, 'login'); + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(0, "There should be no OTPs initially"); + + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'createNewOTP'); + deferredResult.addMethod(user, 'createNewOTP'); + + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(6, "There should be 6 OTPs now"); + + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(function(aList) {return [aList[0].reference(), aList[1].reference()];}); + deferredResult.addMethod(user, 'deleteOTPs'); + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(4, "There should be 4 OTPs now"); + + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(function(aList) {return [aList[0].reference(), aList[1].reference(), aList[2].reference()];}); + deferredResult.addMethod(user, 'deleteOTPs'); + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "There should be 1 OTP now"); + + deferredResult.addMethod(user, 'getOneTimePasswords'); + deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); }); + deferredResult.addMethod(user2, 'setPassphraseFunction'); + deferredResult.addMethod(user, 'logout'); + deferredResult.addMethod(user2, 'login'); + deferredResult.addMethod(user2, 'getRecords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "Login with the remaining OTP should work"); + + deferredResult.addMethod(user2, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(1, "There should be 1 remaining OTP now"); + + deferredResult.collectResults({ + 'oneTimePasswords': MochiKit.Base.method(user2, 'getOneTimePasswords'), + 'oneTimePasswordsDetails': MochiKit.Base.method(user2, 'getOneTimePasswordsDetails') + }); + deferredResult.addCallback(function(someData) { + return someData['oneTimePasswordsDetails'][someData['oneTimePasswords'][0].reference()]['status']; + }); + deferredResult.addTest('USED', "The remaining OTP should have 'USED' status"); + + deferredResult.addMethod(user2, 'getOneTimePasswords'); + deferredResult.addCallback(function(aList) {return [aList[0].reference()];}); + deferredResult.addMethod(user2, 'deleteOTPs'); + deferredResult.addMethod(user2, 'getOneTimePasswords'); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(0, "There should be no OTPs left after the deletion of the last one"); + + deferredResult.callback(); + + return deferredResult; + }, + //------------------------------------------------------------------------- 'syntaxFix': MochiKit.Base.noop }; @@ -190,4 +328,4 @@ var tests = { //############################################################################# -SimpleTest.runDeferredTests("Clipperz.PM.DataModel.OneTimePassword", tests, {trace:false}); +SimpleTest.runDeferredTests("Clipperz.PM.DataModel.OneTimePassword", tests, {trace:true}); diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js index fce8d52..a9e0f54 100644 --- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js +++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js @@ -23,7 +23,7 @@ refer to http://www.clipperz.com. "use strict"; -Clipperz.PM.DataModel.Record.tagChar = '#'; // Simplify tests using a 'regular' char instead of an UTF-8 reserved one +// Clipperz.PM.DataModel.Record.tagChar = '#'; // Simplify tests using a 'regular' char instead of an UTF-8 reserved one Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); var tests = { @@ -80,6 +80,33 @@ var tests = { return deferredResult; }, + //------------------------------------------------------------------------- + 'createNewRecord_test': function(someTestArgs) { + var deferredResult; + var proxy; + var user; + + proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); + user = new Clipperz.PM.DataModel.User({username:"1", getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, "1")}); + + deferredResult = new Clipperz.Async.Deferred("deleteOTP_test", someTestArgs); + deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']); + + deferredResult.addMethod(user, 'login'); + deferredResult.addMethod(user, 'createNewRecord'); + deferredResult.setValue('newRecord'); + deferredResult.addMethodcaller('setLabel', "A record"); + deferredResult.getValue('newRecord'); + deferredResult.addMethodcaller('addField', {'label':"Field 1", 'value':"Value 1", 'isHidden':false}); + deferredResult.getValue('newRecord'); + deferredResult.addMethodcaller('label'); + deferredResult.addTest("A record", "Record returns the right value for label"); + + deferredResult.callback(); + + return deferredResult; + }, + //------------------------------------------------------------------------- 'createRecordWithoutAllRequiredParameters_test': function (someTestArgs) { @@ -1434,6 +1461,8 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re return filterRecordsWithRegExp(aUser, Clipperz.PM.DataModel.Record.regExpForSearch(aSearchTerm)); } + var tagChar = Clipperz.PM.DataModel.Record.tagChar; + proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); user = new Clipperz.PM.DataModel.User({username:'tag', getPassphraseFunction:function () { return 'tag';}}); @@ -1452,11 +1481,11 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re deferredResult.addMethod(user, 'getRecordsInfo', Clipperz.PM.DataModel.Record.defaultCardInfo); deferredResult.addCallback(MochiKit.Base.map, Clipperz.Base.itemgetter('_searchableContent')); deferredResult.addCallback(SimpleTest.eq, [ - 'Card 1 #Tag1 #Tag2 ', - 'Card 2 #Tag1 #Tag3 ', - 'Card 3 #Tag1 ', - 'Card 4 #Tag3 ', - 'Card 5 #Tag4 ', + 'Card 1 '+tagChar+'Tag1 '+tagChar+'Tag2 ', + 'Card 2 '+tagChar+'Tag1 '+tagChar+'Tag3 ', + 'Card 3 '+tagChar+'Tag1 ', + 'Card 4 '+tagChar+'Tag3 ', + 'Card 5 '+tagChar+'Tag4 ', 'Card 6 ' ]); @@ -1920,7 +1949,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re var deferredResult; var proxy; var user; - var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01' + var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83' var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); @@ -2002,7 +2031,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re var deferredResult; var proxy; var user; - var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01' + var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83' var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); @@ -2066,7 +2095,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re var deferredResult; var proxy; var user; - var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01' + var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83' // var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); @@ -2132,7 +2161,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re var deferredResult; var proxy; var user; - var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01' + var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83' // var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js index 55c07a6..40cf586 100644 --- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js +++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js @@ -1832,14 +1832,14 @@ testData = { }, 'onetimePasswords': { // OTP: 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg', - '7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102': { // reference + 'c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38': { // key 'reference': "c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38", 'user': "9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8", 'status': 'ACTIVE', // 1: 'ACTIVE', 2: 'REQUESTED', 3: 'USED', 4: 'DISABLED' 'creation_date': "2010-02-09 17:57:14", 'request_date': "4001-01-01 09:00:00", 'usage_date': "4001-01-01 09:00:00", -// 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102", + 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102", "key_checksum": "53739910c97d74c80c6028eb3293ffbc652def811d9aa11725fefa3139dfcf29", "data": "aN3rPl5rusBWXveUpjKqZNFLRPWJgH2Zs8HYQIaS65QObQFWFTZ8lRpBXFoPlvSOHcHQpEavZUuq31Y/2Y9sI/scvmZjQ8UEaT2GY9NiWJVswGq1W3AX8zs32jOgf1L5iBVxK54mfig2vXFoL8lG0JGGY1zHZXlkCvFPWuvwuCcH+uRE0oP3it0FvNFBV4+TiiGnGYgD9LPAVevzr/Doq5UXjn9VplVU+upeDTWY+7rlOdIOnZG/A9P9/dQtsyMb5c5zABD2FNpQQ40JDfG/nHt5WvfuWmPwUisW1181oBAd5BwF9LgVHdrhcSh8OuUL7rdbKTPTlWT826I6JNrFMzYGMY+NV6gllDvc6eCNrgI98ABhL1AoZNpAXXuCy4uQhEYmj+O71C/eXEDw+crMAXiCn6SZrbTM8GT5TQ5yF2NcxhudopO4qoILjnwEHZZ+i37kRDFg6oCBccCD67oHTPexUkSqnKIIYLli5CdmE7UdvX6LuVG/VYJKevOUgMf0UzHDPgvtlp3gsSo09TfNPOtoeAiogL6cAHb1seZwv+6E8Pz7WqkkOTsBQYeHIfPE0OnQPDtUjVRA5MTTX5zt6rCCNDKNbqfkPu8V4am26ykaWOSTXZYIcfnywkG0TfPzdAyQvyxdUyl/r1b36bclQFiXcRzkz9zS9xx14Il3QjYXRbIFWcwm/mEFltBFPdATKo5Zh+wcTLiFh56YEUVa9/h6oN8281X6zxH4DOw=", 'version': "0.3" @@ -1900,127 +1900,229 @@ testData = { }, // username: 'tag', passphrase: 'tag' "38d2354c878a06fbdcccc493a23fc6d9be06eebb4f66952bbc1b736824b123f9": { - "s": "e332fc34a678a6be7f025403c8007c1dff962cbae8acd1a490018ffb7477536d", - "v": "afa4836f22b8a1fbfb0b6a563c2356c0438ef9a9dd56877af8e8421d0706e300", - "version": "0.2", - "maxNumberOfRecords": "100", - "userDetails": '{"records":{"index":{"021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d":"0","ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8":"1","bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb":"2","5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee":"3","501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f":"4","b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa":"5"},"data":"EPB52oY8PC/GYaSORI9ytiiPIoDrIQrgu02OpI168mnT0BRtonqfvMUxejJ/nvgWCNgx7lCYMmGzaDCQtvmAj7q8DQHjgcG1HJS/BjaEJdlK+mIa0WmVED1nGi7HzZDP8XgeR6FSAS0MsIXqBI1BtOhPizWaQxQ7q/wiZpGwSMu4R8I/16u6bWNSdsIR52GkI2RXrXxit0BSs/ZHefCAEQVprygBJYTAsuBlI9UdOrtOG3ODCMGzzY69kC10YBPxEHgVdsJ8xGlM4QxrDoYcAXdqmHVNc8X3fsOSN6CdC+TPOYQ7kp7RsiWlAy/a26ASmfDioXikiEqSZ/m7Hz5EYBfdPIKzTf1HaTaj1EXPFwQ16Kkdyjlrc3OKl79Pe2JZ5lAfmf2aqHXxRFGk4aedDvwhMENdZYgea8IwBmmnalF+5U67gSY0YYe2ZixTnFKg1MRHAaGZSCJhZlbmcTKRzI4crNrRs03F9V10EfaUyIQdktRBNsKexQaJr1dxq524XJDSdIzu3A++8ks/khLFzrAQySWcjv2PmaFq/wf19HzVLOwJAkYv7Kp8AGpXpdNrtm2wNTiQ84a6KOuV8YW3jz8/m0VrsVe8wImHrih58lWi7SOHZ1y/ZjtSXwa8OEo/vdR3+SOFJujgYaoDcxLknMxXvjYjSUViLmAcHkM3SRx4ucGPlL9EOTFHhJJI3pynhubXYME/ujlkLRZEPQoSRKUWHAQ5X+O+1SwgPVPcSKqeEhM6kWhnXXpBWmUE+sSXfC4CC4Jqw+Mfrx6Mdx9ayep8ssge4ZIaDIVDUu3p2aEAQehwOvGzYec9jZfvhdODO0MK9cCV6D3iv8I="},"directLogins":{"index":{},"data":"VXRt7prFeG9+iLmWhkJVGKi9"},"preferences":{"data":"xPvWlbPo8iwq4OiL6BhiHWCg"},"oneTimePasswords":{"data":"UFam/MJzsuh7hiMUXruQrI94"},"version":"0.1"}', - "statistics": "Pf9V+hgwcEUMUbiYj7lhOvy/", - "userDetailsVersion": "0.4", - "records": { - "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d": { - "data": "coBU7HDciqWdtPrGoRE8x307+S0fXZPjdxCypClm9qXdQIJCTEohg8E3OHWydsZMI852VNgoIfhjv5+E8qzxCAwb+eh/2Lsv4+VWTi7MxVAgsqHk+NGOlpTzlBOtq/V86lZHuZajy4UWsLhoJvQxMNlV4Gryk+9G+MQv/ITYi/d6mRNMNQ==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:44:30 GMT 2014", - "updateDate": "Thu Jul 03 13:44:30 GMT 2014", - "accessDate": "Thu Jul 03 13:44:30 GMT 2014", - "currentVersion": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a", - "versions": { - "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a": { - "header": "####", - "data": "NXmNUj/dXJImYLfqLmCFJeJh7GI51jzCitJBZS6bDoD1YzNj98weM4fW7AweTpvloojR1/1bzrvuEk13YKRYeDqD3WLKDC1QpAhmBj7EPkYfmOFizPRTpb3i0CkH2HQ2+OqCi27BdrMbU2VTNgBAtGl2RLQYa9yLJpz6wD1Bone192X3BuxWp2/9h8gYVqrmfT/aN5UGZlGHtJscjoqQME0=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:44:30 GMT 2014", - "updateDate": "Thu Jul 03 13:44:30 GMT 2014", - "accessDate": "Thu Jul 03 13:44:30 GMT 2014" - } - } - }, - "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8": { - "data": "+vz60IxhoBYTxnCKoiEVmr9BVBKQ2vFtDyJqvpA468m6+ngCQZUAuyRvuTy7HGtHh/8Fc+VHZy6sjy6z5noVIhSG8uQnOpMj7lIxr471DC2suKgYzM3buiHehmzF8W+eNIOumyysAgQxvIXF/12zYVGiYUKBw9s9NgayeCXWZCktGyKp/w==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:44:54 GMT 2014", - "updateDate": "Thu Jul 03 13:44:54 GMT 2014", - "accessDate": "Thu Jul 03 13:44:54 GMT 2014", - "currentVersion": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc", - "versions": { - "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc": { - "header": "####", - "data": "tw4PEJ2+bpv69m2JlKlUo2TXTSWzhd5qVuuEXa78Fzz2TAA+SLIAn/0YMLMZqJpT9/UX2A5llYIg4tasSTiScdKduvLqTwjZ/wQL9zkWw9vlb5DwUboLHYTD24rLQDKtEuZtQzkds7cKmTS8JocHiePtOnw4WYav7d1mNrEFFz6RJU4RklG5T0ATN59UTg9uRseN4zSSIl21Np3kb7/QSEI=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:44:54 GMT 2014", - "updateDate": "Thu Jul 03 13:44:54 GMT 2014", - "accessDate": "Thu Jul 03 13:44:54 GMT 2014" - } - } - }, - "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb": { - "data": "TGS6lm8w6OVFEnyQkjzJnS/FWx1h0LgrdpJwRKMz+/o5pJi0S9KGSzihtc6iek2/Dqixqh/Nxi8fZY2tNsB6n50aNHR+gVX4LHhgQOpw/3aYcWMd9WIuwdMPKDY6RiCBDLwxCDuhtKDCsGkd105+v58h08wYeCc8WDEg2vsR1bXQQZMYQw==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:45:16 GMT 2014", - "updateDate": "Thu Jul 03 13:45:16 GMT 2014", - "accessDate": "Thu Jul 03 13:45:16 GMT 2014", - "currentVersion": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d", - "versions": { - "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d": { - "header": "####", - "data": "iNlrPeH/d9jtI91isY3r8n1QUtUYXVT1mhrRisyGwrpQo+4XCqMYattH31MrFh1hZCmplL0+vq8+bWo1JqA1HclSpAetyDIQ7NnlqGlnZYMBII3GgBfknHJRIlnm+RNFFQeOHWjhyL7YQVpmmC0ONJ++HaAmPxvOWzP1g/rKbsEoQyIBqqG32H3nxSU/bUVo+F5K5sfSNWnayPsDlEv5pNM=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:45:16 GMT 2014", - "updateDate": "Thu Jul 03 13:45:16 GMT 2014", - "accessDate": "Thu Jul 03 13:45:16 GMT 2014" - } - } - }, - "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee": { - "data": "vEEFjeDfMPr1ahbjPA56Su31uJvyXcOAfJ2SfCdd0xTld6tj7iRsh81g1UYw8W1nvyRg4ymSiXIwEmx5cyOa/lj7eWRM0AqFy3qfqSUJze8Xn8u9RYiE0rt4LZLSDk9FogvvMIXKDbCvUbmyPSA83bmjCvDkiCvhqY4MhwGE8Jk/liE3YQ==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:45:38 GMT 2014", - "updateDate": "Thu Jul 03 13:45:38 GMT 2014", - "accessDate": "Thu Jul 03 13:45:38 GMT 2014", - "currentVersion": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626", - "versions": { - "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626": { - "header": "####", - "data": "Ouu/BSyDHstyLcddZd1EsSQRWKTjQUt9kFNSYoxQOUBXWw+ukqDPPMXYZWggjrGAbT5hFf4yoEqi2VCCAdZT5juwmMrSEGZjoFSSw/e5OYH3ptoZAQ4ThNo75R2oJfI7/kUMKBeeXE4zykRYWv4aEOGHtSKpnzydGHnvDFfpxInFx2MH1eIYH+BpCujMDN0aDNFLRWl9isZ070DioTNgvI8=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:45:38 GMT 2014", - "updateDate": "Thu Jul 03 13:45:38 GMT 2014", - "accessDate": "Thu Jul 03 13:45:38 GMT 2014" - } - } - }, - "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f": { - "data": "7aTkEoBButGoPiXCpAfn+CrJpzfw5zau1kEBY2uWBJ3cAT3XbkDgAodPmU/HDTV1pb7+2a2sAnwThDWCSkJfMGG6i3eRlQJj9WZfIEIv0W7UDMGbZdhuweSEPTf7GMR4BtHPMgVgLToSn+YOc0tasavVGz3+rV9qNFf9Rf2PrGKFQkY7Kg==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:46:07 GMT 2014", - "updateDate": "Thu Jul 03 13:46:07 GMT 2014", - "accessDate": "Thu Jul 03 13:46:07 GMT 2014", - "currentVersion": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b", - "versions": { - "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b": { - "header": "####", - "data": "blB9bmxoEh//V40FoD9tLbQGyHiFAcLn9Rj4KDOp5DQRiLLlxqgvShShXEVtjUmiTjnHGlkNm6RQtZTaJrG84nV29QncBxLKMNnZKmqW2fXp2uyd4k+zzg4r7ilC29Vh1WP6bNxapwivDUw1n1Y9bEsX8LSAtCSIseIXszciSnLQ6ktyzBGzuDppc/cQ94TfGFKTSwZdts3d34Kxh8q0NTE=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:46:07 GMT 2014", - "updateDate": "Thu Jul 03 13:46:07 GMT 2014", - "accessDate": "Thu Jul 03 13:46:07 GMT 2014" - } - } - }, - "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa": { - "data": "cZQZboAoipwpOdCuvyXfS1T0ul0FnoWBAB0jqwQ282mWHjOBM/JI/7jk4z20qaYp/3XTGpVvbYPqvQn/+KyYiLT8aR/JkiFQ38wioaaq6X0Qg38Y2itPXMZjTnSGnf0boPf6mP8s9k8GGubuk4Gi1n4uJECLESX4In3VGq02hHcoxfZwMQ==", - "version": "0.4", - "creationDate": "Thu Jul 03 13:46:28 GMT 2014", - "updateDate": "Thu Jul 03 13:46:28 GMT 2014", - "accessDate": "Thu Jul 03 13:46:28 GMT 2014", - "currentVersion": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088", - "versions": { - "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088": { - "header": "####", - "data": "zOv15MnYpRcPyUoig13mGdWktiSLStCla0RVOp3laAEBBxplEao1RXWd/FOjKRmf2rx1Ma+s1s+CB1r2Z8t8VFRLDLQQk+m4LuGzY/QvHXbvcWMtNFxb8Ax464lX2w8FHZDBbcN29nfroeMX0Cq9oD6BKVrRdouUESHpX/oMDZ6VJRfZhv7ZIqdEET3+6u8Ub+OHdYyktYH4OHJTpW5eRc8=", - "version": "0.4", - "creationDate": "Thu Jul 03 13:46:28 GMT 2014", - "updateDate": "Thu Jul 03 13:46:28 GMT 2014", - "accessDate": "Thu Jul 03 13:46:28 GMT 2014" - } - } - } - } + "userDetailsVersion": "0.4", + "accountInfo": { + "features": [ + "UPDATE_CREDENTIALS", + "EDIT_CARD", + "CARD_DETAILS", + "ADD_CARD", + "DELETE_CARD", + "OFFLINE_COPY", + "LIST_CARDS" + ], + "paymentVerificationPending": false, + "currentSubscriptionType": "EARLY_ADOPTER", + "isExpiring": false, + "latestActiveLevel": "EARLY_ADOPTER", + "payments": [], + "featureSet": "FULL", + "latestActiveThreshold": "-1.00000000", + "referenceDate": "Wed, 17 June 2015 12:44:29 UTC", + "isExpired": false, + "expirationDate": "Mon, 01 January 4001 00:00:00 UTC" + }, + "s": "e332fc34a678a6be7f025403c8007c1dff962cbae8acd1a490018ffb7477536d", + "records": { + "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f": { + "reference": "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f", + "updateDate": "Thu, 03 July 2014 13:46:07 UTC", + "data": "7aTkEoBButGoPiXCpAfn+CrJpzfw5zau1kEBY2uWBJ3cAT3XbkDgAodPmU/HDTV1pb7+2a2sAnwThDWCSkJfMGG6i3eRlQJj9WZfIEIv0W7UDMGbZdhuweSEPTf7GMR4BtHPMgVgLToSn+YOc0tasavVGz3+rV9qNFf9Rf2PrGKFQkY7Kg==", + "accessDate": "Wed, 17 June 2015 12:44:07 UTC", + "versions": {"a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b": { + "reference": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b", + "updateDate": "Thu, 03 July 2014 13:46:07 UTC", + "data": "blB9bmxoEh//V40FoD9tLbQGyHiFAcLn9Rj4KDOp5DQRiLLlxqgvShShXEVtjUmiTjnHGlkNm6RQtZTaJrG84nV29QncBxLKMNnZKmqW2fXp2uyd4k+zzg4r7ilC29Vh1WP6bNxapwivDUw1n1Y9bEsX8LSAtCSIseIXszciSnLQ6ktyzBGzuDppc/cQ94TfGFKTSwZdts3d34Kxh8q0NTE=", + "accessDate": "Wed, 17 June 2015 12:44:07 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:46:07 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:46:07 UTC", + "version": "0.4", + "currentVersion": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b", + "oldestUsedEncryptedVersion": "0.4" + }, + "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee": { + "reference": "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee", + "updateDate": "Thu, 03 July 2014 13:45:38 UTC", + "data": "vEEFjeDfMPr1ahbjPA56Su31uJvyXcOAfJ2SfCdd0xTld6tj7iRsh81g1UYw8W1nvyRg4ymSiXIwEmx5cyOa/lj7eWRM0AqFy3qfqSUJze8Xn8u9RYiE0rt4LZLSDk9FogvvMIXKDbCvUbmyPSA83bmjCvDkiCvhqY4MhwGE8Jk/liE3YQ==", + "accessDate": "Wed, 17 June 2015 12:43:49 UTC", + "versions": {"211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626": { + "reference": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626", + "updateDate": "Thu, 03 July 2014 13:45:38 UTC", + "data": "Ouu/BSyDHstyLcddZd1EsSQRWKTjQUt9kFNSYoxQOUBXWw+ukqDPPMXYZWggjrGAbT5hFf4yoEqi2VCCAdZT5juwmMrSEGZjoFSSw/e5OYH3ptoZAQ4ThNo75R2oJfI7/kUMKBeeXE4zykRYWv4aEOGHtSKpnzydGHnvDFfpxInFx2MH1eIYH+BpCujMDN0aDNFLRWl9isZ070DioTNgvI8=", + "accessDate": "Wed, 17 June 2015 12:43:49 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:45:38 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:45:38 UTC", + "version": "0.4", + "currentVersion": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626", + "oldestUsedEncryptedVersion": "0.4" + }, + "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa": { + "reference": "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa", + "updateDate": "Thu, 03 July 2014 13:46:28 UTC", + "data": "cZQZboAoipwpOdCuvyXfS1T0ul0FnoWBAB0jqwQ282mWHjOBM/JI/7jk4z20qaYp/3XTGpVvbYPqvQn/+KyYiLT8aR/JkiFQ38wioaaq6X0Qg38Y2itPXMZjTnSGnf0boPf6mP8s9k8GGubuk4Gi1n4uJECLESX4In3VGq02hHcoxfZwMQ==", + "accessDate": "Fri, 10 April 2015 09:27:54 UTC", + "versions": {"b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088": { + "reference": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088", + "updateDate": "Thu, 03 July 2014 13:46:28 UTC", + "data": "zOv15MnYpRcPyUoig13mGdWktiSLStCla0RVOp3laAEBBxplEao1RXWd/FOjKRmf2rx1Ma+s1s+CB1r2Z8t8VFRLDLQQk+m4LuGzY/QvHXbvcWMtNFxb8Ax464lX2w8FHZDBbcN29nfroeMX0Cq9oD6BKVrRdouUESHpX/oMDZ6VJRfZhv7ZIqdEET3+6u8Ub+OHdYyktYH4OHJTpW5eRc8=", + "accessDate": "Fri, 10 April 2015 09:27:54 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:46:28 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:46:28 UTC", + "version": "0.4", + "currentVersion": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088", + "oldestUsedEncryptedVersion": "0.4" + }, + "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8": { + "reference": "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8", + "updateDate": "Thu, 03 July 2014 13:44:54 UTC", + "data": "+vz60IxhoBYTxnCKoiEVmr9BVBKQ2vFtDyJqvpA468m6+ngCQZUAuyRvuTy7HGtHh/8Fc+VHZy6sjy6z5noVIhSG8uQnOpMj7lIxr471DC2suKgYzM3buiHehmzF8W+eNIOumyysAgQxvIXF/12zYVGiYUKBw9s9NgayeCXWZCktGyKp/w==", + "accessDate": "Wed, 17 June 2015 12:43:13 UTC", + "versions": {"23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc": { + "reference": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc", + "updateDate": "Thu, 03 July 2014 13:44:54 UTC", + "data": "tw4PEJ2+bpv69m2JlKlUo2TXTSWzhd5qVuuEXa78Fzz2TAA+SLIAn/0YMLMZqJpT9/UX2A5llYIg4tasSTiScdKduvLqTwjZ/wQL9zkWw9vlb5DwUboLHYTD24rLQDKtEuZtQzkds7cKmTS8JocHiePtOnw4WYav7d1mNrEFFz6RJU4RklG5T0ATN59UTg9uRseN4zSSIl21Np3kb7/QSEI=", + "accessDate": "Wed, 17 June 2015 12:43:13 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:44:54 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:44:54 UTC", + "version": "0.4", + "currentVersion": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc", + "oldestUsedEncryptedVersion": "0.4" + }, + "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb": { + "reference": "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb", + "updateDate": "Thu, 03 July 2014 13:45:16 UTC", + "data": "TGS6lm8w6OVFEnyQkjzJnS/FWx1h0LgrdpJwRKMz+/o5pJi0S9KGSzihtc6iek2/Dqixqh/Nxi8fZY2tNsB6n50aNHR+gVX4LHhgQOpw/3aYcWMd9WIuwdMPKDY6RiCBDLwxCDuhtKDCsGkd105+v58h08wYeCc8WDEg2vsR1bXQQZMYQw==", + "accessDate": "Wed, 17 June 2015 12:43:36 UTC", + "versions": {"a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d": { + "reference": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d", + "updateDate": "Thu, 03 July 2014 13:45:16 UTC", + "data": "iNlrPeH/d9jtI91isY3r8n1QUtUYXVT1mhrRisyGwrpQo+4XCqMYattH31MrFh1hZCmplL0+vq8+bWo1JqA1HclSpAetyDIQ7NnlqGlnZYMBII3GgBfknHJRIlnm+RNFFQeOHWjhyL7YQVpmmC0ONJ++HaAmPxvOWzP1g/rKbsEoQyIBqqG32H3nxSU/bUVo+F5K5sfSNWnayPsDlEv5pNM=", + "accessDate": "Wed, 17 June 2015 12:43:36 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:45:16 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:45:16 UTC", + "version": "0.4", + "currentVersion": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d", + "oldestUsedEncryptedVersion": "0.4" + }, + "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d": { + "reference": "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d", + "updateDate": "Thu, 03 July 2014 13:44:30 UTC", + "data": "coBU7HDciqWdtPrGoRE8x307+S0fXZPjdxCypClm9qXdQIJCTEohg8E3OHWydsZMI852VNgoIfhjv5+E8qzxCAwb+eh/2Lsv4+VWTi7MxVAgsqHk+NGOlpTzlBOtq/V86lZHuZajy4UWsLhoJvQxMNlV4Gryk+9G+MQv/ITYi/d6mRNMNQ==", + "accessDate": "Wed, 17 June 2015 12:42:51 UTC", + "versions": {"d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a": { + "reference": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a", + "updateDate": "Thu, 03 July 2014 13:44:30 UTC", + "data": "NXmNUj/dXJImYLfqLmCFJeJh7GI51jzCitJBZS6bDoD1YzNj98weM4fW7AweTpvloojR1/1bzrvuEk13YKRYeDqD3WLKDC1QpAhmBj7EPkYfmOFizPRTpb3i0CkH2HQ2+OqCi27BdrMbU2VTNgBAtGl2RLQYa9yLJpz6wD1Bone192X3BuxWp2/9h8gYVqrmfT/aN5UGZlGHtJscjoqQME0=", + "accessDate": "Wed, 17 June 2015 12:42:51 UTC", + "header": "####", + "creationDate": "Thu, 03 July 2014 13:44:30 UTC", + "version": "0.4" + }}, + "creationDate": "Thu, 03 July 2014 13:44:30 UTC", + "version": "0.4", + "currentVersion": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a", + "oldestUsedEncryptedVersion": "0.4" + } + }, + "v": "afa4836f22b8a1fbfb0b6a563c2356c0438ef9a9dd56877af8e8421d0706e300", + "version": "0.2", + "userDetails": "{\"records\":{\"index\":{\"021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d\":\"0\",\"ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8\":\"1\",\"bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb\":\"2\",\"5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee\":\"3\",\"501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f\":\"4\",\"b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa\":\"5\"},\"data\":\"5oWOZGW\/lnLtQ\/JzAiZCP6gDN8A3Vpnona1uCdNl5j2n8Q5JHOrxG2hYbIpO1pQ0H3PrKsYrMqstuHggaTB0\/Rzm\/ficHaUWhRJqmQrrqu3S14UQ6Ts7ZE+me+JHC67dEMBxxSRvw9DMErR2ph1O1AUWlEqjqDt99UU6T\/mA\/0aqfJu9fsFC5AVk\/QH6Pzp8xMK1oX4AhB9H3hVZzWvIr2jYFTyVRldSfD5h1HKNt2cCyEWvAzSvBmIsTcTJIyah7Uv8ZVRk1zFTvdD2eWgNkKrQo8fMdCalw1cT7lQ3esccKllp1ydQZSNZ6365HYu1fC4negehCzMz5eu3Y\/Q236F2rZo63cXHQgDi38GWM+cdXL7JgXdPMfMudyCKIxJnFVFK5VzghMU\/n7i\/nYZD1K04Q\/E6fKP4kKkJlNd3JEpr\/nM9cVpWXB5ghrI4pvo3kxNy9DWVL5mD8eANmqZyNZqii2jTpPF+oZS8NtKWPSwLs8HbcnS\/eRVgv0pE8mLCp0nPxqfBHrlORX5phzSURONZZIvqxh\/s0uxYEQFuzFl2G+NhtbhL25Q4rLLUZrFAnlp1qgoH1sUl0B4WzEN8qw56uOtNesRv63NoETIhvOYNU89t4CsCnRznuWm774KWNnbuBXTiDw\/rreQU59PgXgr7BPuJFvzonqiDTiqRHVWDYnTP5YSWBwtEEr24vfCjWx1BmoxytH0hRhWcJOqJGW3rhLHkBTLg9rDUFBKR5HJbjzW1Htw\/Yhq9PzhRVbkTNdvVzVv6cMiFNeuJG2LyBeSe2ioDcyWSYmHedEYnn3PRXEJhD3AAdpANj2MGP5yvZ7dHNXGXz2DgkhRO24PoiHuehe2jMx9Zkw==\"},\"directLogins\":{\"index\":{},\"data\":\"Ud\/RyTy7CT291MeUshmhjoT6\"},\"preferences\":{\"data\":\"hseSN5pYGCAs144bQVlVHtop\"},\"oneTimePasswords\":{\"data\":\"2GS0OVjaU42kt4yinfQUXK6c\"},\"version\":\"0.1\"}", + "maxNumberOfRecords": 100, + "statistics": "Pf9V+hgwcEUMUbiYj7lhOvy/" } } };}(), + + + + //------------------------------------------------------------------------- + + '1/1_data': function () { return { + users:{ + 'catchAllUser': { + __masterkey_test_value__: 'masterkey', + s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', + v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' + }, + // username: '1', passphrase: '1' + "3073058ba04e7d35a161af27f07ddb24d603d2a6418b4140010b7cdb24ff4774": { + "userDetailsVersion": "0.4", + "accountInfo": { + "features": [ + "UPDATE_CREDENTIALS", + "EDIT_CARD", + "CARD_DETAILS", + "ADD_CARD", + "DELETE_CARD", + "OFFLINE_COPY", + "LIST_CARDS" + ], + "paymentVerificationPending": false, + "currentSubscriptionType": "EARLY_ADOPTER", + "isExpiring": false, + "latestActiveLevel": "EARLY_ADOPTER", + "payments": [], + "featureSet": "FULL", + "latestActiveThreshold": "-1.00000000", + "referenceDate": "Wed, 17 June 2015 13:43:24 UTC", + "isExpired": false, + "expirationDate": "Mon, 01 January 4001 00:00:00 UTC" + }, + "s": "a363479cf2f229466e01f32bfb783800745c740b4a955a83c0fbf561028bdba7", + "records": { + "327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83": { + "reference": "327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83", + "updateDate": "Wed, 17 June 2015 13:42:54 UTC", + "data": "SPU205djKKDJ7mg6txo5B9z0myET/8lcwjuT+IEMJVIw4JdBq+gXQ9cxESKQjvuuGnZyNRPzOKgfXlJTtgUwtPSwmpigrnUMilxcBtcpOkVe+kZXe+N1J7iMli1xVHfpmrhSEA8E+zZ4OEnGuHiJgX9qzNix15rbeZLX7bXBsWUowHuIvw==", + "accessDate": "Wed, 17 June 2015 13:42:54 UTC", + "versions": { + "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01": { + "reference": "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01", + "updateDate": "Wed, 17 June 2015 13:42:54 UTC", + "data": "Em0rLpHXv9IKtyVLWPGXeM6erk52v/1nYyh0DqT/UnL2pZjU4PRAPvKYZa5yhkx7QqgfWJNtdMUKbGN4DAfmKYcaAZZl0fcYRddAAduWUdG4Zuwk41hJ5gzomf0oqAtQU8lPK4VQFo1iyOctWVJ19h+/fZbUvLVzWOWXBMvItu054w+jHMDWF/hFuL09HQoyMz1JeXJroRTVx47pLbVVkUYNBOCz5FSTIRUqdmeSkaSiLtrLI0349SVrvPEXWPghGgKdWBiJCn/lFivmRKenJtGpxJwiV1CfQIS00JeyEFg+zqWBg31A8cp70NSHXVuprYbruWaMRdwZlI4PNl5JuzGdhL/z3iR+3TevcOIrHkvgH4/zVV+BHYlIPMpwj1zs4C0XNr+DF7F3FX3gCuU4CbMdzt6GoPYJnKAAfM+bZGQpAZp2sdzuZWdGi2EuHNicjLhdZF/TcbeGNjVG6RdliFvrqC+o0wet3OO7MRyHDU1AqWNPTgAo7gIp33DH0lf2HOtXJH8HjOXNSa7fgW5JhyfUxyddEONJwXUOL9KbkXsSElJjk+W0/QiWqw==", + "accessDate": "Wed, 17 June 2015 13:42:54 UTC", + "header": "####", + "creationDate": "Wed, 17 June 2015 13:42:54 UTC", + "version": "0.4" + } + }, + "creationDate": "Wed, 17 June 2015 13:42:54 UTC", + "version": "0.4", + "currentVersion": "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01", + "oldestUsedEncryptedVersion": "0.4" + } + }, + "v": "baef74012d85813dca18ab0218bb27c63ffabc414223f05c015b4b73485b8fed", + "version": "0.2", + "userDetails": "{\"records\":{\"index\":{\"327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83\":\"0\"},\"data\":\"HF+LSoX668EqFNltHvK7vaiO4srKLI5AzxXmlTssJNUCgSoWcvyE3psARFbnRamrUKHsFXipQypQjLH3W9eHNCt1im4GnxLGJskFJx0IjfYwrIJP1MNThUoz2EMMGAJiZS4WAFxnpMj3pD1JpFvNVtC+5B1NNQ==\"},\"directLogins\":{\"index\":{},\"data\":\"AJvILR1GywXePCwZd6HE27im\"},\"preferences\":{\"data\":\"5sK4mjoBQ3ONd4oKpxB9yWcV\"},\"oneTimePasswords\":{\"data\":\"J1yST9vO+PGreat6f8W7McqF\"},\"version\":\"0.1\"}", + "maxNumberOfRecords": 100, + "statistics": "h4SscRLQf8X+q5+Qhfs6MG44" + } + } + };}(), + + + + + + + //------------------------------------------------------------------------- /* 'tt/tt_data': function () { return { diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js index 616bc31..0093837 100644 --- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js +++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js @@ -2022,8 +2022,8 @@ console.log("PROXY", proxy); newPassphrase = 'zreppilc'; proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); - user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); - user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return newPassphrase;}}); + user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, 'clipperz')}); + user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase)}); deferredResult = new Clipperz.Async.Deferred("changePassphrase_test", someTestArgs); deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); @@ -2034,7 +2034,7 @@ console.log("PROXY", proxy); deferredResult.addCallback(MochiKit.Base.itemgetter('length')); deferredResult.addTest(20, "This account has oly a single card"); - deferredResult.addMethod(user, 'changePassphrase', newPassphrase); + deferredResult.addMethod(user, 'changePassphrase', MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase)); deferredResult.addMethod(user, 'logout'); deferredResult.addMethod(user2, 'login');