From 54c4f19a5c76809ae2c6a87a3466006a262698f0 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 13 Aug 2022 21:38:26 -0800 Subject: [PATCH] security: enforce min length for user password (#1555) * fix typing on auth context * extract user password strength meter * fix broken useToggle method * extend form to accept arguments for validators * enforce password length on update * fix user password change form --- .../Domain/User/UserPasswordStrength.vue | 38 +++++++++++ frontend/components/global/AutoForm.vue | 13 +++- frontend/components/global/ToggleState.vue | 9 ++- frontend/composables/use-users/user-form.ts | 2 +- frontend/pages/register/register.vue | 67 ++----------------- frontend/pages/user/profile/edit.vue | 31 ++++++--- frontend/plugins/globals.ts | 2 + mealie/routes/users/crud.py | 34 +++++----- mealie/schema/user/user.py | 4 +- 9 files changed, 105 insertions(+), 95 deletions(-) create mode 100644 frontend/components/Domain/User/UserPasswordStrength.vue diff --git a/frontend/components/Domain/User/UserPasswordStrength.vue b/frontend/components/Domain/User/UserPasswordStrength.vue new file mode 100644 index 0000000000..2ef5a14097 --- /dev/null +++ b/frontend/components/Domain/User/UserPasswordStrength.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/frontend/components/global/AutoForm.vue b/frontend/components/global/AutoForm.vue index 83a2880543..3b9059ffbf 100644 --- a/frontend/components/global/AutoForm.vue +++ b/frontend/components/global/AutoForm.vue @@ -187,9 +187,16 @@ export default defineComponent({ const list = [] as ((v: string) => boolean | string)[]; keys.forEach((key) => { - if (key in validators) { - // @ts-ignore TODO: fix this - list.push(validators[key]); + const split = key.split(":"); + const validatorKey = split[0] as ValidatorKey; + if (validatorKey in validators) { + if (split.length === 1) { + // @ts-ignore- validators[validatorKey] is a function + list.push(validators[validatorKey]); + } else { + // @ts-ignore - validators[validatorKey] is a function + list.push(validators[validatorKey](split[1])); + } } }); return list; diff --git a/frontend/components/global/ToggleState.vue b/frontend/components/global/ToggleState.vue index 90f06a82ab..36321c4331 100644 --- a/frontend/components/global/ToggleState.vue +++ b/frontend/components/global/ToggleState.vue @@ -6,8 +6,7 @@