Files
step3/api/QuestionsApi/Services/AuthValidation.cs

31 lines
1.1 KiB
C#

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;
}
}