From f04187d9552d6ca9f7c73782b35ad18e9d0ddbc7 Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 30 May 2023 08:58:55 +0200 Subject: [PATCH 01/37] upgrade bootstrap package and update first half of styles --- frontend/app/styles/app.scss | 25 ------------------- frontend/app/styles/nav-bar.scss | 4 --- .../templates/components/admin/user/table.hbs | 12 ++++----- .../components/encryptable/card-show.hbs | 2 +- .../templates/components/encryptable/row.hbs | 2 +- .../app/templates/components/folder/show.hbs | 4 +-- .../app/templates/components/side-nav-bar.hbs | 4 +-- .../components/team-member-configure.hbs | 6 ++--- .../app/templates/components/team/form.hbs | 4 +-- .../app/templates/components/team/show.hbs | 4 +-- 10 files changed, 19 insertions(+), 48 deletions(-) diff --git a/frontend/app/styles/app.scss b/frontend/app/styles/app.scss index 74f20ffef..3954f6e0f 100644 --- a/frontend/app/styles/app.scss +++ b/frontend/app/styles/app.scss @@ -48,10 +48,6 @@ $font-family-sans-serif: var(--pzsh-font-family) !default; flex-direction: row; } -.float-right { - float: right !important; -} - .pt-10 { padding-top: 10%; } @@ -71,13 +67,6 @@ $font-family-sans-serif: var(--pzsh-font-family) !default; margin-top: 1%; } -.ml-2 { - margin-left: 2%; -} -.ml-5 { - margin-left: 5%; -} - .mb-2 { margin-bottom: 2%; } @@ -122,24 +111,10 @@ li a { margin-bottom: 5px !important; } -.ml-5 { - margin-left: 5%; -} - .mt-32 { margin-top: 32px; } -.ml-15 { - margin-left: 15px; -} - -.ml-254 { - margin-left: 254px !important; -} -.ml-238 { - margin-left: 238px !important; -} .mt-60 { margin-top: 54px !important; } diff --git a/frontend/app/styles/nav-bar.scss b/frontend/app/styles/nav-bar.scss index 914fb3e0e..a9223c208 100644 --- a/frontend/app/styles/nav-bar.scss +++ b/frontend/app/styles/nav-bar.scss @@ -121,10 +121,6 @@ padding-left: 32px !important; } - .ml-238 { - margin-left: 238px !important; - } - .side-nav-bar-teams-list .list-group-item:hover { cursor: pointer; background-color: #1E5A96 !important; diff --git a/frontend/app/templates/components/admin/user/table.hbs b/frontend/app/templates/components/admin/user/table.hbs index 9f59da2b9..76d68017f 100644 --- a/frontend/app/templates/components/admin/user/table.hbs +++ b/frontend/app/templates/components/admin/user/table.hbs @@ -4,37 +4,37 @@ {{t "admin.users.index.username"}} - v + v {{t "admin.users.index.name"}} - v + v {{t "admin.users.index.last_login_at"}} - v + v {{t "admin.users.index.last_login_from"}} - v + v {{t "admin.users.index.auth"}} {{t "admin.users.index.provider_uid"}} - v + v {{t "admin.users.index.role"}} - v + v {{t "admin.users.index.action"}} diff --git a/frontend/app/templates/components/encryptable/card-show.hbs b/frontend/app/templates/components/encryptable/card-show.hbs index e8b4ee02a..322f5d45d 100644 --- a/frontend/app/templates/components/encryptable/card-show.hbs +++ b/frontend/app/templates/components/encryptable/card-show.hbs @@ -11,7 +11,7 @@
- key + key
diff --git a/frontend/app/templates/components/encryptable/row.hbs b/frontend/app/templates/components/encryptable/row.hbs index 96e5bb6ea..6e6c816d9 100644 --- a/frontend/app/templates/components/encryptable/row.hbs +++ b/frontend/app/templates/components/encryptable/row.hbs @@ -116,4 +116,4 @@ {{/if}} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/frontend/app/templates/components/folder/show.hbs b/frontend/app/templates/components/folder/show.hbs index fa92aac35..9ee3a2cde 100644 --- a/frontend/app/templates/components/folder/show.hbs +++ b/frontend/app/templates/components/folder/show.hbs @@ -31,9 +31,9 @@
{{#if this.isExpanded}} - v + v {{else}} - < + < {{/if}}
diff --git a/frontend/app/templates/components/side-nav-bar.hbs b/frontend/app/templates/components/side-nav-bar.hbs index f0179c061..5c19cefee 100644 --- a/frontend/app/templates/components/side-nav-bar.hbs +++ b/frontend/app/templates/components/side-nav-bar.hbs @@ -43,9 +43,9 @@ {{#if (not team.folders)}} {{else if (and team.folders (or (not (eq team this.navService.selectedTeam)) this.collapsed))}} - < + < {{else}} - v + v {{/if}} {{#if (or team.folders (eq team this.navService.selectedTeam))}} diff --git a/frontend/app/templates/components/team-member-configure.hbs b/frontend/app/templates/components/team-member-configure.hbs index be74e4222..917f6dec1 100644 --- a/frontend/app/templates/components/team-member-configure.hbs +++ b/frontend/app/templates/components/team-member-configure.hbs @@ -8,7 +8,7 @@
-
+
{{member.label}} {{#if member.admin}} - admin + admin {{else}} {{#if member.deletable}} - + remove {{/if}} diff --git a/frontend/app/templates/components/team/form.hbs b/frontend/app/templates/components/team/form.hbs index 21e7d4854..f88a1efe1 100644 --- a/frontend/app/templates/components/team/form.hbs +++ b/frontend/app/templates/components/team/form.hbs @@ -17,11 +17,11 @@
-
+
info
-
+
diff --git a/frontend/app/templates/components/team/show.hbs b/frontend/app/templates/components/team/show.hbs index 2c67dd4f0..73e807227 100644 --- a/frontend/app/templates/components/team/show.hbs +++ b/frontend/app/templates/components/team/show.hbs @@ -89,9 +89,9 @@
{{#if this.collapsed}} - < + < {{else}} - v + v {{/if}}
From 7f979cd1d15050eaabc35f5d1ac1f284da48361c Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 30 May 2023 09:13:18 +0200 Subject: [PATCH 02/37] update margin-right and padding to fit bootstrap version 5.3.0-alpha3 --- frontend/app/styles/app.scss | 4 ---- frontend/app/templates/components/encryptable/card-show.hbs | 6 +++--- frontend/app/templates/components/encryptable/show.hbs | 4 ++-- frontend/app/templates/components/folder/show.hbs | 6 +++--- frontend/app/templates/components/side-nav-bar.hbs | 6 +++--- frontend/app/templates/components/team/show.hbs | 6 +++--- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/frontend/app/styles/app.scss b/frontend/app/styles/app.scss index 3954f6e0f..04914359e 100644 --- a/frontend/app/styles/app.scss +++ b/frontend/app/styles/app.scss @@ -273,10 +273,6 @@ li a { background-color: #f8f8f8; } -.pl-none { - padding-left: 0 !important; -} - .search-badge { padding: 5px 10px 3px 8px !important; margin-left: 10px; diff --git a/frontend/app/templates/components/encryptable/card-show.hbs b/frontend/app/templates/components/encryptable/card-show.hbs index 322f5d45d..3db78605d 100644 --- a/frontend/app/templates/components/encryptable/card-show.hbs +++ b/frontend/app/templates/components/encryptable/card-show.hbs @@ -22,12 +22,12 @@ {{else}}
- key + key

{{@encryptable.name}}

-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/frontend/app/templates/components/encryptable/show.hbs b/frontend/app/templates/components/encryptable/show.hbs index a29c8786f..2cb1c4e1c 100644 --- a/frontend/app/templates/components/encryptable/show.hbs +++ b/frontend/app/templates/components/encryptable/show.hbs @@ -8,7 +8,7 @@ {{/if}} {{#if this.isFile}} -
+
{{else}} -
+
diff --git a/frontend/app/templates/components/folder/show.hbs b/frontend/app/templates/components/folder/show.hbs index 9ee3a2cde..d65e65800 100644 --- a/frontend/app/templates/components/folder/show.hbs +++ b/frontend/app/templates/components/folder/show.hbs @@ -4,9 +4,9 @@ {{#if this.isNewEncryptable}} {{/if}} -
+
-
+
@@ -28,7 +28,7 @@ {{/unless}}
-
+
{{#if this.isExpanded}} v diff --git a/frontend/app/templates/components/side-nav-bar.hbs b/frontend/app/templates/components/side-nav-bar.hbs index 5c19cefee..c779968e1 100644 --- a/frontend/app/templates/components/side-nav-bar.hbs +++ b/frontend/app/templates/components/side-nav-bar.hbs @@ -24,9 +24,9 @@ {{else}} {{#if team.private}} - + {{else}} - + {{/if}} {{/if}} @@ -52,7 +52,7 @@ {{#each team.folders as |folder|}} - + {{truncate folder.name 15}} {{#if folder.unreadTransferredCount}} {{folder.unreadTransferredCount}} diff --git a/frontend/app/templates/components/team/show.hbs b/frontend/app/templates/components/team/show.hbs index 73e807227..c09b6f9e4 100644 --- a/frontend/app/templates/components/team/show.hbs +++ b/frontend/app/templates/components/team/show.hbs @@ -10,7 +10,7 @@
-
+
{{#if @team.isPersonalTeam}} {{else}} @@ -30,7 +30,7 @@
-
+
new @@ -86,7 +86,7 @@ -
+
{{#if this.collapsed}} < From b8b29fcaad15568a8ae325b27b5991c33790fd00 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 31 May 2023 10:00:52 +0200 Subject: [PATCH 03/37] upgrade ember bootstrap version to 5 --- frontend/ember-cli-build.js | 12 ++++++------ frontend/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/ember-cli-build.js b/frontend/ember-cli-build.js index e19a48cac..5b124899c 100644 --- a/frontend/ember-cli-build.js +++ b/frontend/ember-cli-build.js @@ -38,14 +38,14 @@ module.exports = function (defaults) { bundleZxcvbn: true }, - intl: { - silent: true + "ember-bootstrap": { + bootstrapVersion: 5, + importBootstrapCSS: false, + importBootstrapFont: false }, - 'ember-bootstrap': { - bootstrapVersion: 4, - importBootstrapCSS: true, - importBootstrapFont: false, + intl: { + silent: true } }); diff --git a/frontend/package.json b/frontend/package.json index 23652b139..8daae17e0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -33,7 +33,7 @@ "@glimmer/tracking": "^1.1.2", "@popperjs/core": "^2.11.8", "babel-eslint": "^10.0.3", - "bootstrap": "^4.6.0", + "bootstrap": "^5.0.0", "ember-auto-import": "^2.6.3", "ember-autofocus-modifier": "6.0.0", "ember-bootstrap": "^6.0.0-2", From 463a85c5de58b0adab26890cd0d537857b1f4a45 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 31 May 2023 15:06:29 +0200 Subject: [PATCH 04/37] start debuging version --- docker-compose.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 413d9df11..58c9dbb95 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,6 +25,9 @@ services: tty: true user: "${UID:-1000}" stdin_open: true + environment: + - AUTO_IMPORT_VERBOSE=true + - DEBUG=ember-auto-import:* build: context: ./config/docker/development dockerfile: Ember.dockerfile From 07f0eb61573181a69d79451874f18190eb5423ae Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 25 Jul 2023 12:58:50 +0200 Subject: [PATCH 05/37] update bootstrap --- docker-compose.yml | 3 --- frontend/package.json | 2 +- frontend/yarn.lock | 19 +++++-------------- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 58c9dbb95..413d9df11 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,9 +25,6 @@ services: tty: true user: "${UID:-1000}" stdin_open: true - environment: - - AUTO_IMPORT_VERBOSE=true - - DEBUG=ember-auto-import:* build: context: ./config/docker/development dockerfile: Ember.dockerfile diff --git a/frontend/package.json b/frontend/package.json index 8daae17e0..2371905d8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -33,7 +33,7 @@ "@glimmer/tracking": "^1.1.2", "@popperjs/core": "^2.11.8", "babel-eslint": "^10.0.3", - "bootstrap": "^5.0.0", + "bootstrap": "^5.3.0", "ember-auto-import": "^2.6.3", "ember-autofocus-modifier": "6.0.0", "ember-bootstrap": "^6.0.0-2", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ab0cbcd7c..3829c9505 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -3396,10 +3396,10 @@ body@^5.1.0: raw-body "~1.1.0" safe-json-parse "~1.0.1" -bootstrap@^4.6.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.2.tgz#8e0cd61611728a5bf65a3a2b8d6ff6c77d5d7479" - integrity sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ== +bootstrap@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.0.tgz#0718a7cc29040ee8dbf1bd652b896f3436a87c29" + integrity sha512-UnBV3E3v4STVNQdms6jSGO2CvOkjUMdDAVR2V5N4uCMdaIkaQjbcEAMqRimDHIs4uqBYzDAKCQwCB+97tJgHQw== bower-config@^1.4.3: version "1.4.3" @@ -11897,16 +11897,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.3: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.22.3, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: version "1.22.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== From 79ee37879d1318514723ff328c0a2a605b8627c4 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 26 Jul 2023 07:39:31 +0200 Subject: [PATCH 06/37] fixing radio buttons --- frontend/app/styles/custom-bootstrap.scss | 2 ++ frontend/app/styles/side-nav-bar.scss | 8 +++----- .../app/templates/components/side-nav-bar.hbs | 19 +++++++++++++------ frontend/package.json | 2 +- frontend/yarn.lock | 4 ++-- 5 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 frontend/app/styles/custom-bootstrap.scss diff --git a/frontend/app/styles/custom-bootstrap.scss b/frontend/app/styles/custom-bootstrap.scss new file mode 100644 index 000000000..78f2e1cb3 --- /dev/null +++ b/frontend/app/styles/custom-bootstrap.scss @@ -0,0 +1,2 @@ +$btn-color: #ff0000; +$btn-color: #ff0000 diff --git a/frontend/app/styles/side-nav-bar.scss b/frontend/app/styles/side-nav-bar.scss index 3bcff55bf..5acd69d76 100644 --- a/frontend/app/styles/side-nav-bar.scss +++ b/frontend/app/styles/side-nav-bar.scss @@ -16,7 +16,7 @@ background-color: white; } -.toggle-button.active { +.toggle-button-active { background-color: white !important; border-color: #238BCA !important; } @@ -142,7 +142,7 @@ background-color: rgba(0, 0, 0, 0.12) !important; } - .toggle-button.active { + .toggle-button-active { background-color: rgba(0, 0, 0, 0.12) !important; border-color: #116289 !important; } @@ -169,7 +169,6 @@ border-bottom-right-radius: 0; border-color: rgba(167, 167, 167, 0.44) !important; } - } @media screen and (min-width: 1501px) { @@ -189,7 +188,6 @@ border-bottom-right-radius: 0; border-color: rgba(167, 167, 167, 0.44) !important; } - } @media screen and (min-width: 992px) { @@ -197,7 +195,7 @@ background-color: #ffffff; } - .toggle-button.active { + .toggle-button-active { background-color: #fff !important; border-color: #238BCA !important; } diff --git a/frontend/app/templates/components/side-nav-bar.hbs b/frontend/app/templates/components/side-nav-bar.hbs index c779968e1..94e7ef809 100644 --- a/frontend/app/templates/components/side-nav-bar.hbs +++ b/frontend/app/templates/components/side-nav-bar.hbs @@ -3,16 +3,23 @@
From 09c8ab10382ba0f1194da26bb9d5fe1a62a95346 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 23 May 2023 13:54:56 +0200 Subject: [PATCH 11/37] should work --- frontend/app/components/encryptable/form.js | 13 +++++++------ .../app/templates/components/encryptable/form.hbs | 8 +++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 1273f28fd..135938c26 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -5,10 +5,10 @@ import Changeset from "ember-changeset"; import {inject as service} from "@ember/service"; import {tracked} from "@glimmer/tracking"; import BaseFormComponent from "../base-form-component"; -import { isPresent } from "@ember/utils"; import {capitalize} from "@ember/string"; import {A} from "@ember/array"; import {addObserver} from "@ember/object/observers"; +import {isEmpty, isPresent} from "@ember/utils"; export default class Form extends BaseFormComponent { @service store; @@ -93,8 +93,8 @@ export default class Form extends BaseFormComponent { this.store.findRecord("encryptable-credential", this.record.id); this.setRandomPassword(); - addObserver(this, "withSymbols", this.setRandomPassword); - addObserver(this, "passwordLength", this.setRandomPassword); + // addObserver(this, "withSymbols", this.setRandomPassword); + // addObserver(this, "passwordLength", this.setRandomPassword); } get availableFolders() { @@ -114,7 +114,7 @@ export default class Form extends BaseFormComponent { } } - + @action setRandomPassword() { let pass = ""; const array = new Uint32Array(1); @@ -129,9 +129,10 @@ export default class Form extends BaseFormComponent { } @action - inputChangeManually() { - if(this.withSymbols ) + inputChangeManually($event) { + if (this.withSymbols) this.withSymbols = false; + this.passwordLength = $event.target.value.length } @action diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index bf626eb32..d9f2098a2 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -82,7 +82,12 @@ Symbols + @checked={{withSymbols}} {{on "change" (fn setRandomPassword ) }}> + +
@@ -98,6 +103,7 @@ +
{{#if (gt this.inactiveFields.length 0)}}
{{t "additionalField"}}
From fdf48d62f92439979ce44ddf6b0f7a32dcab0572 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 23 May 2023 14:03:17 +0200 Subject: [PATCH 12/37] styling --- frontend/app/components/encryptable/form.js | 17 +++++++------ .../templates/components/encryptable/form.hbs | 25 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 135938c26..f40969891 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -1,14 +1,14 @@ -import {action} from "@ember/object"; +import { action } from "@ember/object"; import AccountValidations from "../../validations/encryptable"; import lookupValidator from "ember-changeset-validations"; import Changeset from "ember-changeset"; -import {inject as service} from "@ember/service"; -import {tracked} from "@glimmer/tracking"; +import { inject as service } from "@ember/service"; +import { tracked } from "@glimmer/tracking"; import BaseFormComponent from "../base-form-component"; import {capitalize} from "@ember/string"; import {A} from "@ember/array"; import {addObserver} from "@ember/object/observers"; -import {isEmpty, isPresent} from "@ember/utils"; +import { isEmpty, isPresent } from "@ember/utils"; export default class Form extends BaseFormComponent { @service store; @@ -119,7 +119,9 @@ export default class Form extends BaseFormComponent { let pass = ""; const array = new Uint32Array(1); const PASSWORD_CHARS = - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890".concat(this.withSymbols ? "!@#$%^&*()-+<>" : ""); + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890".concat( + this.withSymbols ? "!@#$%^&*()-+<>" : "" + ); for (let i = 0; i < this.passwordLength; i++) { window.crypto.getRandomValues(array); let r = array[0] % PASSWORD_CHARS.length; @@ -130,9 +132,8 @@ export default class Form extends BaseFormComponent { @action inputChangeManually($event) { - if (this.withSymbols) - this.withSymbols = false; - this.passwordLength = $event.target.value.length + this.withSymbols = false; + this.passwordLength = $event.target.value.length; } @action diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index d9f2098a2..b8e06ed9c 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -70,7 +70,6 @@
- {{withSymbols}} - - +
+ + +
From 6608a9a570bf933d3e0ddc3b8112c5947197a1f6 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 24 May 2023 09:19:54 +0200 Subject: [PATCH 13/37] Password gets generated correctly --- frontend/app/components/encryptable/form.js | 13 ++++++------- .../app/templates/components/encryptable/form.hbs | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index f40969891..0e67998be 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -27,6 +27,7 @@ export default class Form extends BaseFormComponent { @tracked withSymbols = true; @tracked passwordLength = 14; + @tracked changeset = this.accountChangeset; AccountValidations = AccountValidations; @@ -92,9 +93,7 @@ export default class Form extends BaseFormComponent { if (!this.record.isFullyLoaded) this.store.findRecord("encryptable-credential", this.record.id); - this.setRandomPassword(); - // addObserver(this, "withSymbols", this.setRandomPassword); - // addObserver(this, "passwordLength", this.setRandomPassword); + this.setRandomPassword(this.withSymbols, this.passwordLength); } get availableFolders() { @@ -115,19 +114,19 @@ export default class Form extends BaseFormComponent { } @action - setRandomPassword() { + setRandomPassword(withSymbols, passwordLength) { let pass = ""; const array = new Uint32Array(1); const PASSWORD_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890".concat( - this.withSymbols ? "!@#$%^&*()-+<>" : "" + withSymbols ? "!@#$%^&*()-+<>" : "" ); - for (let i = 0; i < this.passwordLength; i++) { + for (let i = 0; i < passwordLength; i++) { window.crypto.getRandomValues(array); let r = array[0] % PASSWORD_CHARS.length; pass += PASSWORD_CHARS.charAt(r); } - this.changeset.cleartextPassword = pass; + this.changeset.set("cleartextPassword", pass); } @action diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index b8e06ed9c..00f2a0890 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -82,11 +82,11 @@ Symbols + @checked={{this.withSymbols}} {{on "change" (fn this.setRandomPassword invertedWithSymbols passwordLength)}}>
From 606bf8e7828083b75b9f0aec05f2705f9b506ae6 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 24 May 2023 12:52:58 +0200 Subject: [PATCH 14/37] fix tests --- frontend/app/templates/components/encryptable/form.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 00f2a0890..1987f1cb5 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -86,7 +86,7 @@
From 0ea01d6e2ca771901fb3b98391db59311169d518 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 24 May 2023 15:56:47 +0200 Subject: [PATCH 15/37] write tests --- frontend/app/components/encryptable/form.js | 8 ++- .../templates/components/encryptable/form.hbs | 1 + .../components/encryptable/form-test.js | 64 ++++++++++++++++++- 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 0e67998be..8776cb2e3 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -93,7 +93,7 @@ export default class Form extends BaseFormComponent { if (!this.record.isFullyLoaded) this.store.findRecord("encryptable-credential", this.record.id); - this.setRandomPassword(this.withSymbols, this.passwordLength); + this.setRandomPassword(); } get availableFolders() { @@ -114,7 +114,11 @@ export default class Form extends BaseFormComponent { } @action - setRandomPassword(withSymbols, passwordLength) { + setRandomPassword( + withSymbols = this.withSymbols, + passwordLength = this.passwordLength + ) { + console.log("tes"); let pass = ""; const array = new Uint32Array(1); const PASSWORD_CHARS = diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 1987f1cb5..98f8c4379 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -81,6 +81,7 @@ diff --git a/frontend/tests/integration/components/encryptable/form-test.js b/frontend/tests/integration/components/encryptable/form-test.js index fa3c79eb6..85a10e41d 100644 --- a/frontend/tests/integration/components/encryptable/form-test.js +++ b/frontend/tests/integration/components/encryptable/form-test.js @@ -1,10 +1,18 @@ import { module, test } from "qunit"; import { setupRenderingTest } from "ember-qunit"; -import { render, click } from "@ember/test-helpers"; +import { + click, + render, + triggerKeyEvent, + pauseTest, + triggerEvent, + find +} from "@ember/test-helpers"; import { hbs } from "ember-cli-htmlbars"; import Service from "@ember/service"; import { selectChoose } from "ember-power-select/test-support"; import { setLocale } from "ember-intl/test-support"; +import { scrollTo } from "@ember/test-helpers"; const navServiceStub = Service.extend({ /* eslint-disable ember/avoid-leaking-state-in-ember-objects */ @@ -541,4 +549,58 @@ module("Integration | Component | encryptable/form", function (hooks) { assert.ok(this.element.textContent.trim().includes("Team")); assert.ok(this.element.textContent.trim().includes("bob")); }); + + test("generates a 14 digit password per default", async function (assert) { + await render(hbs``); + + assert.equal( + this.element.querySelector("input[name='cleartextPassword']").value + .length, + 14 + ); + }); + + test("Symbols are enabled per default", async function (assert) { + await render(hbs``); + assert.equal(this.element.querySelector("input#withSymbols").checked, true); + }); + + test("Password does not contain symbols after unchecking checkbox", async function (assert) { + await render(hbs``); + await click("input#withSymbols"); + assert.equal( + this.element.querySelector("input[name='cleartextPassword']").value + .length, + 14 + ); + + assert.equal( + this.element.querySelector("input#withSymbols").checked, + false + ); + assert.notOk( + this.element.querySelector("input#withSymbols").value.match(/[^\w\s]/) + ); + }); + + //Last test to fix + //The function in called correctly but the value passwordLength isnt updated + test("Password with the right length should be generated", async function (assert) { + await render(hbs``); + const slider = this.element.querySelector("input#formControlRange"); + slider.value = 17; + await triggerEvent(slider, "change"); + await triggerEvent(slider, "input"); + await pauseTest(); + console.log(slider.value); + assert.equal( + this.element.querySelector("input[name='cleartextPassword']").value + .length, + 17 + ); + await click("input#withSymbols"); + assert.notOk( + this.element.querySelector("input#withSymbols").value.match(/[^\w\s]/) + ); + }); }); From 08916a58833aeef3d01179822542a2d293df860f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20J=C3=A4ggi?= Date: Thu, 25 May 2023 10:19:06 +0200 Subject: [PATCH 16/37] fix prettier and last integration test --- frontend/app/components/encryptable/form.js | 1 - .../templates/components/encryptable/form.hbs | 6 +++--- .../components/encryptable/form-test.js | 16 ++-------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 8776cb2e3..db3e51098 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -118,7 +118,6 @@ export default class Form extends BaseFormComponent { withSymbols = this.withSymbols, passwordLength = this.passwordLength ) { - console.log("tes"); let pass = ""; const array = new Uint32Array(1); const PASSWORD_CHARS = diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 98f8c4379..22f87cdbb 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -83,11 +83,11 @@ + @checked={{this.withSymbols}} {{on "change" (fn this.setRandomPassword this.invertedWithSymbols this.passwordLength)}}>
diff --git a/frontend/tests/integration/components/encryptable/form-test.js b/frontend/tests/integration/components/encryptable/form-test.js index 85a10e41d..27ca91577 100644 --- a/frontend/tests/integration/components/encryptable/form-test.js +++ b/frontend/tests/integration/components/encryptable/form-test.js @@ -1,18 +1,10 @@ import { module, test } from "qunit"; import { setupRenderingTest } from "ember-qunit"; -import { - click, - render, - triggerKeyEvent, - pauseTest, - triggerEvent, - find -} from "@ember/test-helpers"; +import { click, render, triggerEvent } from "@ember/test-helpers"; import { hbs } from "ember-cli-htmlbars"; import Service from "@ember/service"; import { selectChoose } from "ember-power-select/test-support"; import { setLocale } from "ember-intl/test-support"; -import { scrollTo } from "@ember/test-helpers"; const navServiceStub = Service.extend({ /* eslint-disable ember/avoid-leaking-state-in-ember-objects */ @@ -583,16 +575,12 @@ module("Integration | Component | encryptable/form", function (hooks) { ); }); - //Last test to fix - //The function in called correctly but the value passwordLength isnt updated test("Password with the right length should be generated", async function (assert) { await render(hbs``); const slider = this.element.querySelector("input#formControlRange"); slider.value = 17; - await triggerEvent(slider, "change"); await triggerEvent(slider, "input"); - await pauseTest(); - console.log(slider.value); + await triggerEvent(slider, "change"); assert.equal( this.element.querySelector("input[name='cleartextPassword']").value .length, From bcb9bc266803d105b3db72bd3a21db7c54efdee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20J=C3=A4ggi?= Date: Thu, 25 May 2023 11:10:50 +0200 Subject: [PATCH 17/37] remove input change manually and remove generating new random password on load in update --- frontend/app/components/encryptable/form.js | 10 ++-------- frontend/app/templates/components/encryptable/form.hbs | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index db3e51098..57f4f1af0 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -69,6 +69,8 @@ export default class Form extends BaseFormComponent { this.isNewRecord = !this.args.encryptable; if (this.isNewRecord) { + this.presetTeamAndFolder(); + this.setRandomPassword(); this.record = this.store.createRecord("encryptable-credential"); this.selectedTeam = this.navService.selectedTeam; this.selectedFolder = this.navService.selectedFolder; @@ -92,8 +94,6 @@ export default class Form extends BaseFormComponent { if (!this.record.isFullyLoaded) this.store.findRecord("encryptable-credential", this.record.id); - - this.setRandomPassword(); } get availableFolders() { @@ -132,12 +132,6 @@ export default class Form extends BaseFormComponent { this.changeset.set("cleartextPassword", pass); } - @action - inputChangeManually($event) { - this.withSymbols = false; - this.passwordLength = $event.target.value.length; - } - @action setSelectedTeam(selectedTeam) { this.selectedTeam = selectedTeam; diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 22f87cdbb..53f2312a8 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -74,7 +74,7 @@ this.changeset.error.cleartextPassword.validation "invalid-input-name mb-1"}} @property="cleartextPassword" @customError={{t (validation-error-key this.changeset.error.cleartextPassword.validation)}} as |el|> - +
From 8aa61f37243e136038ec1dfbb773f6c188bbbc80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20J=C3=A4ggi?= Date: Thu, 25 May 2023 14:23:50 +0200 Subject: [PATCH 18/37] implement feedback and change workflow of generating passwords --- frontend/app/components/encryptable/form.js | 10 +++----- .../templates/components/encryptable/form.hbs | 15 +++++++----- .../components/encryptable/form-test.js | 23 +++---------------- frontend/translations/ch_be.yml | 2 +- frontend/translations/de.yml | 2 +- frontend/translations/en.yml | 2 +- frontend/translations/fr.yml | 2 +- 7 files changed, 19 insertions(+), 37 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 57f4f1af0..4e0b2ac87 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -27,7 +27,6 @@ export default class Form extends BaseFormComponent { @tracked withSymbols = true; @tracked passwordLength = 14; - @tracked changeset = this.accountChangeset; AccountValidations = AccountValidations; @@ -114,17 +113,14 @@ export default class Form extends BaseFormComponent { } @action - setRandomPassword( - withSymbols = this.withSymbols, - passwordLength = this.passwordLength - ) { + setRandomPassword() { let pass = ""; const array = new Uint32Array(1); const PASSWORD_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890".concat( - withSymbols ? "!@#$%^&*()-+<>" : "" + this.withSymbols ? "!@#$%^&*()-+<>" : "" ); - for (let i = 0; i < passwordLength; i++) { + for (let i = 0; i < this.passwordLength; i++) { window.crypto.getRandomValues(array); let r = array[0] % PASSWORD_CHARS.length; pass += PASSWORD_CHARS.charAt(r); diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 53f2312a8..a1ac79548 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -70,26 +70,30 @@
- -
+
+
@@ -105,7 +109,6 @@ -
{{#if (gt this.inactiveFields.length 0)}}
{{t "additionalField"}}
diff --git a/frontend/tests/integration/components/encryptable/form-test.js b/frontend/tests/integration/components/encryptable/form-test.js index 27ca91577..8894e3e0d 100644 --- a/frontend/tests/integration/components/encryptable/form-test.js +++ b/frontend/tests/integration/components/encryptable/form-test.js @@ -542,21 +542,6 @@ module("Integration | Component | encryptable/form", function (hooks) { assert.ok(this.element.textContent.trim().includes("bob")); }); - test("generates a 14 digit password per default", async function (assert) { - await render(hbs``); - - assert.equal( - this.element.querySelector("input[name='cleartextPassword']").value - .length, - 14 - ); - }); - - test("Symbols are enabled per default", async function (assert) { - await render(hbs``); - assert.equal(this.element.querySelector("input#withSymbols").checked, true); - }); - test("Password does not contain symbols after unchecking checkbox", async function (assert) { await render(hbs``); await click("input#withSymbols"); @@ -580,15 +565,13 @@ module("Integration | Component | encryptable/form", function (hooks) { const slider = this.element.querySelector("input#formControlRange"); slider.value = 17; await triggerEvent(slider, "input"); - await triggerEvent(slider, "change"); + + await click("#password-generate-button"); + assert.equal( this.element.querySelector("input[name='cleartextPassword']").value .length, 17 ); - await click("input#withSymbols"); - assert.notOk( - this.element.querySelector("input#withSymbols").value.match(/[^\w\s]/) - ); }); }); diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index d39b95db2..e822052ad 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -76,7 +76,7 @@ ch_be: create: Zuägangsdate ersteuä edit: title: Zuägangsdate editiere - random_password: Zuefäuigs Passwort + random_password: Sichers Passwort generierä team_placeholder: Wähl äs Team us folder_placeholder: Wähl ä Ordner us password_strength: Passwort Sterchi diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index bd8d4ea85..0cb1a2082 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -77,7 +77,7 @@ de: create: Zugangsdaten erstellen edit: title: Zugangsdaten editieren - random_password: Zufälliges Passwort + random_password: Sicheres Passwort generieren team_placeholder: Wählen Sie ein Team aus folder_placeholder: Wählen Sie ein Ordner aus password_strength: Passwort Stärke diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index fc7826ee8..bc998c04c 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -77,7 +77,7 @@ en: create: Create Credentials edit: title: Edit Credentials - random_password: Random password + random_password: Generate secure password team_placeholder: Select a Team folder_placeholder: Select a Folder password_strength: Password Strength diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index 5370cc929..df741c8ad 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -77,7 +77,7 @@ fr: create: Créer compte edit: title: Modifier le compte - random_password: Mot de passe aléatoire + random_password: Générer un mot de passe sécurisé team_placeholder: Choisissez une équipe folder_placeholder: Choisissez un dossier password_strength: Fiabilité du mot de passe From 4ad7ab06503498d71b0752f85e03c2856a633807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20J=C3=A4ggi?= Date: Thu, 25 May 2023 14:36:11 +0200 Subject: [PATCH 19/37] fix frontend specs --- frontend/tests/integration/components/encryptable/form-test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/tests/integration/components/encryptable/form-test.js b/frontend/tests/integration/components/encryptable/form-test.js index 8894e3e0d..ae2098463 100644 --- a/frontend/tests/integration/components/encryptable/form-test.js +++ b/frontend/tests/integration/components/encryptable/form-test.js @@ -545,6 +545,7 @@ module("Integration | Component | encryptable/form", function (hooks) { test("Password does not contain symbols after unchecking checkbox", async function (assert) { await render(hbs``); await click("input#withSymbols"); + await click("#password-generate-button"); assert.equal( this.element.querySelector("input[name='cleartextPassword']").value .length, From 50a94682d3fd046a7ed754f2c44255a5f4938fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20J=C3=A4ggi?= Date: Fri, 26 May 2023 10:24:14 +0200 Subject: [PATCH 20/37] adjust styling of generate secure password button --- .../templates/components/encryptable/form.hbs | 25 +++++++++++-------- frontend/translations/ch_be.yml | 1 + frontend/translations/de.yml | 1 + frontend/translations/en.yml | 1 + frontend/translations/fr.yml | 1 + 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index a1ac79548..e653d8cf0 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -78,22 +78,25 @@
- +
{{t "encryptable/credentials.form.passwordLength"}}
- +
+ + +
diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index e822052ad..fc895f4db 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -111,6 +111,7 @@ ch_be: new: title: Nöi Zuägangsdate form: + passwordLength: "Password Längi: " notEncryptedField: Das Fäld wird nid verschlüsslät row: clickToSeeAttrs: Klick wenn aui Attribut möchtisch gseh diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 0cb1a2082..008a799e0 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -111,6 +111,7 @@ de: new: title: Neue Zugangsdaten form: + passwordLength: "Passwortlänge: " notEncryptedField: Dieses Feld wird nicht verschlüsselt row: clickToSeeAttrs: Klicke um alle Attribute zu sehen diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index bc998c04c..92b80d2d7 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -112,6 +112,7 @@ en: new: title: New Credentials form: + passwordLength: "Password Length: " notEncryptedField: This field is not encrypted row: clickToSeeAttrs: Click to see all attributes diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index df741c8ad..f0ee16fa1 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -112,6 +112,7 @@ fr: new: title: Nouveau compte form: + passwordLength: "Longueur du mot de passe: " notEncryptedField: Ce champ n'est pas crypté row: clickToSeeAttrs: Cliquez pour voir tous les attributs From 1c8b82b2ecaae388d4738aa21d0de44652cdf99f Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 30 May 2023 09:20:48 +0200 Subject: [PATCH 21/37] improve design --- frontend/app/styles/app.scss | 4 ++ .../templates/components/encryptable/form.hbs | 44 +++++++++---------- frontend/translations/en.yml | 2 +- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/frontend/app/styles/app.scss b/frontend/app/styles/app.scss index d81946eb9..bb2e99d81 100644 --- a/frontend/app/styles/app.scss +++ b/frontend/app/styles/app.scss @@ -84,6 +84,10 @@ $font-family-sans-serif: var(--pzsh-font-family) !default; width: 4% !important; } +.w-10 { + width: 10% !important; +} + .w-20 { width: 20% !important; } diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index e653d8cf0..90ab26ddb 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -69,34 +69,34 @@
-
+
+ (validation-error-key this.changeset.error.cleartextPassword.validation)}} as |el|> -
-
{{t "encryptable/credentials.form.passwordLength"}}
- -
- - +
+
+ + {{t "encryptable/credentials.form.passwordLength"}} + + +
+ +
+ Symbols + +
+
diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index 92b80d2d7..17fb65e46 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -112,7 +112,7 @@ en: new: title: New Credentials form: - passwordLength: "Password Length: " + passwordLength: "Characters: " notEncryptedField: This field is not encrypted row: clickToSeeAttrs: Click to see all attributes From 06d632d488662447862e1941b47e8170f753fcce Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 30 May 2023 09:27:44 +0200 Subject: [PATCH 22/37] change color of switch --- frontend/app/styles/app.scss | 4 ++++ frontend/app/templates/components/encryptable/form.hbs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/app/styles/app.scss b/frontend/app/styles/app.scss index bb2e99d81..8c55a0720 100644 --- a/frontend/app/styles/app.scss +++ b/frontend/app/styles/app.scss @@ -495,3 +495,7 @@ h5, h6 { color: white !important; } + +.x-toggle:checked + label > .x-toggle-material.x-toggle-btn::after{ + background-color: #1b8dc6; +} diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 90ab26ddb..c2119061b 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -89,7 +89,7 @@
Symbols -
-
-
+
+
Date: Tue, 30 May 2023 11:28:04 +0200 Subject: [PATCH 26/37] add every hardcoded string to the translation files --- frontend/app/templates/components/encryptable/form.hbs | 2 +- frontend/translations/ch_be.yml | 3 ++- frontend/translations/de.yml | 3 ++- frontend/translations/en.yml | 1 + frontend/translations/fr.yml | 3 ++- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index fc9d56ea7..1dc083ad0 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -88,7 +88,7 @@
- Symbols: + {{t "encryptable/credentials.form.symbols"}}
diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index fc895f4db..e26d4db4b 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -111,7 +111,8 @@ ch_be: new: title: Nöi Zuägangsdate form: - passwordLength: "Password Längi: " + passwordLength: "Zeichä: " + symbols: Simbou notEncryptedField: Das Fäld wird nid verschlüsslät row: clickToSeeAttrs: Klick wenn aui Attribut möchtisch gseh diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 008a799e0..fa370f5c0 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -111,7 +111,8 @@ de: new: title: Neue Zugangsdaten form: - passwordLength: "Passwortlänge: " + passwordLength: "Zeichen: " + symbols: Symbole notEncryptedField: Dieses Feld wird nicht verschlüsselt row: clickToSeeAttrs: Klicke um alle Attribute zu sehen diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index 17fb65e46..010742ef2 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -113,6 +113,7 @@ en: title: New Credentials form: passwordLength: "Characters: " + symbols: symbols notEncryptedField: This field is not encrypted row: clickToSeeAttrs: Click to see all attributes diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index f0ee16fa1..7aca1d3e9 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -112,7 +112,8 @@ fr: new: title: Nouveau compte form: - passwordLength: "Longueur du mot de passe: " + passwordLength: "Caractères: " + symbols: Symboles notEncryptedField: Ce champ n'est pas crypté row: clickToSeeAttrs: Cliquez pour voir tous les attributs From a9143502724b072a14c6243d8a4b935c90cef0e8 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 30 May 2023 11:30:43 +0200 Subject: [PATCH 27/37] fix linter --- frontend/app/templates/components/encryptable/form.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 1dc083ad0..b8c2e6bae 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -80,7 +80,7 @@
- {{t "encryptable/credentials.form.passwordLength"}} + {{t "encryptable/credentials.form.passwordLength"}} @@ -89,7 +89,7 @@
{{t "encryptable/credentials.form.symbols"}} -
+
+ + + -
- {{t "encryptable/credentials.form.symbols"}} - -
- -
@@ -106,9 +123,9 @@ + (validation-error-key this.changeset.error.description.validation)}} as |el|> From 5ac0788a4aafe291a3140a4709dd0c674d258d35 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 31 May 2023 08:42:04 +0200 Subject: [PATCH 33/37] autoclose accordeon after generating password --- frontend/app/templates/components/encryptable/form.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 857851ece..107942fcd 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -106,7 +106,8 @@ @size="small"/>
From 07a87d266773d7957ee411ed4e24aa2176ec5251 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 26 Jul 2023 10:44:18 +0200 Subject: [PATCH 34/37] fix after rebase --- frontend/app/components/encryptable/form.js | 35 ++++++++++++++----- .../templates/components/encryptable/form.hbs | 2 +- .../components/password-strength-meter.hbs | 1 - 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 4e0b2ac87..9e9bb212c 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -5,9 +5,9 @@ import Changeset from "ember-changeset"; import { inject as service } from "@ember/service"; import { tracked } from "@glimmer/tracking"; import BaseFormComponent from "../base-form-component"; -import {capitalize} from "@ember/string"; -import {A} from "@ember/array"; -import {addObserver} from "@ember/object/observers"; +import { capitalize } from "@ember/string"; +import { A } from "@ember/array"; +import { addObserver } from "@ember/object/observers"; import { isEmpty, isPresent } from "@ember/utils"; export default class Form extends BaseFormComponent { @@ -68,8 +68,6 @@ export default class Form extends BaseFormComponent { this.isNewRecord = !this.args.encryptable; if (this.isNewRecord) { - this.presetTeamAndFolder(); - this.setRandomPassword(); this.record = this.store.createRecord("encryptable-credential"); this.selectedTeam = this.navService.selectedTeam; this.selectedFolder = this.navService.selectedFolder; @@ -85,6 +83,8 @@ export default class Form extends BaseFormComponent { AccountValidations ); + this.presetTeamAndFolder(); + this.store.findAll("team").then((teams) => { this.assignableTeams = teams; }); @@ -95,13 +95,25 @@ export default class Form extends BaseFormComponent { this.store.findRecord("encryptable-credential", this.record.id); } + presetTeamAndFolder() { + let selectedFolder = this.args.folder || this.navService.selectedFolder; + let selectedTeam = + selectedFolder?.get("team") || this.navService.selectedTeam; + + if (!isEmpty(selectedTeam)) { + this.selectedTeam = selectedTeam; + } + if (!isEmpty(selectedFolder)) { + this.selectedFolder = selectedFolder; + } + } get availableFolders() { return isPresent(this.selectedTeam) ? this.store - .peekAll("folder") - .filter( - (folder) => folder.team.get("id") === this.selectedTeam.get("id") - ) + .peekAll("folder") + .filter( + (folder) => folder.team.get("id") === this.selectedTeam.get("id") + ) : []; } @@ -112,6 +124,11 @@ export default class Form extends BaseFormComponent { } } + @action + initForm() { + console.log("pass"); + this.setRandomPassword(); + } @action setRandomPassword() { let pass = ""; diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index 107942fcd..8e63c79b6 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -1,6 +1,6 @@ {{#if this.record.isFullyLoaded}}
-
+
- + Password generator +
+ {{#if this.isGenExpanded}} + + {{else}} + + {{/if}} +
@@ -96,7 +103,7 @@ min="14" max="32"> + class="border border-mute border-radius-4 w-25 password-length">
diff --git a/frontend/package.json b/frontend/package.json index 8daae17e0..271c31f79 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -36,7 +36,7 @@ "bootstrap": "^5.0.0", "ember-auto-import": "^2.6.3", "ember-autofocus-modifier": "6.0.0", - "ember-bootstrap": "^6.0.0-2", + "ember-bootstrap": "^5.1.1", "ember-bootstrap-power-select": "^5.0.0", "ember-changeset": "^4.1.2", "ember-changeset-validations": "~4.1.1", diff --git a/frontend/public/assets/images/arrow-down-3101.svg b/frontend/public/assets/images/arrow-down-3101.svg new file mode 100644 index 000000000..33892c100 --- /dev/null +++ b/frontend/public/assets/images/arrow-down-3101.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/public/assets/images/up-arrow-svgrepo-com.svg b/frontend/public/assets/images/up-arrow-svgrepo-com.svg new file mode 100644 index 000000000..89560d715 --- /dev/null +++ b/frontend/public/assets/images/up-arrow-svgrepo-com.svg @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 4aaeb6882..e518e2e22 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1293,7 +1293,7 @@ "@embroider/shared-internals" "^0.50.2" semver "^7.3.5" -"@embroider/addon-shim@^1.0.0", "@embroider/addon-shim@^1.5.0", "@embroider/addon-shim@^1.6.0", "@embroider/addon-shim@^1.8.4": +"@embroider/addon-shim@^1.0.0", "@embroider/addon-shim@^1.5.0", "@embroider/addon-shim@^1.8.4": version "1.8.6" resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.6.tgz#b676991b4fa32c3a98dc7db7dc6cd655029c3f09" integrity sha512-siC9kP78uucEbpDcVyxjkwa76pcs5rVzDVpWO4PDc9EAXRX+pzmUuSTLAK3GztUwx7/PWhz1BenAivqdSvSgfg== @@ -1481,7 +1481,7 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@glimmer/component@^1.1.2": +"@glimmer/component@^1.0.4", "@glimmer/component@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.1.2.tgz#892ec0c9f0b6b3e41c112be502fde073cf24d17c" integrity sha512-XyAsEEa4kWOPy+gIdMjJ8XlzA3qrGH55ZDv6nA16ibalCR17k74BI0CztxuRds+Rm6CtbUVgheCVlcCULuqD7A== @@ -5341,14 +5341,16 @@ ember-bootstrap-power-select@^5.0.0: fs-extra "^11.0.0" rsvp "^4.0.1" -ember-bootstrap@^6.0.0-2: - version "6.0.0-2" - resolved "https://registry.yarnpkg.com/ember-bootstrap/-/ember-bootstrap-6.0.0-2.tgz#9dbcd268ef498d88c5c884cece9f8833cb86daf2" - integrity sha512-9POij0VfdWM6JnTprTS817tFTQF9001+ZciaeOnvidI/Ys6deS+cnddEP/v9liLx2PJnc2V2sE14GZTTrFTbng== +ember-bootstrap@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/ember-bootstrap/-/ember-bootstrap-5.1.1.tgz#dfc9775eda7a8b1639445d6ec03baf9df7814681" + integrity sha512-ETb+DBYvVC+cAeABcfWUCHMHdO7S8gR8yZSvGmhHcgQo7jbKOVDDCARA7C12lmn3RojMwlfJMJu0LV3CXRwCHg== dependencies: "@ember/render-modifiers" "^2.0.0" "@embroider/macros" "^1.0.0" "@embroider/util" "^1.0.0" + "@glimmer/component" "^1.0.4" + "@glimmer/tracking" "^1.0.4" broccoli-debug "^0.6.3" broccoli-funnel "^3.0.8" broccoli-merge-trees "^4.2.0" @@ -5362,18 +5364,19 @@ ember-bootstrap@^6.0.0-2: ember-decorators "^6.1.0" ember-element-helper "^0.6.0" ember-focus-trap "^1.0.0" + ember-in-element-polyfill "^1.0.1" + ember-named-blocks-polyfill "^0.2.4" ember-on-helper "^0.1.0" - ember-popper-modifier "^2.0.0 || ^3.0.0" - ember-ref-bucket "^4.0.0 || ^5.0.0" + ember-popper-modifier "^2.0.0" + ember-ref-bucket "^4.0.0" ember-render-helpers "^0.2.0" - ember-style-modifier "^0.8.0 || ^1.0.0 || ^2.0.0 || ^3.0.0" - ember-unique-id-helper-polyfill "1.2.2" + ember-style-modifier "^0.8.0" findup-sync "^5.0.0" - fs-extra "^11.0.0" + fs-extra "^10.0.0" resolve "^1.18.1" rsvp "^4.0.1" silent-error "^1.0.1" - tracked-toolbox "^1.2.3 || ^2.0.0" + tracked-toolbox "^1.2.3" ember-cache-primitive-polyfill@^1.0.0, ember-cache-primitive-polyfill@^1.0.1: version "1.0.1" @@ -5554,7 +5557,7 @@ ember-cli-htmlbars@^4.3.1: strip-bom "^4.0.0" walk-sync "^2.0.2" -ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1: +ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.2.tgz#e0cd2fb3c20d85fe4c3e228e6f0590ee1c645ba8" integrity sha512-Uj6R+3TtBV5RZoJY14oZn/sNPnc+UgmC8nb5rI4P3fR/gYoyTFIZSXiIM7zl++IpMoIrocxOrgt+mhonKphgGg== @@ -6063,6 +6066,16 @@ ember-get-config@, "ember-get-config@^0.3.0 || ^0.4.0 || ^0.5.0 || ^1.0.2 || ^2. "@embroider/macros" "^0.50.0 || ^1.0.0" ember-cli-babel "^7.26.6" +ember-in-element-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ember-in-element-polyfill/-/ember-in-element-polyfill-1.0.1.tgz#143504445bb4301656a2eaad42644d684f5164dd" + integrity sha512-eHs+7D7PuQr8a1DPqsJTsEyo3FZ1XuH6WEZaEBPDa9s0xLlwByCNKl8hi1EbXOgvgEZNHHi9Rh0vjxyfakrlgg== + dependencies: + debug "^4.3.1" + ember-cli-babel "^7.23.1" + ember-cli-htmlbars "^5.3.1" + ember-cli-version-checker "^5.1.2" + ember-in-viewport@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-4.1.0.tgz#a9359a1e4a99d9d6ab32e926749dc131084ed896" @@ -6152,7 +6165,7 @@ ember-modifier-manager-polyfill@^1.2.0: ember-cli-version-checker "^2.1.2" ember-compatibility-helpers "^1.2.0" -"ember-modifier@^2.1.2 || ^3.0.0 || ^4.0.0", "ember-modifier@^3.2.0 || ^4.0.0", "ember-modifier@^3.2.7 || ^4.0.0", ember-modifier@^4.1.0: +"ember-modifier@^2.1.2 || ^3.0.0 || ^4.0.0", "ember-modifier@^3.2.7 || ^4.0.0", ember-modifier@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-4.1.0.tgz#cb91efbf8ca4ff4a1a859767afa42dddba5a2bbd" integrity sha512-YFCNpEYj6jdyy3EjslRb2ehNiDvaOrXTilR9+ngq+iUqSHYto2zKV0rleiA1XJQ27ELM1q8RihT29U6Lq5EyqQ== @@ -6161,7 +6174,7 @@ ember-modifier-manager-polyfill@^1.2.0: ember-cli-normalize-entity-name "^1.0.0" ember-cli-string-utils "^1.1.0" -ember-modifier@^3.0.0, ember-modifier@^3.2.7: +ember-modifier@^3.0.0, ember-modifier@^3.1.0, ember-modifier@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-3.2.7.tgz#f2d35b7c867cbfc549e1acd8d8903c5ecd02ea4b" integrity sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA== @@ -6179,6 +6192,14 @@ ember-moment@^10.0.0: dependencies: "@embroider/addon-shim" "^0.50.2" +ember-named-blocks-polyfill@^0.2.4: + version "0.2.5" + resolved "https://registry.yarnpkg.com/ember-named-blocks-polyfill/-/ember-named-blocks-polyfill-0.2.5.tgz#d5841406277026a221f479c815cfbac6cdcaeecb" + integrity sha512-OVMxzkfqJrEvmiky7gFzmuTaImCGm7DOudHWTdMBPO7E+dQSunrcRsJMgO9ZZ56suqBIz/yXbEURrmGS+avHxA== + dependencies: + ember-cli-babel "^7.19.0" + ember-cli-version-checker "^5.1.1" + ember-notify@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/ember-notify/-/ember-notify-6.0.4.tgz#3b30fccb911a97a4d1ed65a95447f4d3dbdb6b89" @@ -6194,16 +6215,16 @@ ember-on-helper@^0.1.0: dependencies: ember-cli-babel "^7.7.3" -"ember-popper-modifier@^2.0.0 || ^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/ember-popper-modifier/-/ember-popper-modifier-3.0.0.tgz#8eabada3e0cc6a8cd96d26c6baff699fedc17090" - integrity sha512-pFvVYl7bPMuafLvTgnSrZXEO6oGLt2DxmGM5yGstae+jYotXOmnoqEiL/Q2FIZtUIbOZAo2BGUROe6rkoVumBg== +ember-popper-modifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ember-popper-modifier/-/ember-popper-modifier-2.0.1.tgz#bb20b997c6cb944b66638aeda426f002a97aa423" + integrity sha512-NczO1m4uDFs4f4L8VEoC5MmRSZZvpTGwCWunYXQ+5vuWKIJ2KnPJQ3cRp9a1EpsWrfPwss+sB4JAEsY24ffdDA== dependencies: "@popperjs/core" "^2.4.2" - ember-auto-import "^2.5.0" - ember-cli-babel "^7.26.11" - ember-cli-htmlbars "^6.1.1" - ember-modifier "^3.2.0 || ^4.0.0" + ember-auto-import "^2.2.3" + ember-cli-babel "^7.21.0" + ember-cli-htmlbars "^6.0.0" + ember-modifier "^3.1.0" ember-power-select-with-create@^1.0.0: version "1.0.0" @@ -6265,15 +6286,14 @@ ember-qunit@^7.0.0: silent-error "^1.1.1" validate-peer-dependencies "^2.2.0" -"ember-ref-bucket@^4.0.0 || ^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/ember-ref-bucket/-/ember-ref-bucket-5.0.1.tgz#a0c939d2484615af8730212336de04923f3345a7" - integrity sha512-j/EXKnrptKSLFErTNsqb/zaBmLUN2b83c8g93pUMTDA/gBy5ZCMmpPt4A9Pdr1wteieGdrs/XwPiYjCm++4DmA== +ember-ref-bucket@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ember-ref-bucket/-/ember-ref-bucket-4.1.0.tgz#2a52e72a395a14033d034c834fab648f26d74baa" + integrity sha512-oEUU2mDtuYuMM039U9YEqrrOCVHH6rQfvbFOmh3WxOVEgubmLVyKEpGgU4P/6j0B/JxTqqTwM3ULTQyDto8dKg== dependencies: - ember-auto-import "^2.5.0" ember-cli-babel "^7.26.11" ember-cli-htmlbars "^6.0.1" - ember-modifier "^3.2.7 || ^4.0.0" + ember-modifier "^3.2.7" ember-render-helpers@^0.2.0: version "0.2.0" @@ -6337,6 +6357,14 @@ ember-source@~4.12.3: semver "^7.3.8" silent-error "^1.1.1" +ember-style-modifier@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/ember-style-modifier/-/ember-style-modifier-0.8.0.tgz#ef46b3f288e63e3d850418ea8dc6f7b12edde721" + integrity sha512-I7M+oZ+poYYOP7n521rYv7kkYZbxotL8VbtHYxLQ3tasRZYQJ21qfu3vVjydSjwyE3w7EZRgKngBoMhKSAEZnw== + dependencies: + ember-cli-babel "^7.26.6" + ember-modifier "^3.2.7" + "ember-style-modifier@^0.8.0 || ^1.0.0 || ^2.0.0 || ^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/ember-style-modifier/-/ember-style-modifier-3.0.1.tgz#96aaaa2b713108725b81d8b934ec445ece6b89c3" @@ -6436,15 +6464,6 @@ ember-tracked-storage-polyfill@^1.0.0: dependencies: ember-cli-babel "^7.22.1" -ember-unique-id-helper-polyfill@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ember-unique-id-helper-polyfill/-/ember-unique-id-helper-polyfill-1.2.2.tgz#64ab71b378cca117aa7d56d4275f47ff3b830b6d" - integrity sha512-gjcwTBkCDUA0iYFS7aArfJub+eos/itxEsC399JUbdKNIBJLesB/1OHnmxLLwExZHp7gyHuiDFOPcknafhFm3g== - dependencies: - broccoli-funnel "^3.0.8" - ember-cli-babel "^7.26.10" - ember-cli-version-checker "^5.1.2" - ember-validators@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/ember-validators/-/ember-validators-4.1.2.tgz#e70c0ac80f6b66c8288ffe5860c96e81bf621691" @@ -13207,13 +13226,13 @@ tracked-built-ins@^3.1.1: ember-cli-typescript "^5.1.0" ember-tracked-storage-polyfill "^1.0.0" -"tracked-toolbox@^1.2.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/tracked-toolbox/-/tracked-toolbox-2.0.0.tgz#7862575527b4c633ef8f9b4111d9d64c07ef2a49" - integrity sha512-adZtX+RGN6F+pWs/5JqVuDxLhuia4uhqmQp+UlUaxpykWjDFETtAdQR+LdDJiFPXFAXnS6FBqn/tnSLJQCm3Yw== +tracked-toolbox@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tracked-toolbox/-/tracked-toolbox-1.3.0.tgz#46aee42d71d97ceb48654f0785fb294d735fabf8" + integrity sha512-KHfYLvNyRr0qQeXQPnmb6Z4JYZ0/47R7LjVwzUrsKc539eQi3Sz2z3mb7FJN9KgaJXVuM3GQ8zcwUFTf0hrOsQ== dependencies: - "@embroider/addon-shim" "^1.6.0" ember-cache-primitive-polyfill "^1.0.0" + ember-cli-babel "^7.26.6" tree-sync@^1.2.2: version "1.4.0" From 171fe26e03a298baf761a373ce6d30e0d8dd24b2 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Wed, 26 Jul 2023 15:56:07 +0200 Subject: [PATCH 36/37] Do not generate a password per default --- frontend/app/components/encryptable/form.js | 5 ----- frontend/app/templates/components/encryptable/form.hbs | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/frontend/app/components/encryptable/form.js b/frontend/app/components/encryptable/form.js index 2468ac19e..7ebed8881 100644 --- a/frontend/app/components/encryptable/form.js +++ b/frontend/app/components/encryptable/form.js @@ -130,11 +130,6 @@ export default class Form extends BaseFormComponent { this.isGenExpanded = !this.isGenExpanded; } @action - initForm() { - console.log("pass"); - this.setRandomPassword(); - } - @action setRandomPassword() { let pass = ""; const array = new Uint32Array(1); diff --git a/frontend/app/templates/components/encryptable/form.hbs b/frontend/app/templates/components/encryptable/form.hbs index b60801ff6..2f0f8ff88 100644 --- a/frontend/app/templates/components/encryptable/form.hbs +++ b/frontend/app/templates/components/encryptable/form.hbs @@ -1,6 +1,6 @@ {{#if this.record.isFullyLoaded}}
-
-
- - - - - - - +
+ + + +
+
+
+
+ {{#each this.activeFields as |attribute|}} +
+ {{#if (eq attribute "customAttr")}} +
+ +
+ + + {{!-- Bind Popper to modal with viewportSelector, more information: https://www.ember-bootstrap.com/api/classes/Components.Tooltip.html#property_viewportPadding--}} + + not encrypted value + +
+
+
+
+ {{/if}} +
+ +
+ + + {{!-- Bind Popper to modal with viewportSelector, more information: https://www.ember-bootstrap.com/api/classes/Components.Tooltip.html#property_viewportPadding--}} + + encrypted value + +
+
+
+ + {{#if (eq attribute "password")}} +
+ + + + - Password generator + {{t "encryptable/credentials.edit.password_generator"}} -
- {{#if this.isGenExpanded}} - - {{else}} - - {{/if}} -
-
- +
+ {{#if this.isGenExpanded}} + + {{else}} + + {{/if}} +
+ + -
-
+
+
{{t "encryptable/credentials.form.passwordLength"}} @@ -102,41 +157,31 @@ @value={{this.passwordLength}} min="14" max="32"> - -
+ +
-
- {{t "encryptable/credentials.form.symbols"}} - -
- -
- - - - -
-
-
-
-
- - - - - +
+ {{t "encryptable/credentials.form.symbols"}} + +
+ +
+ + + +
+ {{/if}} +
+ {{/each}}
{{#if (gt this.inactiveFields.length 0)}}
{{t "additionalField"}}
diff --git a/frontend/tests/integration/components/encryptable/form-test.js b/frontend/tests/integration/components/encryptable/form-test.js index 692f07426..67ee0574c 100644 --- a/frontend/tests/integration/components/encryptable/form-test.js +++ b/frontend/tests/integration/components/encryptable/form-test.js @@ -5,6 +5,7 @@ import { hbs } from "ember-cli-htmlbars"; import Service from "@ember/service"; import { selectChoose } from "ember-power-select/test-support"; import { setLocale } from "ember-intl/test-support"; +import { pauseTest } from "@ember/test-helpers"; const navServiceStub = Service.extend({ /* eslint-disable ember/avoid-leaking-state-in-ember-objects */ @@ -156,7 +157,7 @@ module("Integration | Component | encryptable/form", function (hooks) { this.element .querySelector("#password-field") .innerText.replace(/\s+/g, " "), - "Password There is no password defined Random password" + "Password There is no password defined Password generator" ); assert.equal( this.element.querySelector("#encryptable-form-save-button").innerText, @@ -220,7 +221,7 @@ module("Integration | Component | encryptable/form", function (hooks) { this.element .querySelector("#password-field") .innerText.replace(/\s+/g, " "), - "Passwort Es ist kein Passwort gesetzt Zufälliges Passwort" + "Passwort Es ist kein Passwort gesetzt Passwort Generator" ); assert.equal( this.element.querySelector("#encryptable-form-save-button").innerText, @@ -291,7 +292,7 @@ module("Integration | Component | encryptable/form", function (hooks) { this.element .querySelector("#password-field") .innerText.replace(/\s+/g, " "), - "Passwort Es isch kes Passwort gsetzt Zuefäuigs Passwort" + "Passwort Es isch kes Passwort gsetzt Passwort Generator" ); assert.equal( this.element.querySelector("#encryptable-form-save-button").innerText, @@ -362,7 +363,7 @@ module("Integration | Component | encryptable/form", function (hooks) { this.element .querySelector("#password-field") .innerText.replace(/\s+/g, " "), - "Mot de passe Il n'a pas un mot de passe Mot de passe aléatoire" + "Mot de passe Il n'a pas un mot de passe Générateur de mot de passe" ); assert.equal( this.element.querySelector("#encryptable-form-save-button").innerText, @@ -543,12 +544,15 @@ module("Integration | Component | encryptable/form", function (hooks) { }); test("Password does not contain symbols after unchecking checkbox", async function (assert) { + setLocale("en"); await render(hbs``); + await click(".accordion-button"); + const symbolSwitch = this.element.querySelector( "#withSymbols > span > label > div" ); const password = this.element.querySelector( - "input[name='cleartextPassword']" + "#password > .input-group > input" ); await click(symbolSwitch); await click("#password-generate-button"); @@ -559,7 +563,10 @@ module("Integration | Component | encryptable/form", function (hooks) { }); test("Password with the right length should be generated", async function (assert) { + setLocale("en"); await render(hbs``); + await click(".accordion-button"); + const slider = this.element.querySelector("input#formControlRange"); slider.value = 17; await triggerEvent(slider, "input"); @@ -567,7 +574,7 @@ module("Integration | Component | encryptable/form", function (hooks) { await click("#password-generate-button"); assert.equal( - this.element.querySelector("input[name='cleartextPassword']").value + this.element.querySelector("#password > .input-group > input").value .length, 17 ); diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index 490a14bc8..6d99a5e53 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -77,6 +77,7 @@ ch_be: edit: title: Zuägangsdate editiere random_password: Sichers Passwort generierä + password_generator: Passwort Generator team_placeholder: Wähl äs Team us folder_placeholder: Wähl ä Ordner us password_strength: Passwort Sterchi @@ -329,6 +330,7 @@ ch_be: customAttr_copied: Z individuellä Attribut isch kopiert worde selectAdditionalField: Du muäsch es Fäld uswähle + encryptable-credentials: << : *encryptables_translations diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 5f1924a5c..1404761e2 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -78,6 +78,7 @@ de: edit: title: Zugangsdaten editieren random_password: Sicheres Passwort generieren + password_generator: Passwort Generator team_placeholder: Wählen Sie ein Team aus folder_placeholder: Wählen Sie ein Ordner aus password_strength: Passwort Stärke diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index ae1351958..e06f447cf 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -77,6 +77,7 @@ en: create: Create Credentials edit: title: Edit Credentials + password_generator: Password generator random_password: Generate secure password team_placeholder: Select a Team folder_placeholder: Select a Folder @@ -329,6 +330,7 @@ en: customAttr_copied: Custom Attribute was copied selectAdditionalField: You have to choose a field + encryptable-credentials: << : *encryptables_translations diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index 7aca1d3e9..19b2389d9 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -78,6 +78,7 @@ fr: edit: title: Modifier le compte random_password: Générer un mot de passe sécurisé + password_generator: Générateur de mot de passe team_placeholder: Choisissez une équipe folder_placeholder: Choisissez un dossier password_strength: Fiabilité du mot de passe