homework/Data/UserStore.cs

51 lines
1.2 KiB
C#

using System.Security.Cryptography;
using TechnoWorld.Models;
namespace TechnoWorld.Data;
public static class UserStore
{
private static readonly List<AppUser> Users = [];
public static bool Register(string login, string name, string password)
{
login = login.Trim();
if (string.IsNullOrWhiteSpace(login) || Find(login) != null)
{
return false;
}
Users.Add(new AppUser
{
Login = login,
Name = name.Trim(),
PasswordHash = Hash(password)
});
return true;
}
public static AppUser? Validate(string login, string password)
{
var user = Find(login.Trim());
if (user == null || user.PasswordHash != Hash(password))
{
return null;
}
return user;
}
private static AppUser? Find(string login)
{
return Users.FirstOrDefault(u =>
u.Login.Equals(login, StringComparison.OrdinalIgnoreCase));
}
private static string Hash(string value)
{
var bytes = SHA256.HashData(System.Text.Encoding.UTF8.GetBytes(value));
return Convert.ToHexString(bytes);
}
}