From c40e29b971bb6f9da62bba119d4e73bb57a26425 Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Sun, 30 Jun 2024 09:55:47 +0200 Subject: [PATCH] fix: snapshot realms subscription, creating snapshot realms --- .../Middlewares/ActiveSubscriptionMiddleware.cs | 14 ++++++++++---- .../Modes/Realms/Controllers/WorldsController.cs | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Minecraft-Realms-Emulator/Middlewares/ActiveSubscriptionMiddleware.cs b/Minecraft-Realms-Emulator/Middlewares/ActiveSubscriptionMiddleware.cs index 71dd41e..b8f296d 100644 --- a/Minecraft-Realms-Emulator/Middlewares/ActiveSubscriptionMiddleware.cs +++ b/Minecraft-Realms-Emulator/Middlewares/ActiveSubscriptionMiddleware.cs @@ -1,4 +1,5 @@ -using Minecraft_Realms_Emulator.Attributes; +using Microsoft.EntityFrameworkCore; +using Minecraft_Realms_Emulator.Attributes; using Minecraft_Realms_Emulator.Data; using Minecraft_Realms_Emulator.Entities; @@ -19,10 +20,15 @@ namespace Minecraft_Realms_Emulator.Middlewares return; } - Subscription subscription = db.Subscriptions.First(s => s.World.Id == int.Parse(httpContext.Request.RouteValues["wId"].ToString())); - Console.WriteLine(attribute.IsSubscriptionActive(subscription.StartDate)); + var wId = int.Parse(httpContext.Request.RouteValues["wId"].ToString()); + World world = db.Worlds.Include(w => w.Subscription).Include(w => w.ParentWorld.Subscription).FirstOrDefault(w => w.Id == wId); - if (!attribute.IsSubscriptionActive(subscription.StartDate)) + if (world.ParentWorld?.Subscription != null) + { + world = world.ParentWorld; + } + + if (!attribute.IsSubscriptionActive(world.Subscription.StartDate)) { httpContext.Response.StatusCode = 403; await httpContext.Response.WriteAsync("You don't have an active subscription for this world"); diff --git a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs index cababc2..3dfb160 100644 --- a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs +++ b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs @@ -597,6 +597,8 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers Address = $"{defaultServerAddress.Value}:{port}" }; + new DockerHelper(world).CreateServer(port); + Slot slot = new() { World = world,