Initial commit

This commit is contained in:
Developer
2026-02-06 21:44:04 -06:00
commit f85e93c7a6
151 changed files with 22916 additions and 0 deletions

45
lib/auth/validation.ts Normal file
View File

@@ -0,0 +1,45 @@
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);
}