public async Task <IActionResult> PostUsers([FromBody] PassedData <PassedNewEmail> data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (data.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, data.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } Users user = _context.Users.FirstOrDefault(e => e.Name == dbtoken.UserName); if (user.Password != HashClass.GenHash(data.Data.Password)) { return(BadRequest(new DataError("passwordErr", "Password is incorrect."))); } if (data.Data.NewEmail != data.Data.ConfirmEmail) { return(BadRequest(new DataError("newEmailErr", "New email was not confirmed correctly."))); } //all went well user.Email = data.Data.NewEmail; try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (_context.Users.FirstOrDefault(e => ((e.Email == data.Data.NewEmail) && (e.Name != dbtoken.UserName))) != null) { return(BadRequest(new DataError("newEmailErr", "New email has been already used."))); } return(BadRequest(new DataError("serverErr", "Failed to save new password."))); } return(Ok(new { success = true })); }
public async Task <IActionResult> PostTokens([FromBody] PassedData <string> passedData) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (passedData.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, passedData.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(BadRequest(new DataError("databaseErr", "Failed to update tokens."))); } UserTokenResult userResult = new UserTokenResult() { Token = dbtoken.HashedToken, UserName = dbtoken.UserName, }; var h = _context.Heros.Join(_context.UsersHeros.Where(e => e.UserName == dbtoken.UserName), e => e.HeroId, e => e.HeroId, (a, b) => new HeroBrief() { Name = a.Name, Nickname = a.Nickname, Level = a.Lvl, Orders = a.Orders, }); return(Ok(new { success = true, usertoken = userResult, user = new UserBrief() { Username = dbtoken.UserName, Characters = h.ToArray() } })); }
public async Task <IActionResult> PostHeros([FromBody] PassedData <PassedRemoveCharacter> passedData) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (passedData.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, passedData.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } Users user = _context.Users.FirstOrDefault(e => e.Name == dbtoken.UserName); if (user.Password != HashClass.GenHash(passedData.Data.Password)) { return(BadRequest(new DataError("passwordErr", "Password is incorrect."))); } Heros herotoremove = _context.Heros.FirstOrDefault(e => e.Name == passedData.Data.HeroName); UsersHeros conntoremove = _context.UsersHeros.FirstOrDefault(e => e.UserName == dbtoken.UserName && e.HeroId == herotoremove.HeroId); var tokentoremove = _context.ActionToken.Where(e => e.HeroId == herotoremove.HeroId); var locationstoremove = _context.HerosLocations.Where(e => e.HeroId == herotoremove.HeroId); var travelingtoremove = _context.Traveling.Where(e => e.HeroId == herotoremove.HeroId); var equipmenttoremove = _context.Equipment.Where(e => e.HeroId == herotoremove.HeroId); var backpacktoremove = _context.Backpack.Where(e => e.HeroId == herotoremove.HeroId); var healingremove = _context.Healing.Where(e => e.HeroId == herotoremove.HeroId); var fightingremove = _context.Fighting.Where(e => e.HeroId == herotoremove.HeroId); // TODO: remove other features if (tokentoremove.Count() > 0) { _context.ActionToken.RemoveRange(tokentoremove); } if (locationstoremove.Count() > 0) { _context.HerosLocations.RemoveRange(locationstoremove); } if (travelingtoremove.Count() > 0) { _context.Traveling.RemoveRange(travelingtoremove); } if (equipmenttoremove.Count() > 0) { _context.Equipment.RemoveRange(equipmenttoremove); } if (backpacktoremove.Count() > 0) { _context.Backpack.RemoveRange(backpacktoremove); } if (healingremove.Count() > 0) { _context.Healing.RemoveRange(healingremove); } if (fightingremove.Count() > 0) { _context.Fighting.RemoveRange(fightingremove); } _context.Heros.Remove(herotoremove); _context.UsersHeros.Remove(conntoremove); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(BadRequest(new DataError("serverErr", "Failed to remove hero."))); } return(Ok(new { success = true, removedHero = herotoremove.Name })); }
public async Task <IActionResult> PostHeros([FromBody] PassedData <HeroPassed> data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (data.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, data.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } int currheros = this._context.UsersHeros.Where(e => e.UserName == dbtoken.UserName).Count(); if (currheros >= ServerOptions.MaxHerosPerAccount) { return(BadRequest(new DataError("herolimitErr", "You have reached maximum amount of heros per account."))); } int ID = this._context.Heros.Select(x => x.HeroId).DefaultIfEmpty(0).Max(); Heros newly = new Heros() { Charisma = data.Data.Attributes[6], Country = data.Data.Country, // starting location of type?? CurrentLocation = 1, Dexterity = data.Data.Attributes[2], Endurance = data.Data.Attributes[1], Experience = 0, HeroId = ID + 1, Hp = HeroCalculator.PureMaxHP(HeroCalculator.BaseHP(1), data.Data.Attributes), Intelligence = data.Data.Attributes[5], Lvl = 1, Name = data.Data.Name, Nickname = data.Data.Nickname, Orders = 0, Origin = data.Data.Origin, Reflex = data.Data.Attributes[3], Sl = 0, Slbase = 0, Status = 0, Strength = data.Data.Attributes[0], Willpower = data.Data.Attributes[7], Wisdom = data.Data.Attributes[4], Invitational = true, VelocityFactor = 1, }; UsersHeros userheros = new UsersHeros() { HeroId = newly.HeroId, UserName = dbtoken.UserName, }; Equipment eq = Equipment.GenFreshEquipment(newly.HeroId); HerosLocations location = HerosLocations.GenInitialLocation(_context, newly.HeroId); _context.Heros.Add(newly); _context.UsersHeros.Add(userheros); _context.Equipment.Add(eq); _context.HerosLocations.Add(location); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(BadRequest(new DataError("tokenErr", "Hero already exists."))); } return(Ok((HeroBrief)newly)); }
public async Task <IActionResult> PostUsers([FromBody] PassedData <PassedRemoveAccount> data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (data.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, data.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } Users user = _context.Users.FirstOrDefault(e => e.Name == dbtoken.UserName); if (user.Password != HashClass.GenHash(data.Data.Password)) { return(BadRequest(new DataError("passwordErr", "Password is incorrect."))); } //all went well Users deluser = _context.Users.FirstOrDefault(e => e.Name == dbtoken.UserName); var usersheros = _context.UsersHeros.Where(e => e.UserName == deluser.Name); var delheros = _context.Heros.Join(usersheros, e => e.HeroId, e => e.HeroId, (a, b) => a); var delusertoken = _context.UserToken.Where(e => e.UserName == deluser.Name); var deltoken = _context.Tokens.Where(e => e.UserName == deluser.Name); var delactiontokens = _context.ActionToken.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delheroslocations = _context.HerosLocations.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delherostraveling = _context.Traveling.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delherosequipment = _context.Equipment.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delherosbackpack = _context.Backpack.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delheroshealing = _context.Healing.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); var delherosfighting = _context.Fighting.Join(delheros, e => e.HeroId, f => f.HeroId, (a, b) => a); if (delactiontokens.Count() > 0) { _context.ActionToken.RemoveRange(delactiontokens); } if (delheroslocations.Count() > 0) { _context.HerosLocations.RemoveRange(delheroslocations); } if (delherostraveling.Count() > 0) { _context.Traveling.RemoveRange(delherostraveling); } if (delherosequipment.Count() > 0) { _context.Equipment.RemoveRange(delherosequipment); } if (delherosbackpack.Count() > 0) { _context.Backpack.RemoveRange(delherosbackpack); } if (delheroshealing.Count() > 0) { _context.Healing.RemoveRange(delheroshealing); } if (delherosfighting.Count() > 0) { _context.Fighting.RemoveRange(delherosfighting); } if (usersheros.Count() > 0) { _context.UsersHeros.RemoveRange(usersheros); } if (delheros.Count() > 0) { _context.Heros.RemoveRange(delheros); } if (delusertoken.Count() > 0) { _context.UserToken.RemoveRange(delusertoken); } if (deltoken.Count() > 0) { _context.Tokens.RemoveRange(deltoken); } _context.Users.Remove(deluser); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(BadRequest(new DataError("serverErr", "Failed delete account."))); } return(Ok(new { success = true })); }
public static string SelectBRMfrmMaterialYardChk(PassedData formVars) { var r = JsonConvert.SerializeObject(formVars); return(r); }
public async Task <IActionResult> PostHeros([FromBody] PassedData <string> passedData) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime now = DateTime.UtcNow; if (passedData.UserToken == null) { return(BadRequest(new DataError("securityErr", "No authorization controll."))); } UserToken dbtoken = Security.CheckUserToken(this._context, passedData.UserToken); if (dbtoken == null) { return(BadRequest(new DataError("securityErr", "Your data has probably been stolen or modified manually. We suggest password's change."))); } else { if (!dbtoken.IsTimeValid(now)) { return(BadRequest(new DataError("timeoutErr", "You have been too long inactive. Relogin is required."))); } else { dbtoken.UpdateToken(now); } } Heros hero = _context.Heros.Where(e => e.Name == passedData.Data).Join(_context.UsersHeros.Where(e => e.UserName == dbtoken.UserName), e => e.HeroId, e => e.HeroId, (a, b) => a).FirstOrDefault(); if (hero == null) { return(BadRequest(new DataError("noHeroErr", "Hero is not available."))); } ActionToken actionToken = Security.GenerateActionToken(hero.HeroId, _context); ActionTokenResult tokenResult = new ActionTokenResult() { HeroName = hero.Name, Token = actionToken.HashedToken, }; try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(BadRequest(new DataError("databaseErr", "Failed to update tokens."))); } try { var heroStatus = LocationHandler.GetHeroGeneralStatus(_context, hero, now); // equipment generation var Equipment = _context.Equipment.FirstOrDefault(e => e.HeroId == hero.HeroId); if (Equipment == null) { return(BadRequest(new DataError("equipmentErr", "Hero is without equipment."))); } List <int?> used = new List <int?> { Equipment.Armour, Equipment.Bracelet, Equipment.FirstHand, Equipment.Gloves, Equipment.Helmet, Equipment.Neckles, Equipment.Ring1, Equipment.Ring2, Equipment.SecondHand, Equipment.Shoes, Equipment.Trousers }; var ItemsOn = used.Where(e => e.HasValue).Select(e => e.Value).ToList(); var Backpack = _context.Backpack.Where(e => e.HeroId == hero.HeroId); var UsedItems = Backpack.Select(e => e.ItemId).Distinct().ToList(); UsedItems.AddRange(ItemsOn); UsedItems = UsedItems.Distinct().OrderBy(e => e).ToList(); var ItemsInUse = _context.Items.Join(UsedItems, e => e.ItemId, e => e, (a, b) => a).ToArray(); EquipmentResult EQ = Equipment.GenResult(ItemsInUse.ToArray(), Backpack.ToList()); return(Ok(new { success = true, actiontoken = tokenResult, hero = hero.GenResult(EQ, heroStatus.Location, heroStatus.StatusData) })); } catch (Exception e) { return(BadRequest(new DataError("statusErr", e.Message))); } }