コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }