public void Handle(INetworkStateContext <TWorld> gameStateContext, NetworkCommandConnection networkCommandConnectionToHandle) { //Passes through if network command id was already registered as a CLI user. UserDataWithLoginToken userData = null; if (!CachedAuthorizedUsers.ContainsKey(networkCommandConnectionToHandle.ConnectionId)) { userData = CurrentNetworkCommandToFullUserDataTranslator.Translate(networkCommandConnectionToHandle); //check permissions if (!userData.Roles.HasFlag(UserDataRole.CanSendRemoteStateCommands)) { gameStateContext.ChangeHandlerEasier(gameStateContext.GameStateRegistrar.GetNeworkLayerState((byte)ServerInternalGameStates.Error), networkCommandConnectionToHandle); return; } if (!CachedAuthorizedUsers.TryAdd(networkCommandConnectionToHandle.ConnectionId, userData)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Whoops! Could not add user to cached authorized users"); gameStateContext.ChangeHandlerEasier(gameStateContext.GameStateRegistrar.GetNeworkLayerState((byte)ServerInternalGameStates.Error), networkCommandConnectionToHandle); return; } //say to client ready for rsc, waiting for signal gameStateContext.CurrentNetOutgoingMessageBusService.SendToClient( CLINetworkCommandConstants.WaitForSignalCommand, gameStateContext.GameStateRegistrar.WorldGameStateDataLayer.GetGameStateByLoginToken(userData?.LoginToken), networkCommandConnectionToHandle.Connection); } else { //this is only triggered if the user has been registered as a CLI user gameStateContext.GameStateRegistrar.GetNeworkLayerState((byte)ServerInternalGameStates.CLIPassthrough).Handle(gameStateContext, networkCommandConnectionToHandle); } }
public string Register(UserData userData) { var userDataWithLoginToken = new UserDataWithLoginToken() { Username = userData.Username, Password = userData.Password, LoginToken = LoginTokenGeneratorService.GetToken(userData) }; SampleDataByLoginToken.Add(userDataWithLoginToken); return(userDataWithLoginToken.LoginToken); }