/// <summary> /// Called after checking access token and reading game ref id from database /// </summary> /// <param name="loginId"></param> /// <param name="accessToken"></param> /// <param name="gameRefId"></param> public void OnUserLoggedIn(FullUserAuth auth, LoginClientPeer peer) { lock (syncRoot) { LoggedInUser user; if (this.TryGetValue(auth.login, out user)) { this.Remove(auth.login); } this.Add(auth.login, new LoggedInUser(auth, peer)); log.InfoFormat("added user = {0} yellow", auth.login); } }
private void AddUserToCollection(DbUserLogin user, string platform) { FullUserAuth fullAuth = new FullUserAuth(user.login, user.gameRef, user.facebookId, user.vkontakteId, user.deviceId); (peer as LoginClientPeer).SetLogin(new LoginId(fullAuth.login)); application.LogedInUsers.OnUserLoggedIn(fullAuth, peer as LoginClientPeer); application.stats.OnUserLoggedIn(fullAuth, platform); if (user != null) { user.IncrementSessionCount(); user.UpdateLastSessionTime(); application.SaveUser(user); } }
public void OnUserLoggedIn(FullUserAuth auth, string platform) { if (!ContainsKey(auth.login)) { var stat = m_Application.DbUserLogins.GetStat(auth.login); TryAdd(stat.login, stat); } DbUserStat existingStat = null; if (TryGetValue(auth.login, out existingStat)) { existingStat.platform = platform; existingStat.sessions.Add(CommonUtils.SecondsFrom1970()); } }
public override OperationResponse Handle(OperationRequest request, SendParameters sendParameters) { RegisterUserRequest operation = new RegisterUserRequest(peer.Protocol, request); if (!operation.IsValid) { return(new OperationResponse(request.OperationCode) { ReturnCode = (short)ReturnCode.InvalidOperationParameter, DebugMessage = operation.GetErrorMessage() }); } operation.Prepare(); if (!mLoginUtils.IsLoginLengthValid(operation.login)) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.LoginVeryShort }; return(new OperationResponse(request.OperationCode, responseObject)); } string password = StringChiper.Decrypt(operation.encryptedPassword); if (!mLoginUtils.IsPasswordLengthValid(password)) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.PasswordVeryShort }; return(new OperationResponse(request.OperationCode, responseObject)); } if (!mLoginUtils.IsLoginCharactersValid(operation.login)) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.LoginHasInvalidCharacters }; return(new OperationResponse(request.OperationCode, responseObject)); } if (!mLoginUtils.IsPasswordCharactersValid(password)) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.PasswordHasInvalidCharacters }; return(new OperationResponse(request.OperationCode, responseObject)); } var emailChecker = new RegexUtilities(); if (!emailChecker.IsValidEmail(operation.email)) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.EmailInvalid }; return(new OperationResponse(request.OperationCode, responseObject)); } var database = application.DbUserLogins; if (database.ExistsUser(new LoginId(operation.login))) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.UserWithSameLoginAlreadyExists }; return(new OperationResponse(request.OperationCode, responseObject)); } var emailUser = database.GetUser(new Email(operation.email)); if (emailUser != null) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)LoginReturnCode.UserWithSuchEmailAlreadyExists }; return(new OperationResponse(request.OperationCode, responseObject)); } LoginReturnCode code = LoginReturnCode.Ok; LoginAuth loginAuth = new LoginAuth(operation.login, password); Email email = new Email(operation.email); FacebookId fbId = new FacebookId(operation.facebookId); VkontakteId vkId = new VkontakteId(operation.vkontakteId); var dbUser = database.CreateUser(loginAuth, email, fbId, vkId); FullUserAuth fullAuth = new FullUserAuth(loginAuth.login, dbUser.gameRef, fbId.value, vkId.value, string.Empty); string platform = string.Empty; if (operation.platform != null) { platform = operation.platform; } (peer as LoginClientPeer).SetLogin(new LoginId(loginAuth.login)); application.LogedInUsers.OnUserLoggedIn(fullAuth, peer as LoginClientPeer); application.stats.OnUserLoggedIn(fullAuth, platform); if (code != LoginReturnCode.Ok) { RegisterUserResponse responseObject = new RegisterUserResponse { login = operation.login, gameRef = string.Empty, returnCode = (int)code }; return(new OperationResponse(request.OperationCode, responseObject)); } RegisterUserResponse successResponseObject = new RegisterUserResponse { gameRef = dbUser.gameRef, login = dbUser.login, returnCode = (int)code }; return(new OperationResponse(request.OperationCode, successResponseObject)); }
public LoggedInUser(FullUserAuth fAuth, LoginClientPeer peer) { this.auth = fAuth; this.peer = peer; }