Merge pull request #76 from gcsolaroli/master
Password generator and tentative fix for login errors
This commit is contained in:
commit
5a8fe67f88
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,6 +1,252 @@
|
|||||||
{
|
{
|
||||||
"IcoMoonType": "selection",
|
"IcoMoonType": "selection",
|
||||||
"icons": [
|
"icons": [
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M972.8 512l-307.2-256v153.6h-358.4v204.8h358.4v153.6l307.2-256zM153.6 153.6h409.6v-102.4h-409.6c-56.32 0-102.4 46.080-102.4 102.4v716.8c0 56.32 46.080 102.4 102.4 102.4h409.6v-102.4h-409.6v-716.8z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"tags": [
|
||||||
|
"log-out"
|
||||||
|
],
|
||||||
|
"grid": 20
|
||||||
|
},
|
||||||
|
"attrs": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"order": 1,
|
||||||
|
"id": 0,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58889,
|
||||||
|
"name": "log-out",
|
||||||
|
"ligatures": "logout"
|
||||||
|
},
|
||||||
|
"setIdx": 0,
|
||||||
|
"setId": 10,
|
||||||
|
"iconIdx": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M81.613 270.643c24.986 13.466 371.149 199.373 384.051 206.285 12.851 6.912 29.542 10.24 46.336 10.24 16.845 0 33.536-3.328 46.387-10.291 12.902-6.912 359.014-192.819 384-206.285 25.037-13.414 48.691-55.552 2.765-55.552h-866.253c-45.926 0-22.323 42.138 2.714 55.603zM952.986 373.043c-28.416 14.848-377.19 197.171-394.598 206.285s-29.542 10.291-46.387 10.291c-16.794 0-28.928-1.178-46.336-10.291s-366.234-191.488-394.598-206.285c-20.019-10.445-19.866 1.792-19.866 11.213 0 9.421 0 375.552 0 375.552 0 21.504 28.621 49.152 50.79 49.152h820.070c22.221 0 50.739-27.648 50.739-49.101 0 0 0-366.131 0-375.552 0-9.472 0.205-21.709-19.814-11.264z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"mail",
|
||||||
|
"email",
|
||||||
|
"message",
|
||||||
|
"letter",
|
||||||
|
"envelope",
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 4,
|
||||||
|
"order": 19,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58894,
|
||||||
|
"name": "mail",
|
||||||
|
"ligatures": "email"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M819.2 102.4h-410.624c-56.32 0-101.376 45.056-101.376 101.376v410.624c0 56.32 46.080 102.4 102.4 102.4h409.6c56.32 0 102.4-46.080 102.4-102.4v-409.6c0-56.32-46.080-102.4-102.4-102.4zM819.2 614.4h-409.6v-409.6h409.6v409.6zM204.8 512h-102.4v307.2c0 56.32 46.080 102.4 102.4 102.4h307.2v-102.4h-307.2v-307.2z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"popup",
|
||||||
|
"popout",
|
||||||
|
"new window"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 35,
|
||||||
|
"order": 9,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58890,
|
||||||
|
"name": "popup",
|
||||||
|
"ligatures": "url, direct login"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M512 81.92c-237.568 0-430.080 192.614-430.080 430.080 0 237.568 192.563 430.080 430.080 430.080 237.517 0 430.080-192.563 430.080-430.080 0-237.517-192.563-430.080-430.080-430.080zM564.326 564.326v206.182h-104.653v-206.182h-206.234v-104.653h206.182v-206.234h104.704v206.182h206.182v104.704h-206.182z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"plus",
|
||||||
|
"add",
|
||||||
|
"sum"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 125,
|
||||||
|
"order": 14,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58895,
|
||||||
|
"name": "plus",
|
||||||
|
"ligatures": "add new field, create new OTP"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M512 81.92c-237.568 0-430.080 192.614-430.080 430.080 0 237.568 192.563 430.080 430.080 430.080 237.517 0 430.080-192.563 430.080-430.080 0-237.517-192.563-430.080-430.080-430.080zM600.525 512l156.723 156.723-88.525 88.525-156.723-156.723-156.723 156.723-88.474-88.525 156.672-156.723-156.672-156.672 88.474-88.525 156.723 156.672 156.723-156.672 88.525 88.474-156.723 156.723z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"cross",
|
||||||
|
"cancel",
|
||||||
|
"close",
|
||||||
|
"remove",
|
||||||
|
"delete"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 126,
|
||||||
|
"order": 17,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58898,
|
||||||
|
"name": "cross",
|
||||||
|
"ligatures": "remove field, remove tag, remove OTP"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 126
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M778.189 460.8h-215.040v-215.040c0-28.262-22.886-30.72-51.2-30.72-28.262 0-51.2 2.406-51.2 30.72l-0 215.040h-214.989c-28.314 0-30.72 22.938-30.72 51.2s2.406 51.2 30.72 51.2h214.989v215.040c0 28.262 22.938 30.72 51.2 30.72 28.314 0 51.2-2.458 51.2-30.72v-215.040h215.040c28.314 0 30.771-22.938 30.771-51.2s-2.458-51.2-30.771-51.2z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"plus",
|
||||||
|
"add",
|
||||||
|
"sum"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 128,
|
||||||
|
"order": 20,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58888,
|
||||||
|
"name": "plus3",
|
||||||
|
"ligatures": "add card"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 128
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M585.574 231.219c-21.402 20.89-230.502 240.435-230.502 240.435-11.418 11.162-17.101 25.754-17.101 40.346s5.683 29.184 17.101 40.346c0 0 209.101 219.546 230.502 240.384 21.402 20.89 59.904 22.323 82.739 0 22.784-22.272 24.576-53.35-0.051-80.64l-191.846-200.090 191.846-200.090c24.627-27.341 22.835-58.419 0.051-80.691-22.886-22.272-61.389-20.89-82.739-0z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"arrow-left",
|
||||||
|
"left",
|
||||||
|
"previous"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 205,
|
||||||
|
"order": 11,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58892,
|
||||||
|
"name": "arrow-left",
|
||||||
|
"ligatures": "back"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 205
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M438.426 231.219c21.402 20.89 230.502 240.435 230.502 240.435 11.469 11.162 17.152 25.754 17.152 40.346s-5.683 29.184-17.152 40.346c0 0-209.101 219.546-230.502 240.384-21.402 20.89-59.853 22.323-82.739 0-22.835-22.272-24.627-53.35 0-80.64l191.898-200.090-191.846-200.090c-24.627-27.341-22.835-58.419 0-80.691 22.835-22.272 61.338-20.89 82.688-0z"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"arrow-right",
|
||||||
|
"right",
|
||||||
|
"next"
|
||||||
|
],
|
||||||
|
"grid": 20,
|
||||||
|
"attrs": []
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 208,
|
||||||
|
"order": 12,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 58893,
|
||||||
|
"name": "arrow-right",
|
||||||
|
"ligatures": "show detail"
|
||||||
|
},
|
||||||
|
"setIdx": 8,
|
||||||
|
"setId": 0,
|
||||||
|
"iconIdx": 208
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M512 42l384 172v256q0 178-110 325t-274 187q-164-40-274-187t-110-325v-256zM512 512v382q118-38 200-143t98-239h-298zM512 512v-376l-298 132v244h298z"
|
||||||
|
],
|
||||||
|
"attrs": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"tags": [
|
||||||
|
"security"
|
||||||
|
],
|
||||||
|
"defaultCode": 57637,
|
||||||
|
"grid": 24
|
||||||
|
},
|
||||||
|
"attrs": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"order": 28,
|
||||||
|
"id": 293,
|
||||||
|
"prevSize": 24,
|
||||||
|
"code": 57637,
|
||||||
|
"name": "security",
|
||||||
|
"ligatures": "lock"
|
||||||
|
},
|
||||||
|
"setIdx": 1,
|
||||||
|
"setId": 9,
|
||||||
|
"iconIdx": 293
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"icon": {
|
"icon": {
|
||||||
"paths": [
|
"paths": [
|
||||||
@ -27,10 +273,37 @@
|
|||||||
"name": "label",
|
"name": "label",
|
||||||
"ligatures": "label"
|
"ligatures": "label"
|
||||||
},
|
},
|
||||||
"setIdx": 0,
|
"setIdx": 1,
|
||||||
"setId": 9,
|
"setId": 9,
|
||||||
"iconIdx": 678
|
"iconIdx": 678
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M447.938 350c-89.407 0-161.938 72.531-161.938 162 0 89.375 72.531 162.062 161.938 162.062 89.438 0 161.438-72.688 161.438-162.062-0.001-89.469-72.001-162-161.438-162zM772.625 605.062l-29.188 70.312 58.937 115.75-72.188 72.188-118.436-55.937-70.312 28.875-35.688 109.25-4.562 14.5h-102.032l-44.156-123.312-70.312-29-115.904 58.688-72.156-72.125 55.875-118.5-28.969-70.25-123.534-40.313v-101.969l123.406-44.219 28.969-70.188-51.906-102.469-6.844-13.438 72.062-72.062 118.594 55.844 70.219-29.031 35.656-109.188 4.594-14.468h102l44.188 123.469 70.125 29.031 116.062-58.813 72.125 72.062-55.875 118.406 28.875 70.345 123.75 40.25v101.938l-123.375 44.374z"
|
||||||
|
],
|
||||||
|
"width": 896,
|
||||||
|
"attrs": [],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"tags": [
|
||||||
|
"gear"
|
||||||
|
],
|
||||||
|
"defaultCode": 61487,
|
||||||
|
"grid": 16
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 64,
|
||||||
|
"order": 30,
|
||||||
|
"prevSize": 32,
|
||||||
|
"code": 61487,
|
||||||
|
"name": "gear",
|
||||||
|
"ligatures": "options"
|
||||||
|
},
|
||||||
|
"setIdx": 2,
|
||||||
|
"setId": 8,
|
||||||
|
"iconIdx": 64
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"icon": {
|
"icon": {
|
||||||
"paths": [
|
"paths": [
|
||||||
@ -53,10 +326,10 @@
|
|||||||
"order": 26,
|
"order": 26,
|
||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 59789,
|
"code": 59789,
|
||||||
"ligatures": "generate password",
|
"ligatures": "password generator",
|
||||||
"name": "key"
|
"name": "key"
|
||||||
},
|
},
|
||||||
"setIdx": 2,
|
"setIdx": 3,
|
||||||
"setId": 7,
|
"setId": 7,
|
||||||
"iconIdx": 141
|
"iconIdx": 141
|
||||||
},
|
},
|
||||||
@ -85,10 +358,73 @@
|
|||||||
"ligatures": "view password",
|
"ligatures": "view password",
|
||||||
"name": "eye"
|
"name": "eye"
|
||||||
},
|
},
|
||||||
"setIdx": 2,
|
"setIdx": 3,
|
||||||
"setId": 7,
|
"setId": 7,
|
||||||
"iconIdx": 206
|
"iconIdx": 206
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z",
|
||||||
|
"M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z"
|
||||||
|
],
|
||||||
|
"attrs": [],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"tags": [
|
||||||
|
"loop",
|
||||||
|
"repeat",
|
||||||
|
"player",
|
||||||
|
"reload",
|
||||||
|
"refresh",
|
||||||
|
"update",
|
||||||
|
"synchronize",
|
||||||
|
"arrows"
|
||||||
|
],
|
||||||
|
"defaultCode": 60839,
|
||||||
|
"grid": 16
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"order": 31,
|
||||||
|
"id": 1550,
|
||||||
|
"prevSize": 32,
|
||||||
|
"code": 59950,
|
||||||
|
"ligatures": "generate password",
|
||||||
|
"name": "loop2"
|
||||||
|
},
|
||||||
|
"setIdx": 3,
|
||||||
|
"setId": 7,
|
||||||
|
"iconIdx": 302
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon": {
|
||||||
|
"paths": [
|
||||||
|
"M512 992l480-480h-288v-512h-384v512h-288z"
|
||||||
|
],
|
||||||
|
"attrs": [],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"tags": [
|
||||||
|
"arrow-down",
|
||||||
|
"down",
|
||||||
|
"download",
|
||||||
|
"bottom"
|
||||||
|
],
|
||||||
|
"defaultCode": 60877,
|
||||||
|
"grid": 16
|
||||||
|
},
|
||||||
|
"attrs": [],
|
||||||
|
"properties": {
|
||||||
|
"id": 1069,
|
||||||
|
"order": 32,
|
||||||
|
"prevSize": 32,
|
||||||
|
"code": 59958,
|
||||||
|
"ligatures": "set password",
|
||||||
|
"name": "arrow-down"
|
||||||
|
},
|
||||||
|
"setIdx": 3,
|
||||||
|
"setId": 7,
|
||||||
|
"iconIdx": 310
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"icon": {
|
"icon": {
|
||||||
"paths": [
|
"paths": [
|
||||||
@ -111,7 +447,7 @@
|
|||||||
"name": "tag",
|
"name": "tag",
|
||||||
"ligatures": "tag"
|
"ligatures": "tag"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 0
|
"iconIdx": 0
|
||||||
},
|
},
|
||||||
@ -138,7 +474,7 @@
|
|||||||
"name": "tags",
|
"name": "tags",
|
||||||
"ligatures": "tags"
|
"ligatures": "tags"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 1
|
"iconIdx": 1
|
||||||
},
|
},
|
||||||
@ -165,7 +501,7 @@
|
|||||||
"name": "clock",
|
"name": "clock",
|
||||||
"ligatures": "recent"
|
"ligatures": "recent"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 2
|
"iconIdx": 2
|
||||||
},
|
},
|
||||||
@ -194,7 +530,7 @@
|
|||||||
"name": "spinner",
|
"name": "spinner",
|
||||||
"ligatures": "loading"
|
"ligatures": "loading"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 3
|
"iconIdx": 3
|
||||||
},
|
},
|
||||||
@ -222,7 +558,7 @@
|
|||||||
"name": "search",
|
"name": "search",
|
||||||
"ligatures": "search"
|
"ligatures": "search"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 4
|
"iconIdx": 4
|
||||||
},
|
},
|
||||||
@ -250,7 +586,7 @@
|
|||||||
"name": "locked",
|
"name": "locked",
|
||||||
"ligatures": "locked"
|
"ligatures": "locked"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 6
|
"iconIdx": 6
|
||||||
},
|
},
|
||||||
@ -276,7 +612,7 @@
|
|||||||
"name": "unlocked",
|
"name": "unlocked",
|
||||||
"ligatures": "unlocked"
|
"ligatures": "unlocked"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 7
|
"iconIdx": 7
|
||||||
},
|
},
|
||||||
@ -305,7 +641,7 @@
|
|||||||
"name": "menu",
|
"name": "menu",
|
||||||
"ligatures": "menu"
|
"ligatures": "menu"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 8
|
"iconIdx": 8
|
||||||
},
|
},
|
||||||
@ -334,7 +670,7 @@
|
|||||||
"name": "close",
|
"name": "close",
|
||||||
"ligatures": "failure, failed, delete, clear, cancel, close"
|
"ligatures": "failure, failed, delete, clear, cancel, close"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 9
|
"iconIdx": 9
|
||||||
},
|
},
|
||||||
@ -363,7 +699,7 @@
|
|||||||
"name": "checkmark",
|
"name": "checkmark",
|
||||||
"ligatures": "done, ok, save"
|
"ligatures": "done, ok, save"
|
||||||
},
|
},
|
||||||
"setIdx": 3,
|
"setIdx": 4,
|
||||||
"setId": 6,
|
"setId": 6,
|
||||||
"iconIdx": 10
|
"iconIdx": 10
|
||||||
},
|
},
|
||||||
@ -385,12 +721,12 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"order": 18,
|
"order": 18,
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"prevSize": 32,
|
"prevSize": 24,
|
||||||
"code": 58899,
|
"code": 58899,
|
||||||
"name": "commands",
|
"name": "commands",
|
||||||
"ligatures": "commands"
|
"ligatures": "commands"
|
||||||
},
|
},
|
||||||
"setIdx": 4,
|
"setIdx": 5,
|
||||||
"setId": 4,
|
"setId": 4,
|
||||||
"iconIdx": 0
|
"iconIdx": 0
|
||||||
},
|
},
|
||||||
@ -410,201 +746,14 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"order": 4,
|
"order": 4,
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"prevSize": 32,
|
"prevSize": 24,
|
||||||
"code": 58884,
|
"code": 58884,
|
||||||
"name": "logo",
|
"name": "logo",
|
||||||
"ligatures": "clipperz"
|
"ligatures": "clipperz"
|
||||||
},
|
},
|
||||||
"setIdx": 4,
|
"setIdx": 5,
|
||||||
"setId": 4,
|
"setId": 4,
|
||||||
"iconIdx": 1
|
"iconIdx": 1
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M81.613 270.643c24.986 13.466 371.149 199.373 384.051 206.285 12.851 6.912 29.542 10.24 46.336 10.24 16.845 0 33.536-3.328 46.387-10.291 12.902-6.912 359.014-192.819 384-206.285 25.037-13.414 48.691-55.552 2.765-55.552h-866.253c-45.926 0-22.323 42.138 2.714 55.603zM952.986 373.043c-28.416 14.848-377.19 197.171-394.598 206.285s-29.542 10.291-46.387 10.291c-16.794 0-28.928-1.178-46.336-10.291s-366.234-191.488-394.598-206.285c-20.019-10.445-19.866 1.792-19.866 11.213 0 9.421 0 375.552 0 375.552 0 21.504 28.621 49.152 50.79 49.152h820.070c22.221 0 50.739-27.648 50.739-49.101 0 0 0-366.131 0-375.552 0-9.472 0.205-21.709-19.814-11.264z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"mail",
|
|
||||||
"email",
|
|
||||||
"message",
|
|
||||||
"letter",
|
|
||||||
"envelope",
|
|
||||||
"contact"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 4,
|
|
||||||
"order": 19,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58894,
|
|
||||||
"name": "mail",
|
|
||||||
"ligatures": "email"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M819.2 102.4h-410.624c-56.32 0-101.376 45.056-101.376 101.376v410.624c0 56.32 46.080 102.4 102.4 102.4h409.6c56.32 0 102.4-46.080 102.4-102.4v-409.6c0-56.32-46.080-102.4-102.4-102.4zM819.2 614.4h-409.6v-409.6h409.6v409.6zM204.8 512h-102.4v307.2c0 56.32 46.080 102.4 102.4 102.4h307.2v-102.4h-307.2v-307.2z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"popup",
|
|
||||||
"popout",
|
|
||||||
"new window"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 35,
|
|
||||||
"order": 9,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58890,
|
|
||||||
"name": "popup",
|
|
||||||
"ligatures": "url, direct login"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 35
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M512 81.92c-237.568 0-430.080 192.614-430.080 430.080 0 237.568 192.563 430.080 430.080 430.080 237.517 0 430.080-192.563 430.080-430.080 0-237.517-192.563-430.080-430.080-430.080zM564.326 564.326v206.182h-104.653v-206.182h-206.234v-104.653h206.182v-206.234h104.704v206.182h206.182v104.704h-206.182z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"plus",
|
|
||||||
"add",
|
|
||||||
"sum"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 125,
|
|
||||||
"order": 14,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58895,
|
|
||||||
"name": "plus",
|
|
||||||
"ligatures": "add new field, create new OTP"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 125
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M512 81.92c-237.568 0-430.080 192.614-430.080 430.080 0 237.568 192.563 430.080 430.080 430.080 237.517 0 430.080-192.563 430.080-430.080 0-237.517-192.563-430.080-430.080-430.080zM600.525 512l156.723 156.723-88.525 88.525-156.723-156.723-156.723 156.723-88.474-88.525 156.672-156.723-156.672-156.672 88.474-88.525 156.723 156.672 156.723-156.672 88.525 88.474-156.723 156.723z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"cross",
|
|
||||||
"cancel",
|
|
||||||
"close",
|
|
||||||
"remove",
|
|
||||||
"delete"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 126,
|
|
||||||
"order": 17,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58898,
|
|
||||||
"name": "cross",
|
|
||||||
"ligatures": "remove field, remove tag, remove OTP"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 126
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M778.189 460.8h-215.040v-215.040c0-28.262-22.886-30.72-51.2-30.72-28.262 0-51.2 2.406-51.2 30.72l-0 215.040h-214.989c-28.314 0-30.72 22.938-30.72 51.2s2.406 51.2 30.72 51.2h214.989v215.040c0 28.262 22.938 30.72 51.2 30.72 28.314 0 51.2-2.458 51.2-30.72v-215.040h215.040c28.314 0 30.771-22.938 30.771-51.2s-2.458-51.2-30.771-51.2z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"plus",
|
|
||||||
"add",
|
|
||||||
"sum"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 128,
|
|
||||||
"order": 20,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58888,
|
|
||||||
"name": "plus3",
|
|
||||||
"ligatures": "add card"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 128
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M585.574 231.219c-21.402 20.89-230.502 240.435-230.502 240.435-11.418 11.162-17.101 25.754-17.101 40.346s5.683 29.184 17.101 40.346c0 0 209.101 219.546 230.502 240.384 21.402 20.89 59.904 22.323 82.739 0 22.784-22.272 24.576-53.35-0.051-80.64l-191.846-200.090 191.846-200.090c24.627-27.341 22.835-58.419 0.051-80.691-22.886-22.272-61.389-20.89-82.739-0z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"arrow-left",
|
|
||||||
"left",
|
|
||||||
"previous"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 205,
|
|
||||||
"order": 11,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58892,
|
|
||||||
"name": "arrow-left",
|
|
||||||
"ligatures": "back"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 205
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"icon": {
|
|
||||||
"paths": [
|
|
||||||
"M438.426 231.219c21.402 20.89 230.502 240.435 230.502 240.435 11.469 11.162 17.152 25.754 17.152 40.346s-5.683 29.184-17.152 40.346c0 0-209.101 219.546-230.502 240.384-21.402 20.89-59.853 22.323-82.739 0-22.835-22.272-24.627-53.35 0-80.64l191.898-200.090-191.846-200.090c-24.627-27.341-22.835-58.419 0-80.691 22.835-22.272 61.338-20.89 82.688-0z"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"arrow-right",
|
|
||||||
"right",
|
|
||||||
"next"
|
|
||||||
],
|
|
||||||
"grid": 20,
|
|
||||||
"attrs": []
|
|
||||||
},
|
|
||||||
"attrs": [],
|
|
||||||
"properties": {
|
|
||||||
"id": 208,
|
|
||||||
"order": 12,
|
|
||||||
"prevSize": 32,
|
|
||||||
"code": 58893,
|
|
||||||
"name": "arrow-right",
|
|
||||||
"ligatures": "show detail"
|
|
||||||
},
|
|
||||||
"setIdx": 7,
|
|
||||||
"setId": 0,
|
|
||||||
"iconIdx": 208
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"height": 1024,
|
"height": 1024,
|
||||||
@ -631,7 +780,7 @@
|
|||||||
"showMetrics": true,
|
"showMetrics": true,
|
||||||
"showMetadata": false,
|
"showMetadata": false,
|
||||||
"autoHost": false,
|
"autoHost": false,
|
||||||
"embed": true,
|
"embed": false,
|
||||||
"showVersion": true,
|
"showVersion": true,
|
||||||
"ligaReset": "tags"
|
"ligaReset": "tags"
|
||||||
},
|
},
|
||||||
|
@ -21,6 +21,8 @@ refer to http://www.clipperz.com.
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
|
try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
|
||||||
throw "Clipperz.Crypto.AES depends on Clipperz.ByteArray!";
|
throw "Clipperz.Crypto.AES depends on Clipperz.ByteArray!";
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@ refer to http://www.clipperz.com.
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
|
try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
|
||||||
throw "Clipperz.Crypto.AES_2 depends on Clipperz.ByteArray!";
|
throw "Clipperz.Crypto.AES_2 depends on Clipperz.ByteArray!";
|
||||||
}
|
}
|
||||||
@ -804,10 +806,11 @@ MochiKit.Base.update(Clipperz.Crypto.AES_2, {
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
'deferredDecrypt': function(aKey, someData) {
|
'deferredDecrypt': function(aKey, someData) {
|
||||||
var deferredResult
|
var deferredResult
|
||||||
var nonce;
|
var nonce;
|
||||||
var message;
|
var message;
|
||||||
var key;
|
var key;
|
||||||
|
var executionContext;
|
||||||
|
|
||||||
key = new Clipperz.Crypto.AES_2.Key({key:aKey});
|
key = new Clipperz.Crypto.AES_2.Key({key:aKey});
|
||||||
nonce = someData.split(0, (128/8));
|
nonce = someData.split(0, (128/8));
|
||||||
|
@ -320,7 +320,6 @@ MochiKit.Base.update(Clipperz.PM.Crypto, {
|
|||||||
deferredResult.addCallback(MochiKit.Async.wait, 0.1);
|
deferredResult.addCallback(MochiKit.Async.wait, 0.1);
|
||||||
deferredResult.addCallback(Clipperz.Base.evalJSON);
|
deferredResult.addCallback(Clipperz.Base.evalJSON);
|
||||||
deferredResult.addErrback(function(anError) {
|
deferredResult.addErrback(function(anError) {
|
||||||
console.log("PIPPO_1", anError)
|
|
||||||
Clipperz.logError("Error while decrypting data [4]");
|
Clipperz.logError("Error while decrypting data [4]");
|
||||||
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
|
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
|
||||||
})
|
})
|
||||||
@ -403,7 +402,6 @@ console.log("PIPPO_1", anError)
|
|||||||
try {
|
try {
|
||||||
result = Clipperz.Base.evalJSON(value);
|
result = Clipperz.Base.evalJSON(value);
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
console.log("PIPPO_2", anError)
|
|
||||||
Clipperz.logError("Error while decrypting data [4]");
|
Clipperz.logError("Error while decrypting data [4]");
|
||||||
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
|
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ Clipperz.PM.UI.Components.Cards.EditClass = React.createClass({
|
|||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
'draggedFieldReference': null,
|
'draggedFieldReference': null,
|
||||||
|
'passwordGeneratorFieldReference': null,
|
||||||
'fromFieldPosition': -1,
|
'fromFieldPosition': -1,
|
||||||
'toFieldPosition': -1,
|
'toFieldPosition': -1,
|
||||||
'dropPosition': -1,
|
'dropPosition': -1,
|
||||||
@ -216,6 +217,19 @@ console.log("DROP"); //, anEvent);
|
|||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
setValueFromPasswordGenerator: function (aField, aTextAreaRef) {
|
||||||
|
var reference = this.props['_reference'];
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
return function (aValue) {
|
||||||
|
aField.setValue(aValue);
|
||||||
|
React.findDOMNode(self.refs[aTextAreaRef]).value = aValue;
|
||||||
|
|
||||||
|
self.setState({'passwordGeneratorFieldReference':null});
|
||||||
|
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'refreshCardEditDetail', reference);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
handleChange: function (anObject , aMethodName) {
|
handleChange: function (anObject , aMethodName) {
|
||||||
var reference = this.props['_reference'];
|
var reference = this.props['_reference'];
|
||||||
var method = MochiKit.Base.method(anObject, aMethodName);
|
var method = MochiKit.Base.method(anObject, aMethodName);
|
||||||
@ -270,6 +284,23 @@ console.log("DROP"); //, anEvent);
|
|||||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'refreshCardEditDetail', reference);
|
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'refreshCardEditDetail', reference);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
showPasswordGenerator: function (aField) {
|
||||||
|
var result;
|
||||||
|
|
||||||
|
if (aField['actionType'] == 'PASSWORD') {
|
||||||
|
var reference = this.props['_reference'];
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
result = function (anEvent) {
|
||||||
|
self.setState({'passwordGeneratorFieldReference':aField['_reference']});
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
toggleLock: function (aField) {
|
toggleLock: function (aField) {
|
||||||
var reference = this.props['_reference'];
|
var reference = this.props['_reference'];
|
||||||
|
|
||||||
@ -290,6 +321,10 @@ console.log("DROP"); //, anEvent);
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
closePasswordGenerator: function () {
|
||||||
|
this.setState({'passwordGeneratorFieldReference': null});
|
||||||
|
},
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
renderLabel: function (aLabel) {
|
renderLabel: function (aLabel) {
|
||||||
@ -320,6 +355,7 @@ console.log("DROP"); //, anEvent);
|
|||||||
var cardFieldClasses = {};
|
var cardFieldClasses = {};
|
||||||
var cardFieldValueClasses = {};
|
var cardFieldValueClasses = {};
|
||||||
var field = aField['_field'];
|
var field = aField['_field'];
|
||||||
|
var fieldValueRef = ref + '_textarea';
|
||||||
|
|
||||||
//console.log("RENDER FIELD", aField);
|
//console.log("RENDER FIELD", aField);
|
||||||
cardFieldClasses['cardField'] = true;
|
cardFieldClasses['cardField'] = true;
|
||||||
@ -355,12 +391,12 @@ console.log("DROP"); //, anEvent);
|
|||||||
React.DOM.input({'_className_':'_fieldLabel_', 'onChange':this.handleChange(field, 'setLabel'), 'defaultValue':aField['label'], 'placeholder': "label"}),
|
React.DOM.input({'_className_':'_fieldLabel_', 'onChange':this.handleChange(field, 'setLabel'), 'defaultValue':aField['label'], 'placeholder': "label"}),
|
||||||
]),
|
]),
|
||||||
React.DOM.div({'className':'fieldValue'}, [
|
React.DOM.div({'className':'fieldValue'}, [
|
||||||
// React.DOM.textarea({'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses), 'onChange':this.handleChange(field, 'setValue'), 'defaultValue':aField['value'], 'placeholder': "value"}),
|
(ref == this.state['passwordGeneratorFieldReference']) ? Clipperz.PM.UI.Components.Cards.PasswordGenerator({'field':aField, 'setValueCallback':this.setValueFromPasswordGenerator(field, fieldValueRef), 'closeClallback':this.closePasswordGenerator}) : null,
|
||||||
Clipperz.PM.UI.Components.Cards.TextArea({'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses), 'onChange':this.handleChange(field, 'setValue'), 'onKeyDown':this.handleKeyDown(field), 'defaultValue':aField['value'], 'placeholder': "value"}),
|
Clipperz.PM.UI.Components.Cards.TextArea({'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses), 'onChange':this.handleChange(field, 'setValue'), 'onKeyDown':this.handleKeyDown(field), 'defaultValue':aField['value'], 'placeholder':(aField['actionType'].toLowerCase() == 'password')?'':"value", 'ref':fieldValueRef}),
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
React.DOM.div({'className':'fieldAction'}, [
|
React.DOM.div({'className':'fieldAction'}, [
|
||||||
React.DOM.span({'className':'action'}, aField['actionType'].toLowerCase() == 'password' ? 'generate password' : aField['actionType'].toLowerCase()),
|
React.DOM.span({'className':'action ' + aField['actionType'], 'onClick':this.showPasswordGenerator(aField)}, aField['actionType'].toLowerCase() == 'password' ? 'password generator' : aField['actionType'].toLowerCase()),
|
||||||
React.DOM.span({'className':'toggleLock', 'onClick':this.toggleLock(field)}, aField['isHidden'] ? "locked" : "unlocked")
|
React.DOM.span({'className':'toggleLock', 'onClick':this.toggleLock(field)}, aField['isHidden'] ? "locked" : "unlocked")
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
|
@ -0,0 +1,221 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
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.Cards');
|
||||||
|
|
||||||
|
Clipperz.PM.UI.Components.Cards.PasswordGeneratorClass = React.createClass({
|
||||||
|
|
||||||
|
charsetBlocks: {
|
||||||
|
'chars_AZ': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
||||||
|
'chars_az': 'abcdefghijklmnopqrstuvwxyz',
|
||||||
|
'chars_09': '0123456789',
|
||||||
|
'chars_space': ' ',
|
||||||
|
'chars_other': '~`!@#$%^&*()-_=+,.<>/?[]{}\\|:;\'"'
|
||||||
|
},
|
||||||
|
|
||||||
|
gradientColors: ['#ff3236', '#e74030', '#cf4e2a', '#b75c24', '#9f6a1e', '#877818', '#6f8612', '#57940c', '#3fa206', '#25ad00', '#25ad00'],
|
||||||
|
|
||||||
|
getInitialState: function () {
|
||||||
|
return {
|
||||||
|
'length': 32,
|
||||||
|
'options': 'closed',
|
||||||
|
'chars_AZ': true,
|
||||||
|
'chars_az': true,
|
||||||
|
'chars_09': true,
|
||||||
|
'chars_space': false,
|
||||||
|
'chars_other': true,
|
||||||
|
'charset': '',
|
||||||
|
'password': '',
|
||||||
|
'entropy': 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
setPasswordValue: function () {
|
||||||
|
this.props['setValueCallback'](this.state['password']);
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleOptions: function () {
|
||||||
|
var options;
|
||||||
|
|
||||||
|
options = (this.state['options'] == 'closed') ? 'open' : 'closed';
|
||||||
|
this.setState({'options':options});
|
||||||
|
},
|
||||||
|
|
||||||
|
updateCharset: function () {
|
||||||
|
var charsetKeys = ['chars_AZ', 'chars_az', 'chars_09', 'chars_space', 'chars_other'];
|
||||||
|
var self = this;
|
||||||
|
var charset;
|
||||||
|
|
||||||
|
charset = MochiKit.Iter.reduce(function (acc, key) { return acc + self.charsetBlocks[key]}, MochiKit.Base.filter(function (key) { return self.state[key] == true;}, charsetKeys), '');
|
||||||
|
|
||||||
|
this.setState({'charset': charset});
|
||||||
|
MochiKit.Async.callLater(0.1, this.refreshPasswordValue);
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshPasswordValue: function () {
|
||||||
|
var charsetBitSize;
|
||||||
|
var passwordString;
|
||||||
|
var charset;
|
||||||
|
var passwordLength;
|
||||||
|
var randomBytes;
|
||||||
|
var blockIndex;
|
||||||
|
|
||||||
|
charset = this.state['charset'];
|
||||||
|
passwordLength = this.state['length'];
|
||||||
|
|
||||||
|
charsetBitSize = 0;
|
||||||
|
randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(50);
|
||||||
|
blockIndex = 0;
|
||||||
|
passwordString = "";
|
||||||
|
|
||||||
|
while (Math.pow(2, charsetBitSize) < charset.length) {
|
||||||
|
charsetBitSize ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (charsetBitSize > 0) {
|
||||||
|
// while (Clipperz.PM.Crypto.passwordEntropy(passwordString) < 128) {
|
||||||
|
while (passwordString.length < passwordLength) {
|
||||||
|
var randomValue;
|
||||||
|
|
||||||
|
if (((blockIndex + 1)*charsetBitSize) > (randomBytes.length() * 8)) {
|
||||||
|
randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(50);
|
||||||
|
blockIndex = 0;
|
||||||
|
}
|
||||||
|
randomValue = randomBytes.bitBlockAtIndexWithSize(blockIndex*charsetBitSize, charsetBitSize);
|
||||||
|
if (randomValue < charset.length) {
|
||||||
|
passwordString += charset.charAt(randomValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
blockIndex ++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
passwordString = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
'password': passwordString,
|
||||||
|
'entropy': Clipperz.PM.Crypto.passwordEntropy(passwordString)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshEntropyValue: function () {
|
||||||
|
this.setState({
|
||||||
|
'entropy': Clipperz.PM.Crypto.passwordEntropy(this.state['password'])
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
changeStateWithTargetValue: function (aKey, shouldUpdatePasswordValue) {
|
||||||
|
var self = this;
|
||||||
|
return function (anEvent) {
|
||||||
|
var newState = {};
|
||||||
|
|
||||||
|
newState[aKey] = anEvent.target.value;
|
||||||
|
self.setState(newState);
|
||||||
|
|
||||||
|
if (shouldUpdatePasswordValue) {
|
||||||
|
MochiKit.Async.callLater(0.1, self.refreshPasswordValue);
|
||||||
|
} else {
|
||||||
|
MochiKit.Async.callLater(0.1, self.refreshEntropyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
changeStateWithCheckbox: function (aKey) {
|
||||||
|
var self = this;
|
||||||
|
return function (anEvent) {
|
||||||
|
var newState = {};
|
||||||
|
|
||||||
|
newState[aKey] = anEvent.target.checked;
|
||||||
|
self.setState(newState);
|
||||||
|
|
||||||
|
MochiKit.Async.callLater(0.1, self.updateCharset);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// isPasswordField: function () {
|
||||||
|
// return this.props['field']['actionType'] == 'PASSWORD';
|
||||||
|
// },
|
||||||
|
|
||||||
|
componentDidMount: function () {
|
||||||
|
this.updateCharset();
|
||||||
|
this.refreshPasswordValue();
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function () {
|
||||||
|
var goodEntropy = 128;
|
||||||
|
var entropyPercentage;
|
||||||
|
var entropyWidth;
|
||||||
|
var entropyColor;
|
||||||
|
var result;
|
||||||
|
|
||||||
|
entropyPercentage = Math.min(this.state['entropy'] / goodEntropy * 100, 100);
|
||||||
|
entropyWidth = (100 - entropyPercentage)+ '%';
|
||||||
|
entropyColor = this.gradientColors[Math.floor(entropyPercentage / 10)];
|
||||||
|
|
||||||
|
result = React.DOM.div({'className':'passwordGenerator'}, [
|
||||||
|
React.DOM.div({'className':'passwordGeneratorMask', 'onClick':this.props['closeClallback']}),
|
||||||
|
React.DOM.div({'className':'passwordGeneratorBaloon'}, [
|
||||||
|
React.DOM.form({}, [
|
||||||
|
React.DOM.div({'className':'optionsWrapper'}, [
|
||||||
|
React.DOM.header({}, [
|
||||||
|
React.DOM.div({'className':'button', 'onClick':this.toggleOptions}, "options")
|
||||||
|
]),
|
||||||
|
React.DOM.div({'className':'options ' + this.state['options']}, [
|
||||||
|
React.DOM.div({'className':'length'}, [
|
||||||
|
React.DOM.span({}, "length"),
|
||||||
|
React.DOM.input({'type':'number', 'placehoder':"", 'value':this.state['length'], 'min':"1", 'max':"99", 'onChange':this.changeStateWithTargetValue('length', true), 'ref':'length'}),
|
||||||
|
]),
|
||||||
|
React.DOM.div({'className':'charList'}, [
|
||||||
|
React.DOM.span({}, "characters"),
|
||||||
|
React.DOM.div({'className':'charsetSets'}, [
|
||||||
|
React.DOM.label({}, [ React.DOM.input({'type':'checkbox', 'checked':this.state['chars_AZ'], 'onChange':this.changeStateWithCheckbox('chars_AZ')}), "A-Z"]),
|
||||||
|
React.DOM.label({}, [ React.DOM.input({'type':'checkbox', 'checked':this.state['chars_az'], 'onChange':this.changeStateWithCheckbox('chars_az')}), "a-z"]),
|
||||||
|
React.DOM.label({}, [ React.DOM.input({'type':'checkbox', 'checked':this.state['chars_09'], 'onChange':this.changeStateWithCheckbox('chars_09')}), "0-9"]),
|
||||||
|
React.DOM.label({}, [ React.DOM.input({'type':'checkbox', 'checked':this.state['chars_space'], 'onChange':this.changeStateWithCheckbox('chars_space')}), "space"]),
|
||||||
|
React.DOM.label({}, [ React.DOM.input({'type':'checkbox', 'checked':this.state['chars_other'], 'onChange':this.changeStateWithCheckbox('chars_other')}), "!#?"]),
|
||||||
|
]),
|
||||||
|
Clipperz.PM.UI.Components.Cards.TextArea({'rows':'1', 'value':this.state['charset'], 'onChange':this.changeStateWithTargetValue('charset', true)})
|
||||||
|
]),
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
React.DOM.div({'className':'passwordValue'}, [
|
||||||
|
React.DOM.div({'className':'passwordWrapper'}, [
|
||||||
|
Clipperz.PM.UI.Components.Cards.TextArea({'rows':'1', 'value':this.state['password'], 'onChange':this.changeStateWithTargetValue('password', false)}),
|
||||||
|
React.DOM.div({'className':'entropyWrapper', 'style':{'backgroundColor':entropyColor}}, [ React.DOM.div({'className':'entropy', 'style':{'width': entropyWidth}})])
|
||||||
|
]),
|
||||||
|
React.DOM.div({'className':'button setPasswordValue', 'onClick':this.setPasswordValue}, "set password"),
|
||||||
|
React.DOM.div({'className':'button generatePassword', 'onClick':this.refreshPasswordValue}, "generate password"),
|
||||||
|
]),
|
||||||
|
// React.DOM.div({'className':'button setValue', 'onClick':this.setPasswordValue})
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
|
//=========================================================================
|
||||||
|
});
|
||||||
|
|
||||||
|
Clipperz.PM.UI.Components.Cards.PasswordGenerator = React.createFactory(Clipperz.PM.UI.Components.Cards.PasswordGeneratorClass);
|
@ -1533,7 +1533,11 @@ console.log("THE BROWSER IS OFFLINE");
|
|||||||
newRecord = aValue;
|
newRecord = aValue;
|
||||||
return newRecord;
|
return newRecord;
|
||||||
},
|
},
|
||||||
MochiKit.Base.methodcaller('addField', {'label':"", 'value':"", 'isHidden':false}),
|
// MochiKit.Base.methodcaller('addField', {'label':"", 'value':"", 'isHidden':false}),
|
||||||
|
// function () { return newRecord; },
|
||||||
|
MochiKit.Base.methodcaller('addField', {'label':"username", 'value':"", 'hidden':false}),
|
||||||
|
function () { return newRecord; },
|
||||||
|
MochiKit.Base.methodcaller('addField', {'label':"password", 'value':"", 'hidden':true}),
|
||||||
function () { return newRecord; },
|
function () { return newRecord; },
|
||||||
MochiKit.Base.methodcaller('reference'),
|
MochiKit.Base.methodcaller('reference'),
|
||||||
MochiKit.Base.method(this, 'refreshUI'),
|
MochiKit.Base.method(this, 'refreshUI'),
|
||||||
|
@ -211,6 +211,7 @@
|
|||||||
"Clipperz/PM/UI/Components/Cards/CommandToolbar.js",
|
"Clipperz/PM/UI/Components/Cards/CommandToolbar.js",
|
||||||
"Clipperz/PM/UI/Components/Cards/EditToolbar.js",
|
"Clipperz/PM/UI/Components/Cards/EditToolbar.js",
|
||||||
"Clipperz/PM/UI/Components/Cards/TagEditor.js",
|
"Clipperz/PM/UI/Components/Cards/TagEditor.js",
|
||||||
|
"Clipperz/PM/UI/Components/Cards/PasswordGenerator.js",
|
||||||
|
|
||||||
"Clipperz/PM/UI/Components/AccountStatus.js",
|
"Clipperz/PM/UI/Components/AccountStatus.js",
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -437,7 +437,9 @@ $cardViewBasePadding: 10px;
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
.dragHandler {
|
|
||||||
|
|
||||||
|
.dragHandler3 {
|
||||||
// @include dotted-background();
|
// @include dotted-background();
|
||||||
@include cursor-grab();
|
@include cursor-grab();
|
||||||
|
|
||||||
@ -453,19 +455,62 @@ $cardViewBasePadding: 10px;
|
|||||||
height: 20px;
|
height: 20px;
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
display: block;
|
display: block;
|
||||||
/*
|
|
||||||
@include icon-font();
|
|
||||||
color: #aaa;
|
|
||||||
|
|
||||||
font-size: 15pt;
|
|
||||||
margin: $iconMargin;
|
|
||||||
margin-left: 10px;
|
|
||||||
*/
|
|
||||||
&:active {
|
&:active {
|
||||||
@include cursor-grabbing();
|
@include cursor-grabbing();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$dragHandlerHeight: 24px;
|
||||||
|
$dragHandlerWidth: 4px;
|
||||||
|
.dragHandler {
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: $dragHandlerWidth;
|
||||||
|
height: $dragHandlerHeight;
|
||||||
|
|
||||||
|
margin-left: 15px;
|
||||||
|
border:1px solid #E8E8E8;
|
||||||
|
// border:1px solid red;
|
||||||
|
border-top:0;
|
||||||
|
border-bottom:0;
|
||||||
|
@include cursor-grab();
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
@include cursor-grabbing();
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
content:'';
|
||||||
|
position: relative;
|
||||||
|
left:-1px;
|
||||||
|
// right:-2px;
|
||||||
|
height: 100%;
|
||||||
|
width: $dragHandlerWidth;
|
||||||
|
border:2px dotted #FFF;
|
||||||
|
// border:2px dotted blue;
|
||||||
|
border-top:0;
|
||||||
|
border-bottom:0;
|
||||||
|
z-index:2;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
content:'';
|
||||||
|
position: relative;
|
||||||
|
top: -$dragHandlerHeight;
|
||||||
|
left:0px;
|
||||||
|
right:0px;
|
||||||
|
height:100%;
|
||||||
|
border:1px solid #EEE;
|
||||||
|
// border:1px solid green;
|
||||||
|
border-top:0;
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fieldValues {
|
.fieldValues {
|
||||||
@ -495,7 +540,8 @@ $cardViewBasePadding: 10px;
|
|||||||
// height: 1.3em;
|
// height: 1.3em;
|
||||||
// outline: none;
|
// outline: none;
|
||||||
@include user-select(text);
|
@include user-select(text);
|
||||||
|
|
||||||
|
resize: none;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
|
|
||||||
@ -545,7 +591,11 @@ $cardViewBasePadding: 10px;
|
|||||||
|
|
||||||
&.PASSWORD {
|
&.PASSWORD {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #888;
|
||||||
|
};
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
@ -601,3 +651,216 @@ $cardViewBasePadding: 10px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
.passwordGenerator {
|
||||||
|
.passwordGeneratorMask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
z-index: 100;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.passwordGeneratorBaloon {
|
||||||
|
position: relative;
|
||||||
|
$passwordBaloonColor: #333;
|
||||||
|
$passwordBaloonBorder: 10px;
|
||||||
|
$borderRadius: 6px;
|
||||||
|
z-index: 101;
|
||||||
|
|
||||||
|
form {
|
||||||
|
position: absolute;
|
||||||
|
bottom: calc(100% + 4px);
|
||||||
|
left: 0;
|
||||||
|
min-width: 220px;
|
||||||
|
width: 80%;
|
||||||
|
max-width: 400px;
|
||||||
|
// padding: 10px;
|
||||||
|
background-color: $passwordBaloonColor;
|
||||||
|
color: #fff;
|
||||||
|
@include border-radius($borderRadius);
|
||||||
|
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
font-size: 9pt;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 8pt;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
resize: none;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: break-word;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.optionsWrapper {
|
||||||
|
header {
|
||||||
|
height: 12px;
|
||||||
|
border-bottom: 1px solid #666;
|
||||||
|
|
||||||
|
div {
|
||||||
|
content: "options";
|
||||||
|
@include icon-font();
|
||||||
|
// text-align: right;
|
||||||
|
font-size: 8pt;
|
||||||
|
line-height: 14px;
|
||||||
|
color: #999;
|
||||||
|
padding-left: 5px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
.options {
|
||||||
|
// height: inherit;
|
||||||
|
background-color: #888;
|
||||||
|
padding-left: $passwordBaloonBorder;
|
||||||
|
padding-right: $passwordBaloonBorder /* + 30px */;
|
||||||
|
padding-bottom: 3px;
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
// @include transition(height, 0.5s, ease-in);
|
||||||
|
|
||||||
|
&.closed {
|
||||||
|
height: 0px;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
border-bottom: 0px;
|
||||||
|
|
||||||
|
div {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.length {
|
||||||
|
padding-top: 2px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin-right: 3px;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: ':';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
// background-color: #888;
|
||||||
|
// color: white;
|
||||||
|
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 10pt;
|
||||||
|
// border: 0px;
|
||||||
|
text-align: right;
|
||||||
|
max-width: 50px;
|
||||||
|
|
||||||
|
&::-webkit-outer-spin-button {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.charList {
|
||||||
|
padding-top: 2px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 10px;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: ':';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.charsetSets {
|
||||||
|
display: inline-block;
|
||||||
|
align: right;
|
||||||
|
|
||||||
|
label {
|
||||||
|
span {
|
||||||
|
font-size: 10pt;
|
||||||
|
color: #eee;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
padding-right: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
color: gray;
|
||||||
|
min-height: 34px;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.passwordValue {
|
||||||
|
@include flexbox();
|
||||||
|
@include flex-direction(row);
|
||||||
|
@include align-content(stretch);
|
||||||
|
|
||||||
|
padding: $passwordBaloonBorder;
|
||||||
|
padding-top: 3px;
|
||||||
|
padding-right: 0px;
|
||||||
|
|
||||||
|
.passwordWrapper {
|
||||||
|
@include flex(auto);
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
font-size: 12pt;
|
||||||
|
font-weight: bold;
|
||||||
|
border: 0px;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.entropyWrapper {
|
||||||
|
width: 100%;
|
||||||
|
height: 2px;
|
||||||
|
|
||||||
|
.entropy {
|
||||||
|
height: 100%;
|
||||||
|
background-color: white;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
@include flex(none);
|
||||||
|
@include icon-font();
|
||||||
|
font-size: 14pt;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
width: 40px;
|
||||||
|
height: inherit;
|
||||||
|
|
||||||
|
&.setPasswordValue {
|
||||||
|
background-color: lighten($passwordBaloonColor, 5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: white;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user