コード例 #1
0
        private LoginResponse TryToLogin(ServerSideTokenIdentity identity, string username, string password)
        {
            lock (identity)
            {
                if (identity.MatchmakingStatus != UserMatchmakingStatus.NON_LOGGED)
                {
                    return(new LoginResponse
                    {
                        Successfulness = false,
                        Message = "Vec si ulogovan"
                    });
                }

                var user = UserLogic.GetUserByLoginInfo(username, password);

                if (!UserConnectionList.GetInstance().TryToLoginUser(user, identity))
                {
                    return(new LoginResponse
                    {
                        Successfulness = false,
                        Message = "Dati korisnik je vec ulogovan"
                    });
                }

                identity.LastlyFetchedUser = user;
                identity.MatchmakingStatus = UserMatchmakingStatus.LOBBY;

                return(new LoginResponse
                {
                    Successfulness = true,
                    UserInfo = UserLogic.GetUserInfo(user)
                });
            }
        }
コード例 #2
0
        public IRemoteObject Handle(AsyncUserToken token, IRemoteObject request)
        {
            RegistrationRequest     registrationRequest = request as RegistrationRequest;
            ServerSideTokenIdentity identity            = token.info as ServerSideTokenIdentity;

            try
            {
                if (identity.LastlyFetchedUser != null)
                {
                    return(new RegistrationResponse
                    {
                        Successfulness = false,
                        Message = "Ne mozes se registrovati dok si ulogovan"
                    });
                }

                UserLogic.RegisterUser(registrationRequest.Username, registrationRequest.Password);

                return(new RegistrationResponse
                {
                    Successfulness = true
                });
            }
            catch (InvalidLogicDataException e)
            {
                return(new RegistrationResponse
                {
                    Successfulness = false,
                    Message = e.Message
                });
            }
        }
コード例 #3
0
 public void LogOutUserUnderIdentity(ServerSideTokenIdentity identity)
 {
     lock (identity)
     {
         if (identity.LastlyFetchedUser != null)
         {
             m_userIdToTokenMapping.TryRemove(identity.LastlyFetchedUser.Id, out _);
             identity.LastlyFetchedUser = null;
         }
     }
 }
コード例 #4
0
 /// <returns>
 /// Vraca tacno ako dati korisnik nije ulogovan i postavlja da je dati identitet njegov,
 /// ako je vec ulogovan vraca false
 /// </returns>
 public bool TryToLoginUser(User user, ServerSideTokenIdentity identity)
 {
     // Biti pazljiv gde se ovo koristi da ne dodje do dead-lock-a
     lock (identity)
     {
         bool result = m_userIdToTokenMapping.TryAdd(user.Id, identity);
         if (result)
         {
             identity.LastlyFetchedUser = user;
         }
         return(result);
     }
 }
コード例 #5
0
        public IRemoteObject Handle(AsyncUserToken token, IRemoteObject request)
        {
            LoginRequest            loginRequest = request as LoginRequest;
            ServerSideTokenIdentity identity     = token.info as ServerSideTokenIdentity;

            try
            {
                return(TryToLogin(identity, loginRequest.Username, loginRequest.Password));
            }
            catch (InvalidLogicDataException e)
            {
                return(new LoginResponse
                {
                    Successfulness = false,
                    Message = e.Message
                });
            }
        }