Merge authentication into Questions API
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user