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) }); } }
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 }); } }
public void LogOutUserUnderIdentity(ServerSideTokenIdentity identity) { lock (identity) { if (identity.LastlyFetchedUser != null) { m_userIdToTokenMapping.TryRemove(identity.LastlyFetchedUser.Id, out _); identity.LastlyFetchedUser = null; } } }
/// <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); } }
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 }); } }