using System.Security.Cryptography; using TechnoWorld.Models; namespace TechnoWorld.Data; public static class UserStore { private static readonly List 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); } }