fix vikings profile and vist farm on MMO

This commit is contained in:
Robert Paciorek 2023-09-02 16:50:24 +00:00 committed by Spirtix
parent d122786778
commit 391be35a7a
2 changed files with 15 additions and 14 deletions

View File

@ -20,10 +20,10 @@ public class AchievementController : Controller {
[HttpPost] [HttpPost]
[Produces("application/xml")] [Produces("application/xml")]
[Route("AchievementWebService.asmx/GetPetAchievementsByUserID")] [Route("AchievementWebService.asmx/GetPetAchievementsByUserID")]
[VikingSession(UseLock=false)] public IActionResult GetPetAchievementsByUserID([FromForm] string userId) {
public IActionResult GetPetAchievementsByUserID(Viking viking, [FromForm] string userId) { // NOTE: this is public info (for mmo) - no session check
List<UserAchievementInfo> dragonsAchievement = new List<UserAchievementInfo>(); List<UserAchievementInfo> dragonsAchievement = new List<UserAchievementInfo>();
foreach (Dragon dragon in viking.Dragons) { foreach (Dragon dragon in ctx.Dragons.Where(d => d.VikingId == userId)) {
dragonsAchievement.Add( dragonsAchievement.Add(
achievementService.CreateUserAchievementInfo(dragon.EntityId, dragon.PetXP, AchievementPointTypes.DragonXP) achievementService.CreateUserAchievementInfo(dragon.EntityId, dragon.PetXP, AchievementPointTypes.DragonXP)
); );
@ -94,8 +94,7 @@ public class AchievementController : Controller {
[Produces("application/xml")] [Produces("application/xml")]
[Route("AchievementWebService.asmx/GetAchievementsByUserID")] [Route("AchievementWebService.asmx/GetAchievementsByUserID")]
public IActionResult GetAchievementsByUserID([FromForm] string userId) { public IActionResult GetAchievementsByUserID([FromForm] string userId) {
// TODO: check session // NOTE: this is public info (for mmo) - no session check
Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Id == userId); Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Id == userId);
if (viking != null) { if (viking != null) {
return Ok(new ArrayOfUserAchievementInfo { return Ok(new ArrayOfUserAchievementInfo {

View File

@ -374,10 +374,10 @@ public class ContentController : Controller {
[HttpPost] [HttpPost]
[Produces("application/xml")] [Produces("application/xml")]
[Route("V2/ContentWebService.asmx/GetAllActivePetsByuserId")] [Route("V2/ContentWebService.asmx/GetAllActivePetsByuserId")]
[VikingSession(UseLock=false)] public RaisedPetData[]? GetAllActivePetsByuserId([FromForm] string userId, [FromForm] bool active) {
public RaisedPetData[]? GetAllActivePetsByuserId(Viking viking, [FromForm] string userId, [FromForm] bool active) { // NOTE: this is public info (for mmo) - no session check
RaisedPetData[] dragons = viking.Dragons // TODO (multiplayer) we should use userId ? RaisedPetData[] dragons = ctx.Dragons
.Where(d => d.RaisedPetData is not null) .Where(d => d.VikingId == userId && d.RaisedPetData != null)
.Select(GetRaisedPetDataFromDragon) .Select(GetRaisedPetDataFromDragon)
.ToArray(); .ToArray();
@ -476,13 +476,12 @@ public class ContentController : Controller {
[Produces("application/xml")] [Produces("application/xml")]
[Route("ContentWebService.asmx/GetImageByUserId")] [Route("ContentWebService.asmx/GetImageByUserId")]
public ImageData? GetImageByUserId([FromForm] string userId, [FromForm] string ImageType, [FromForm] int ImageSlot) { public ImageData? GetImageByUserId([FromForm] string userId, [FromForm] string ImageType, [FromForm] int ImageSlot) {
// NOTE: this is public info (for mmo) - no session check
Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Id == userId); Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Id == userId);
if (viking is null || viking.Images is null) { if (viking is null || viking.Images is null) {
return null; return null;
} }
// TODO: should we restrict images to only those the caller owns?
return GetImageData(viking, ImageType, ImageSlot); return GetImageData(viking, ImageType, ImageSlot);
} }
@ -649,13 +648,16 @@ public class ContentController : Controller {
[HttpPost] [HttpPost]
[Produces("application/xml")] [Produces("application/xml")]
[Route("ContentWebService.asmx/GetUserRoomItemPositions")] [Route("ContentWebService.asmx/GetUserRoomItemPositions")]
[VikingSession(UseLock=false)] public IActionResult GetUserRoomItemPositions([FromForm] string userId, [FromForm] string roomID) {
public IActionResult GetUserRoomItemPositions(Viking viking, [FromForm] string roomID) { // NOTE: this is public info (for mmo) - no session check
Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Id == userId);
if (roomID is null) if (roomID is null)
roomID = ""; roomID = "";
Room? room = viking.Rooms.FirstOrDefault(x => x.RoomId == roomID); // TODO: this can break visiting farm of another viking's Room? room = viking?.Rooms.FirstOrDefault(x => x.RoomId == roomID);
if (room is null) if (room is null)
return Ok(new UserItemPositionList { UserItemPosition = new UserItemPosition[0] }); return Ok(new UserItemPositionList { UserItemPosition = new UserItemPosition[0] });
return Ok(roomService.GetUserItemPositionList(room)); return Ok(roomService.GetUserItemPositionList(room));
} }