From d7aba834859d7cc9572eb48742f023aaff62f87c Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Thu, 10 Oct 2024 10:43:20 +0800 Subject: [PATCH] Refine password validation --- .../system/users/components/UserCreationModal.vue | 9 +++++++-- .../users/components/UserPasswordChangeModal.vue | 14 ++++++++------ ui/src/constants/regex.ts | 1 + ui/src/locales/en.yaml | 1 + ui/src/locales/zh-CN.yaml | 1 + ui/src/locales/zh-TW.yaml | 1 + .../profile/components/PasswordChangeModal.vue | 14 ++++++++------ 7 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 ui/src/constants/regex.ts diff --git a/ui/console-src/modules/system/users/components/UserCreationModal.vue b/ui/console-src/modules/system/users/components/UserCreationModal.vue index 5084f5e73..5401b0859 100644 --- a/ui/console-src/modules/system/users/components/UserCreationModal.vue +++ b/ui/console-src/modules/system/users/components/UserCreationModal.vue @@ -12,6 +12,7 @@ import { Toast, VButton, VModal, VSpace } from "@halo-dev/components"; import { setFocus } from "@/formkit/utils/focus"; import { useQueryClient } from "@tanstack/vue-query"; import { useI18n } from "vue-i18n"; +import { PASSWORD_REGEX } from "@/constants/regex"; const { t } = useI18n(); const queryClient = useQueryClient(); @@ -112,9 +113,13 @@ const handleCreateUser = async () => { :label="$t('core.user.change_password_modal.fields.new_password.label')" type="password" name="password" - validation="required:trim|length:5,100|matches:/^\S.*\S$/" + :validation="[ + ['required'], + ['length', 5, 257], + ['matches', PASSWORD_REGEX], + ]" :validation-messages="{ - matches: $t('core.formkit.validation.trim'), + matches: $t('core.formkit.validation.password'), }" > import SubmitButton from "@/components/button/SubmitButton.vue"; +import { PASSWORD_REGEX } from "@/constants/regex"; import { setFocus } from "@/formkit/utils/focus"; import type { User } from "@halo-dev/api-client"; import { consoleApiClient } from "@halo-dev/api-client"; @@ -81,9 +82,13 @@ const handleChangePassword = async () => { :label="$t('core.user.change_password_modal.fields.new_password.label')" name="password" type="password" - validation="required:trim|length:5,100|matches:/^\S.*\S$/" + :validation="[ + ['required'], + ['length', 5, 257], + ['matches', PASSWORD_REGEX], + ]" :validation-messages="{ - matches: $t('core.formkit.validation.trim'), + matches: $t('core.formkit.validation.password'), }" > { " name="password_confirm" type="password" - validation="confirm|required:trim|length:5,100|matches:/^\S.*\S$/" - :validation-messages="{ - matches: $t('core.formkit.validation.trim'), - }" + validation="confirm|required" >