/// public IInteractionHandler <T> CreateInteractionHandler(Update interaction, Action <T> configureContext) { int senderUserId = interaction.GetOwner().Id; var session = SessionDispatcher[senderUserId]; if (session == null) { var regInfo = RegisteredUsers.FirstOrDefault(registered => registered.Id == senderUserId); if (regInfo != null) //user registered but session not oppened yet { session = SessionDispatcher.StartSession(interaction.GetOwner().ToRegisteredUser(regInfo)); } else { //start registration procedure place it in RouteInteraction with check if session is null } } var context = new T(); context.Session = session; context.User = session.User; context.Interaction = interaction; context.Connection = Connection; configureContext(context); return(InteractionRouter.RouteInteraction(context)); }
private bool CheckIfUserDeletedOrModified(User user) { List <User> remoteUsers = ServerSystemController.GetRegisteredUsers(); List <User> filteredListed = remoteUsers.Where(p => p.Id == user.Id).ToList(); if (filteredListed.Count > 0) { User userInList = filteredListed[0]; if (userInList.NickName != user.NickName) { User userInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(user.NickName)).Value; TcpClient clientInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(user.NickName)).Key; RegisteredUsers.Remove(clientInServer); userInServer.NickName = userInList.NickName; RegisteredUsers.Add(clientInServer, userInServer); showRegisteredPlayers(); showConnectedPlayers(); } return(true); } else { return(false); } }
private void sendAuthorizatonData(string data, NetworkStream nws, TcpClient client, ref User user) { List <User> remoteUsers = ServerSystemController.GetRegisteredUsers(); byte[] responseStream; lock (registrationLock) { if (!remoteUsers.Contains(user)) { RegisteredUsers.Add(client, user); ServerSystemController.AddUserToSystem(user); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } else { if (RegisteredUsers.ContainsValue(user)) { User userInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Value; TcpClient clientInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Key; if (userInServer.Connected) { responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, "400"); } else { User userFromServer = ServerSystemController.GetUserInServer(user); RegisteredUsers.Remove(clientInServer); RegisteredUsers.Add(client, userFromServer); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } } else { User userFromServer = ServerSystemController.GetUserInServer(user); RegisteredUsers.Add(client, userFromServer); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } } nws.Write(responseStream, 0, responseStream.Length); } }