private void Register(string inputLogin, string inputPassword, TcpClient client) { DisplayColoredText($"Новый пользователь под именем {inputLogin} регистрируется на сервере", ConsoleColor.Yellow); using var Database = new DarkChatDbContext(); bool userExists = Database.Users.Any(u => u.Login == inputLogin.ToLower()); if (userExists == false) { string hashedPassword = GetHash(inputPassword); User newUser = new User() { Login = inputLogin, Password = hashedPassword }; Database.Users.Add(newUser); Database.SaveChanges(); SendResponce("success", client); DisplayColoredText($"Пользователь под ником {newUser.Login} успешно зарегистрировался под id: {newUser.Id}", ConsoleColor.Green); } else { SendResponce("Fail: Пользователь с таким ником уже зарегистрирован на сервере", client); } }
private void Autorization(string inputLogin, string inputPassword, TcpClient client) { DisplayColoredText($"Пользователь {inputLogin} пытается войти", ConsoleColor.Yellow); using var Database = new DarkChatDbContext(); User user = Database.Users.FirstOrDefault(u => u.Login == inputLogin); if (user?.Login == inputLogin && VerifyHashedPassword(user.Password, inputPassword))//проверка данных пользователя { //TODO: Реализовать нормальную проверку есть ли уже этот пользователь на сервере или его нету bool userIsPresentOnTheServer = ConnectedUsers.Any(u => u.Login == inputLogin); if (userIsPresentOnTheServer == false) { SendResponce("success", client); DisplayColoredText($"Пользователь {user.Login} идентифицирован", ConsoleColor.Green); SendMessageToAllUsersAsync(null, $"Пользователь {user.Login} вошел на сервер"); ConnectedUser connectedUser = new ConnectedUser(user, client); ConnectedUsers.Add(connectedUser); ListenMessageFromUserAsync(connectedUser); } else { SendResponce("Fail: Такой аккаунт уже присутствует на сервере", client); DisplayColoredText($"Warning! Произошла попытка входа на один аккаунт с двух разных клиентов, на аккаунт пользователя под именем {inputLogin}" , ConsoleColor.Red); } } else { SendResponce("Fail: Неверные данные авторизации", client); DisplayColoredText($"Пользователь {inputLogin} не идентифицирован", ConsoleColor.Red); } }