From 4956bb0e9c3c1d22d60e849aea5664e35330f897 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 18:47:24 +0100 Subject: [PATCH 01/13] Implemented a custom password strength component ref #106 --- package.json | 1 + src/components/auth/PasswordStrength.svelte | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/components/auth/PasswordStrength.svelte diff --git a/package.json b/package.json index 6429c2bf..2597a9b9 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "license": "CC-BY-NC-SA-4.0", "dependencies": { "@odit/lfk-client-js": "0.7.0", + "check-password-strength": "^2.0.2", "csvtojson": "^2.0.10", "gridjs": "3.3.0", "localforage": "1.9.0", diff --git a/src/components/auth/PasswordStrength.svelte b/src/components/auth/PasswordStrength.svelte new file mode 100644 index 00000000..2db8981d --- /dev/null +++ b/src/components/auth/PasswordStrength.svelte @@ -0,0 +1,14 @@ + + +
+ +
-- 2.47.2 From 5fa9939696a35d60d762feb0cebef61d31869218 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:02:09 +0100 Subject: [PATCH 02/13] Added more cirteria to the password strength component ref #106 --- src/components/auth/PasswordStrength.svelte | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/auth/PasswordStrength.svelte b/src/components/auth/PasswordStrength.svelte index 2db8981d..4569a248 100644 --- a/src/components/auth/PasswordStrength.svelte +++ b/src/components/auth/PasswordStrength.svelte @@ -2,13 +2,28 @@ import { getLocaleFromNavigator, _ } from "svelte-i18n"; import { passwordStrength } from "check-password-strength"; export let password_change; + export let password_confirm; $: strength = passwordStrength(password_change); + $: passwords_match = (!password_confirm || (password_confirm === password_change)) -
-
    +
    + {(passwords_match)} +
      {#if !strength.contains.includes('lowercase')} -
    • Must contain a lowercase letter
    • +
    • Must contain a lowercase letter!
    • + {/if} + {#if !strength.contains.includes('uppercase')} +
    • Must contain a uppercase letter!
    • + {/if} + {#if !strength.contains.includes('number')} +
    • Must contain a number letter!
    • + {/if} + {#if !(strength.length>9)} +
    • Must be at least 10 characters long!
    • + {/if} + {#if !(passwords_match==true)} +
    • Passwords don't match!
    • {/if}
    -- 2.47.2 From ad3bd312e9a5785f81029ea2b7e302ea1addd988 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:26:26 +0100 Subject: [PATCH 03/13] Added a password strength verification ref #106 --- src/components/auth/PasswordStrength.svelte | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/auth/PasswordStrength.svelte b/src/components/auth/PasswordStrength.svelte index 4569a248..2439652e 100644 --- a/src/components/auth/PasswordStrength.svelte +++ b/src/components/auth/PasswordStrength.svelte @@ -1,14 +1,18 @@
    - {(passwords_match)}
      {#if !strength.contains.includes('lowercase')}
    • Must contain a lowercase letter!
    • @@ -19,10 +23,10 @@ {#if !strength.contains.includes('number')}
    • Must contain a number letter!
    • {/if} - {#if !(strength.length>9)} + {#if !(strength.length > 9)}
    • Must be at least 10 characters long!
    • {/if} - {#if !(passwords_match==true)} + {#if !(passwords_match == true)}
    • Passwords don't match!
    • {/if}
    -- 2.47.2 From 6aaf8384512185a3a319ce6b3e2505e910468e64 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:29:25 +0100 Subject: [PATCH 04/13] Now using pw strength component ref #106 --- src/components/settings/Settings.svelte | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index e570390a..8d62ce82 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -4,6 +4,7 @@ import { MeService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; import ConfirmProfileDeletion from "./ConfirmProfileDeletion.svelte"; + import PasswordStrength from "../auth/PasswordStrength.svelte"; $: data_loaded = false; $: delete_triggered = false; $: original_data = {}; @@ -45,7 +46,7 @@ function changePassword() { if (data_loaded === true && update_password_enabled) { Toastify({ - text: $_('changing-your-password'), + text: $_("changing-your-password"), duration: 2500, }).showToast(); let postdata = Object.assign({}, original_data); @@ -56,7 +57,7 @@ password_change = ""; postdata = {}; Toastify({ - text: $_('password-changed'), + text: $_("password-changed"), duration: 2500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -242,10 +243,7 @@ class="border-gray-300 placeholder-gray-500 appearance-none rounded-md relative block w-full px-3 py-2 border focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 sm:text-sm" placeholder={$_('password')} />
    - {#if password_change != password_confirm && password_change.length > 0} - {$_('passwords-dont-match')} - {/if} +
-- 2.47.2 From 5d5f7c7f5c6a69146f41996f4facfeff95791be0 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:29:37 +0100 Subject: [PATCH 05/13] Now using pw strength component for reset ref #106 --- src/components/auth/ResetPassword.svelte | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/auth/ResetPassword.svelte b/src/components/auth/ResetPassword.svelte index ad8b9792..459daa95 100644 --- a/src/components/auth/ResetPassword.svelte +++ b/src/components/auth/ResetPassword.svelte @@ -3,6 +3,7 @@ import { _ } from "svelte-i18n"; import Toastify from "toastify-js"; import "toastify-js/src/toastify.css"; + import PasswordStrength from "../auth/PasswordStrength.svelte"; let state = "reset_in_progress"; let password = ""; export let params; @@ -102,6 +103,7 @@ placeholder={$_('new-password')} bind:value={password} /> +
-- 2.47.2 From 962dd0c1bbc0df7f20bcec5b4247188c8935c87e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:29:47 +0100 Subject: [PATCH 06/13] Added missing exports ref #106 --- src/components/auth/PasswordStrength.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/auth/PasswordStrength.svelte b/src/components/auth/PasswordStrength.svelte index 2439652e..007426cc 100644 --- a/src/components/auth/PasswordStrength.svelte +++ b/src/components/auth/PasswordStrength.svelte @@ -1,6 +1,9 @@ + +
diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index 8d62ce82..88b34f20 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -4,7 +4,7 @@ import { MeService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; import ConfirmProfileDeletion from "./ConfirmProfileDeletion.svelte"; - import PasswordStrength from "../auth/PasswordStrength.svelte"; + import PasswordStrength, {password_strong_enough_and_equal} from "../auth/PasswordStrength.svelte"; $: data_loaded = false; $: delete_triggered = false; $: original_data = {}; @@ -16,8 +16,7 @@ JSON.stringify(editable) === JSON.stringify(original_data) ); $: save_enabled = changes_performed && isEmail(editable.email); - $: update_password_enabled = - password_change.length > 0 && password_change === password_confirm; + $: update_password_enabled = password_strong_enough_and_equal(password_change, password_confirm); const user_promise = MeService.meControllerGet().then((data) => { data_loaded = true; data.groups = data.groups.map((g) => g.id); -- 2.47.2 From 75d8f7331b6ae78f3979bb62148188a16f83cb8d Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 19:47:26 +0100 Subject: [PATCH 09/13] Reset can now only be triggered if pw is strong enoug ref #106 --- src/components/auth/ResetPassword.svelte | 76 +++++++++++++----------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/src/components/auth/ResetPassword.svelte b/src/components/auth/ResetPassword.svelte index 459daa95..510f718b 100644 --- a/src/components/auth/ResetPassword.svelte +++ b/src/components/auth/ResetPassword.svelte @@ -1,39 +1,43 @@ -{#if state==="reset_success"} +{#if state === 'reset_success'}
@@ -57,31 +61,31 @@
-{:else if state==="reset_error"} -
-
- -

- {$_('application_name')} -

-

- {$_('password-reset-failed')} -

-

- {$_('please-request-a-new-reset-mail')} -

-
+{:else if state === 'reset_error'} +
+
+ +

+ {$_('application_name')} +

+

+ {$_('password-reset-failed')} +

+

+ {$_('please-request-a-new-reset-mail')} +

-
-{:else if state==="reset_in_progress"} +{:else if state === 'reset_in_progress'}
@@ -109,6 +113,8 @@