From 3030a1825ec5049b8f8863f6c08e71cd81fa3c51 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Wed, 26 Sep 2018 21:27:47 +0200 Subject: [PATCH] Add /unban Command --- Server/Commands/Admin.cs | 16 ++++++++++++++++ Server/Extensions/ClientExtension.cs | 15 +++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index bf739c67..102bed3a 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -569,6 +569,22 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(user); ClientExtension.BanPlayer(admin, target, reason, mins); } + [Command("unban", "~m~Benutzung: ~s~/unban [User] ", GreedyArg = true)] + public void CmdAdminUnban(Client admin, string user) + { + if (ClientExtension.IsLoggedIn(admin) == false) + { + ChatService.PlayerNotLoggedIn(admin); + return; + } + if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(admin); + return; + } + Client target = ClientService.GetClientByName(user); + ClientExtension.UnbanPlayer(admin, target); + } //TEST COMMAND diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index 2d0666e8..d272dffb 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -18,7 +18,7 @@ namespace reallife_gamemode.Server.Extensions { public static User GetUser(this Client client) { - using(DatabaseContext dbContext = new DatabaseContext()) + using (DatabaseContext dbContext = new DatabaseContext()) { return dbContext.Users.FirstOrDefault(u => u.Name == client.Name); } @@ -38,7 +38,7 @@ namespace reallife_gamemode.Server.Extensions if (mins == 0) { NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); - user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp}; + user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp }; //TODO user.Kick(); mins--; } @@ -57,5 +57,16 @@ namespace reallife_gamemode.Server.Extensions banUser.SaveChanges(); } } + public static void UnbanPlayer(Client admin, Client target) + { + using (var unbanUser = new DatabaseContext()) + { + var targetUser = unbanUser.Bans.FirstOrDefault(u => u.Id == target.GetUser().BanId); + unbanUser.Bans.Remove(targetUser); + unbanUser.SaveChanges(); + } + admin.SendChatMessage(target.Name + " wurde entbannt."); + //TODO ***Admin Info: {ADMIN-NAME} hat {USER-NAME} entbannt. + } } }