using System.Net.Mail; using System.Text.RegularExpressions; namespace QuestionsApi.Services; public static partial class AuthValidation { [GeneratedRegex("^[A-Za-z0-9_]{3,24}$", RegexOptions.CultureInvariant)] private static partial Regex UsernamePattern(); public static string NormalizeEmail(string email) => email.Trim().ToLowerInvariant(); public static bool ValidEmail(string email) { var normalized = NormalizeEmail(email); var domain = normalized.Split('@').LastOrDefault() ?? ""; return MailAddress.TryCreate(normalized, out _) && domain.Contains('.'); } public static string? ValidateNewAccount(string username, string email, string password) { if (!UsernamePattern().IsMatch(username.Trim())) return "Username must be 3-24 characters using only letters, numbers, or underscores."; if (password.Length < 8) return "Password must be at least 8 characters."; if (!ValidEmail(email)) return "A valid email address is required."; return null; } }