mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-09 02:56:02 +08:00
Harden runtime config and input validation
This commit is contained in:
27
server/utils/validation.ts
Normal file
27
server/utils/validation.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/i
|
||||
|
||||
export function isValidEmail(email: string): boolean {
|
||||
return EMAIL_REGEX.test(email.trim())
|
||||
}
|
||||
|
||||
export interface PasswordValidationResult {
|
||||
valid: boolean
|
||||
message?: string
|
||||
}
|
||||
|
||||
export function validatePasswordStrength(password: string): PasswordValidationResult {
|
||||
const trimmed = password.trim()
|
||||
if (trimmed.length < 10) {
|
||||
return { valid: false, message: 'Passwort muss mindestens 10 Zeichen lang sein.' }
|
||||
}
|
||||
if (/\s/.test(trimmed)) {
|
||||
return { valid: false, message: 'Passwort darf keine Leerzeichen enthalten.' }
|
||||
}
|
||||
if (!/[A-Za-zÄÖÜäöüß]/.test(trimmed) || !/[0-9]/.test(trimmed)) {
|
||||
return { valid: false, message: 'Bitte Buchstaben und Zahlen kombinieren.' }
|
||||
}
|
||||
if (!/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/.test(trimmed)) {
|
||||
return { valid: false, message: 'Mindestens ein Sonderzeichen erhöht die Sicherheit.' }
|
||||
}
|
||||
return { valid: true }
|
||||
}
|
||||
Reference in New Issue
Block a user