示例#1
0
        private void ProcessSignupRequest(UnauthorizedMessage signupMessage)
        {
            var signupData = GetData <SignupRequest>(signupMessage);

            if (signupData == null)
            {
                return;
            }

            var reason = 0;

            if (string.IsNullOrEmpty(signupData.Username) || string.IsNullOrEmpty(signupData.Password))
            {
                reason = 1001;
            }

            if (signupData.Username.Length <= 3)
            {
                reason = 1002;
            }

            if (_userRepository.GetPlayerByName(signupData.Username) != null)
            {
                reason = 1003;
            }

            if (reason > 0)
            {
                _loginSender.SignupFail(signupMessage.Connection, reason);
                return;
            }

            var name = signupData.Username;
            var hash = Pbkdf2.HashPassword(signupData.Password);

            var token = _tokenService.GenerateUniqueToken();

            _userRepository.CreateNewPlayer(name, hash, token);

            var player = _userRepository.GetPlayerByToken(token);

            SendPlayerInformation(player, signupMessage.Connection, token);
        }
示例#2
0
        private void ProcessLoginRequest(UnauthorizedMessage loginMessage)
        {
            var loginData = GetData <LoginRequest>(loginMessage);

            if (loginData == null)
            {
                return;
            }

            Player player;
            string token;

            if (!string.IsNullOrEmpty(loginData.Token))
            {
                player = _userRepository.GetPlayerByToken(loginData.Token);

                if (player == null)
                {
                    _loginSender.Fail(loginMessage.Connection, 4002);
                    return;
                }

                token = loginData.Token;
            }
            else
            {
                player = _userRepository.GetPlayerByLogin(loginData.Username, loginData.Password);

                if (player == null)
                {
                    _loginSender.Fail(loginMessage.Connection, 4001);
                    return;
                }

                token = _tokenService.GenerateUniqueToken();
                _tokenRepository.SetPlayerToken(player, token);
            }

            SendPlayerInformation(player, loginMessage.Connection, token);
        }