Add new Frontend API folder
This commit is contained in:
72
frontend/src/api/utils/validation.ts
Normal file
72
frontend/src/api/utils/validation.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
// frontend/src/api/utils/validation.ts
|
||||
/**
|
||||
* Request Validation Utilities
|
||||
*/
|
||||
|
||||
export class RequestValidator {
|
||||
static validateEmail(email: string): boolean {
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
}
|
||||
|
||||
static validatePassword(password: string): {
|
||||
valid: boolean;
|
||||
errors: string[];
|
||||
} {
|
||||
const errors: string[] = [];
|
||||
|
||||
if (password.length < 8) {
|
||||
errors.push('Password must be at least 8 characters long');
|
||||
}
|
||||
|
||||
if (!/(?=.*[a-z])/.test(password)) {
|
||||
errors.push('Password must contain at least one lowercase letter');
|
||||
}
|
||||
|
||||
if (!/(?=.*[A-Z])/.test(password)) {
|
||||
errors.push('Password must contain at least one uppercase letter');
|
||||
}
|
||||
|
||||
if (!/(?=.*\d)/.test(password)) {
|
||||
errors.push('Password must contain at least one number');
|
||||
}
|
||||
|
||||
return {
|
||||
valid: errors.length === 0,
|
||||
errors,
|
||||
};
|
||||
}
|
||||
|
||||
static validateFile(file: File, allowedTypes: string[], maxSize: number): {
|
||||
valid: boolean;
|
||||
errors: string[];
|
||||
} {
|
||||
const errors: string[] = [];
|
||||
|
||||
if (!allowedTypes.includes(file.type)) {
|
||||
errors.push(`File type ${file.type} is not allowed`);
|
||||
}
|
||||
|
||||
if (file.size > maxSize) {
|
||||
errors.push(`File size exceeds maximum of ${maxSize} bytes`);
|
||||
}
|
||||
|
||||
return {
|
||||
valid: errors.length === 0,
|
||||
errors,
|
||||
};
|
||||
}
|
||||
|
||||
static validatePhoneNumber(phone: string): boolean {
|
||||
// Basic international phone number validation
|
||||
const phoneRegex = /^\+?[1-9]\d{1,14}$/;
|
||||
return phoneRegex.test(phone.replace(/\s/g, ''));
|
||||
}
|
||||
|
||||
static validateRequired(value: any, fieldName: string): string | null {
|
||||
if (value === null || value === undefined || value === '') {
|
||||
return `${fieldName} is required`;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user