Files
yourwillyourwish/lib/auth/validation.ts
2026-02-06 21:44:04 -06:00

46 lines
1.2 KiB
TypeScript

export function sanitizeText(value: string) {
return value.trim();
}
export function sanitizeMessage(value: string) {
// Allow only alphanumeric, spaces, underscores, newlines, and basic punctuation
// Remove any HTML tags, scripts, and dangerous characters
return value
.trim()
.replace(/<[^>]*>/g, '') // Remove HTML tags
.replace(/[^\w\s\n\r_.,!?'-]/g, '') // Keep only safe characters
.slice(0, 5000); // Limit length
}
export interface PasswordRequirement {
name: string;
met: boolean;
}
export function getPasswordRequirements(value: string): PasswordRequirement[] {
return [
{
name: "8-20 Characters",
met: value.length >= 8 && value.length <= 20,
},
{
name: "At least one capital letter",
met: /[A-Z]/.test(value),
},
{
name: "At least one number",
met: /\d/.test(value),
},
{
name: "No spaces",
met: !/\s/.test(value),
},
];
}
export function isStrongPassword(value: string) {
// 8-20 chars, at least one uppercase, at least one number, no spaces
return /^(?=.*[A-Z])(?=.*\d)[A-Za-z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{8,20}$/.test(value) && !/\s/.test(value);
}