31 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|