feat: add username and email validation function

This commit is contained in:
Lin, Hung-Shin committed 2023-09-14 17:39:26 +08:00
1 parent 49417c405a
commit 3aa27ae597
2 files changed
+83

No files matched your search

+39
View File
@@ -59,3 +59,42 @@ export function verifyJWT(token) {
})
})
}
export function isValidUsername(username) {
// Define a regular expression pattern for a valid Linux username.
const usernamePattern = /^[a-z][a-z0-9_-]*$/
// Test the username against the pattern.
if (!usernamePattern.test(username)) return false
// check if the username is between 1 and 32 characters
if (username.length < 1 || username.length > 32) {
return false
}
const reservedWords = [
'root',
'admin',
'administrator',
'sysadmin',
'system',
'daemon',
'bin',
'nobody',
'nogroup',
'guest',
'user',
]
if (reservedWords.includes(username)) {
return false
}
return true
}
export function isValidEmail(email) {
// Define a regular expression pattern for a valid email address.
const emailPattern = /^[\w-.+]+@([\w][\w-]*\.)+[\w-]{2,}$/
// Test the email against the pattern.
return emailPattern.test(email)
}
+44
View File
@@ -0,0 +1,44 @@
import { isValidEmail, isValidUsername } from '../../src/utils/auth'
test('check valid username', () => {
const valid = ['alex', 'alex123', 'john_doe', 'john-doe', 'rudeus']
const invalid = ['root', 'admin', '12michael', 'Justin', 'testUser']
valid.forEach((username) => {
expect(isValidUsername(username)).toBe(true)
})
invalid.forEach((username) => {
expect(isValidUsername(username)).toBe(false)
})
})
test('check valid email', () => {
const validEmails = [
'user@example.com',
'user.name@example.co.uk',
'user1234@email.domain',
'user+tag@example.net',
'user@subdomain.example.com',
'user@123.45.67.89',
]
const invalidEmails = [
'user@.com',
'@example.com',
'user@-invalid-domain.com',
'user@.123',
'user@.123.45.67',
]
validEmails.forEach((email) => {
console.log(email)
expect(isValidEmail(email)).toBe(true)
})
invalidEmails.forEach((email) => {
console.log(email)
expect(isValidEmail(email)).toBe(false)
})
})