Improve username validation

This commit is contained in:
silverpill 2023-01-29 19:01:36 +00:00
parent 95bb7f8cef
commit 187bc664f6
2 changed files with 27 additions and 3 deletions

View file

@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
### Changed
- Improved username validation.
## [1.12.0] - 2023-01-26 ## [1.12.0] - 2023-01-26
### Added ### Added

View file

@ -39,7 +39,13 @@
> >
<div class="addon">@{{ instance.uri }}</div> <div class="addon">@{{ instance.uri }}</div>
</div> </div>
<div class="form-message">Only letters, numbers and underscores are allowed.</div> <div
v-if="!isRegistered"
class="form-message"
:class="{ error: !isUsernameValid() }"
>
Only lowercase letters, numbers and underscores are allowed.
</div>
</div> </div>
<div class="form-control" v-if="loginType === 'password'"> <div class="form-control" v-if="loginType === 'password'">
<input <input
@ -141,6 +147,13 @@ watch($$(instance), () => {
} }
}, { immediate: true }) }, { immediate: true })
function isUsernameValid(): boolean {
if (!username) {
return true
}
return /^[a-z0-9_]+$/.test(username)
}
function isLoginFormValid(): boolean { function isLoginFormValid(): boolean {
if (!instance) { if (!instance) {
return false return false
@ -153,10 +166,13 @@ function isLoginFormValid(): boolean {
} }
} else { } else {
const inviteCodeValid = instance.registrations ? true : Boolean(inviteCode) const inviteCodeValid = instance.registrations ? true : Boolean(inviteCode)
if (!username || !isUsernameValid()) {
return false
}
if (loginType === "password") { if (loginType === "password") {
return Boolean(username) && Boolean(password) && inviteCodeValid return Boolean(password) && inviteCodeValid
} else { } else {
return Boolean(username) && inviteCodeValid return inviteCodeValid
} }
} }
} }
@ -399,6 +415,10 @@ $text-color: #fff;
font-size: 12px; font-size: 12px;
margin-top: 3px; margin-top: 3px;
padding: 0 15px; padding: 0 15px;
&.error {
color: $error-color;
}
} }
button[type="submit"] { button[type="submit"] {