diff --git a/Frontend/lib/mih_apis/mih_validation_services.dart b/Frontend/lib/mih_apis/mih_validation_services.dart new file mode 100644 index 00000000..ad896182 --- /dev/null +++ b/Frontend/lib/mih_apis/mih_validation_services.dart @@ -0,0 +1,67 @@ +class MihValidationServices { + String? validateEmail(String? email) { + if (email == null || email.isEmpty) { + return "Email is required"; + } + final emailRegex = + RegExp(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'); + if (!emailRegex.hasMatch(email)) { + return "Invalid Email Format"; + } + return null; + } + + String? validateUsername(String? username) { + String? errorMessage = ""; + if (username == null || username.isEmpty) { + errorMessage += "Username is required"; + return errorMessage; + } + if (!RegExp(r'^[a-zA-Z]').hasMatch(username)) { + errorMessage += "\n• Your username should start with a letter."; + } + if (!RegExp(r'^[a-zA-Z0-9_]+$').hasMatch(username)) { + errorMessage += + "\n• You can use letters, numbers, and/or underscores only."; + } + if (username.length < 6 || username.length > 30) { + errorMessage += "\n• Keep it between 6 and 30 characters."; + } + if (RegExp(r'[@#\$]').hasMatch(username)) { + errorMessage += "\n• Avoid special characters like @, #, or \$."; + } + + if (errorMessage.isEmpty) { + return null; // No errors, username is valid + } + return "Let's create a great username for you!$errorMessage"; + } + + String? validatePassword(String? password) { + String? errorMessage = ""; + if (password == null || password.isEmpty) { + errorMessage += "Password is required"; + return errorMessage; + } + if (password.length < 8) { + errorMessage += "\n• Contains at least 8 characters long"; + } + if (!RegExp(r'[A-Z]').hasMatch(password)) { + errorMessage += "\n• Contains at least 1 uppercase letter"; + } + if (!RegExp(r'[a-z]').hasMatch(password)) { + errorMessage += "\n• Contains at least 1 lowercase letter"; + } + if (!RegExp(r'[0-9]').hasMatch(password)) { + errorMessage += "\n• Contains at least 1 digit"; + } + if (!RegExp(r'[!@#$%^&*]').hasMatch(password)) { + errorMessage += "\n• Contains at least 1 special character (!@#\$%^&*)"; + } + if (errorMessage.isEmpty) { + return null; // No errors, password is valid + } + errorMessage = "Let's create a great password for you!$errorMessage"; + return errorMessage; + } +}