diff options
Diffstat (limited to 'packages/frontend/src/components/MkSignupDialog.form.vue')
| -rw-r--r-- | packages/frontend/src/components/MkSignupDialog.form.vue | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue index de9b320da2..60541b256b 100644 --- a/packages/frontend/src/components/MkSignupDialog.form.vue +++ b/packages/frontend/src/components/MkSignupDialog.form.vue @@ -77,7 +77,6 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { } from 'vue'; -import getPasswordStrength from 'syuilo-password-strength'; import { toUnicode } from 'punycode/'; import MkButton from './MkButton.vue'; import MkInput from './MkInput.vue'; @@ -132,6 +131,30 @@ const shouldDisableSubmitting = $computed((): boolean => { passwordRetypeState !== 'match'; }); +function getPasswordStrength(source: string): number { + let strength = 0; + let power = 0.018; + + // 英数字 + if (/[a-zA-Z]/.test(source) && /[0-9]/.test(source)) { + power += 0.020; + } + + // 大文字と小文字が混ざってたら + if (/[a-z]/.test(source) && /[A-Z]/.test(source)) { + power += 0.015; + } + + // 記号が混ざってたら + if (/[!\x22\#$%&@'()*+,-./_]/.test(source)) { + power += 0.02; + } + + strength = power * source.length; + + return Math.max(0, Math.min(1, strength)); +} + function onChangeUsername(): void { if (username === '') { usernameState = null; |