public UserValidationResult(string json, GetPlayerInfoResponse playerInfo) { var user = SteamPlayerMapping.GetSteamUserFromSteamObject(json); // if (user.profilestate) ; if (user.communityvisibilitystate != 3) { Error = "Profile is not public"; ShouldReviceItems = false; return; } if (playerInfo.DataCase == GetPlayerInfoResponse.DataOneofCase.Error) { Error = playerInfo.Error.Message; ShouldReviceItems = false; return; } if (playerInfo.PlayerInfo.IsLimitedAccount) { Error = "Account is limit"; ShouldReviceItems = false; return; } if (playerInfo.PlayerInfo.TradeBanState != "None") { Error = "Tradebanned account"; ShouldReviceItems = false; return; } var memberSince = DateTimeOffset.FromUnixTimeSeconds(long.Parse(playerInfo.PlayerInfo.MemberSince)); var diff = DateTime.UtcNow - memberSince; if (diff < TimeSpan.FromDays(90)) { Error = "The account is to new"; ShouldReviceItems = false; return; } ShouldReviceItems = true; }
private async Task OnSignedIn(CookieSignedInContext ctx) { var userJson = ctx.HttpContext.Items["User"]; var steamId = ctx.Principal.GetSteamId(); var steamApiKey = Configuration.GetSection("Steam").GetSection("ApiKey").Value; var url = $"https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={steamApiKey}&steamids={steamId}"; if (userJson == null) { userJson = await new HttpClient().GetStringAsync(url); } DatabaseModel.User user; try { var res = new Regex(@"(https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/|\.jpg)") .Replace(userJson.ToString(), ""); user = SteamPlayerMapping.GetUserFromSteamObject(res); } catch (Exception e) { throw new InvalidJsonFromSteamException("Can't convert from steamJsonPlayer data to a user", e); } if (steamId != user.SteamId) { throw new ArgumentException("SteamId is not the same!"); } var firstTimeUser = await IoC.Container.Resolve <IUserService>().UserLoggedIn(user); if (firstTimeUser) { UserValidationResult userValidationResult = new UserValidationResult { Error = "Unknown error", ShouldReviceItems = false }; try { var playerInfo = await IoC.Container.Resolve <ISteamService>().GetPlayerInfoAsync(user.SteamId); userValidationResult = new UserValidationResult(userJson.ToString(), playerInfo); if (userValidationResult.ShouldReviceItems) { var userToSendFrom = await IoC.Container.Resolve <IUserService>().FindAsync(Constants.OurRandomSteamId); var itemToSend = await GetItemToSend(userToSendFrom); if (itemToSend.Count != 0) { await SendItems(user, itemToSend, userToSendFrom); } else { userValidationResult.Error = "Out of items"; userValidationResult.ShouldReviceItems = false; } } } catch (Exception e) { Console.WriteLine(e); } var redirectUrl = $"{ctx.Request.Scheme}://{ctx.Request.Host.Host}/coinflip/create?success={userValidationResult.ShouldReviceItems.ToString()}&reason={userValidationResult.Error}"; ctx.Response.Redirect(redirectUrl); var ste = ctx.HttpContext.Response.Body; var s = new StreamWriter(ste); await s.WriteAsync(""); await s.FlushAsync(); ctx.Response.Body = ste; } }