From 3c5ecdd8e4d634a39ddd7c3770192cfc917c8f71 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Tue, 25 Sep 2018 20:24:30 +0200 Subject: [PATCH] Add Ban Command --- Main.cs | 2 +- Model/DatabaseContext.cs | 1 + Server/Commands/Admin.cs | 22 ++++++++++++++++++++-- Server/Entities/Ban.cs | 2 ++ Server/Entities/User.cs | 1 + Server/Extensions/ClientExtension.cs | 22 ++++++++++++++++++++++ 6 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Main.cs b/Main.cs index 3f6166a1..b6dc0e75 100644 --- a/Main.cs +++ b/Main.cs @@ -25,7 +25,7 @@ namespace reallife_gamemode using (var context = new DatabaseContext()) { - context.Users.FirstOrDefault(); + context.Bans.FirstOrDefault(); context.SaveChanges(); } } diff --git a/Model/DatabaseContext.cs b/Model/DatabaseContext.cs index 22d87bf1..709f14f9 100644 --- a/Model/DatabaseContext.cs +++ b/Model/DatabaseContext.cs @@ -40,6 +40,7 @@ namespace reallife_gamemode.Model public DbSet Users { get; set; } public DbSet UserVehicles { get; set; } public DbSet BankAccounts { get; set; } + public DbSet Bans { get; set; } //Logs //public DbSet BanLogs { get; set; } diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 7ee9ddc4..bf739c67 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -550,9 +550,27 @@ namespace reallife_gamemode.Server.Commands else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; - } - + } } + + [Command("ban", "~m~Benutzung: ~s~/ban [User] [Zeit in Minuten(0 für Permanent)] [Grund] ", GreedyArg = true)] + public void CmdAdminBan(Client admin, string user, int mins, string reason) + { + 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.BanPlayer(admin, target, reason, mins); + } + + //TEST COMMAND [Command("own")] public void CmdAdminOwn(Client player) diff --git a/Server/Entities/Ban.cs b/Server/Entities/Ban.cs index 895c4a27..5919b614 100644 --- a/Server/Entities/Ban.cs +++ b/Server/Entities/Ban.cs @@ -25,6 +25,8 @@ namespace reallife_gamemode.Server.Entities public string Reason { get; set; } public string BannedBy { get; set; } + [Timestamp] + public byte[] Applied { get; set; } public byte[] UntilDateTime { get; set; } } } diff --git a/Server/Entities/User.cs b/Server/Entities/User.cs index 9bb71bab..34c4ee3c 100644 --- a/Server/Entities/User.cs +++ b/Server/Entities/User.cs @@ -28,6 +28,7 @@ namespace reallife_gamemode.Server.Entities public int LogUserId { get; set; } [Timestamp] public byte[] RegistrationDate { get; set; } + [EmailAddress] [StringLength(64)] public string Email { get; set; } diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index d45bede9..71c8a776 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -28,5 +28,27 @@ namespace reallife_gamemode.Server.Extensions { return player.GetData("isLoggedIn"); } + + public static void BanPlayer(Client admin, Client target, string reason, int mins) + { + if(mins == 0) + { + NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); + //user.Kick(); + mins--; + } + else + { + NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); + //user.Kick(); + } + + using (var banUser = new DatabaseContext()) + { + var user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, UntilDateTime = BitConverter.GetBytes(DateTime.Now.Ticks - mins)}; + banUser.Bans.Add(user); + banUser.SaveChanges(); + } + } } }