51 lines
1.2 KiB
C#
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);
|
|
}
|
|
} |