diff --git a/Client/Login/main.js b/Client/Login/main.js index ee786ad7..64ae00f6 100644 --- a/Client/Login/main.js +++ b/Client/Login/main.js @@ -3,17 +3,10 @@ * @author VegaZ, hydrant * @copyright (c) 2008 - 2018 Life of German */ - var loginBrowser; -loginBrowser = mp.browsers.new('package://Login/login.html'); -mp.gui.chat.activate(false); -mp.gui.cursor.show(true, true); -mp.game.ui.displayHud(false); -mp.game.ui.displayRadar(false); - var loginCam = mp.cameras.new('login', new mp.Vector3(-1883.736, -781.4911, 78.27616), new mp.Vector3(3.185999, 0, -79.59519), 40); -loginCam.setActive(true); -mp.game.cam.renderScriptCams(true, false, 0, true, false); + +mp.events.callRemote('IsPlayerBanned'); mp.events.add('loginInformationToServer', (password) => { @@ -73,6 +66,22 @@ mp.events.add('registerFail', (reason) => { showCefError(reason); }); +mp.events.add('showLogin', () => { + + loginBrowser = mp.browsers.new('package://Login/login.html'); + mp.gui.chat.activate(false); + mp.gui.cursor.show(true, true); + mp.game.ui.displayHud(false); + mp.game.ui.displayRadar(false); + + loginCam.setActive(true); + mp.game.cam.renderScriptCams(true, false, 0, true, false); +}); + function showCefError(error) { loginBrowser.execute(`showError(\`` + error + `\`)`); } + +//function isPlayerBanned() { + +//} \ No newline at end of file diff --git a/Server/Entities/Ban.cs b/Server/Entities/Ban.cs index 5919b614..9a9438c9 100644 --- a/Server/Entities/Ban.cs +++ b/Server/Entities/Ban.cs @@ -25,8 +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; } + + public int Applied { get; set; } + public int UntilDateTime { get; set; } } } diff --git a/Server/Events/Connect.cs b/Server/Events/Connect.cs index 69e1552b..632e42ce 100644 --- a/Server/Events/Connect.cs +++ b/Server/Events/Connect.cs @@ -24,6 +24,36 @@ namespace reallife_gamemode.Server.Events player.Position = new Vector3(-1883.736, -781.4911, -10); player.FreezePosition = true; } - + [RemoteEvent("IsPlayerBanned")] + public void IsPlayerBanned(Client player) + { + using (var loginUser = new Model.DatabaseContext()) + { + var user = loginUser.Users.SingleOrDefault(b => b.Name == player.Name); + if (user.BanId != null) + { + using (var banUser = new DatabaseContext()) + { + + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + var bannedUser = banUser.Bans.SingleOrDefault(u => u.Id == user.BanId); + if (bannedUser.Applied == bannedUser.UntilDateTime) + { + player.SendChatMessage("!{#FF4040}Du wurdest permanent gebannt! [" + bannedUser.Reason + "]"); + //player.Kick(); + } + else + { + var timeStamp = bannedUser.UntilDateTime; + player.SendChatMessage("Du bist noch bis zum !{#FF4040}" + dt.AddSeconds(timeStamp).ToLocalTime() + " Uhr ~s~gebannt. [" + bannedUser.Reason + "]"); + //player.Kick(); + } + + } + } + else player.TriggerEvent("showLogin"); + } + } + } } diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 874285ff..f3dac381 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using GTANetworkAPI; +using reallife_gamemode.Model; +using reallife_gamemode.Server.Entities; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -36,7 +38,7 @@ namespace reallife_gamemode.Server.Events if (user.Password != NAPI.Util.GetHashSha256(password)) { player.TriggerEvent("loginFail", "Passwort inkorrekt!"); - } + } else { player.TriggerEvent("loginSuccess"); diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index 71c8a776..2d0666e8 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -31,23 +31,30 @@ namespace reallife_gamemode.Server.Extensions 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)}; + int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; + Ban user; + 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}; + //TODO user.Kick(); + mins--; + } + else + { + NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); + user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 }; + //TODO user.Kick(); + } + banUser.Bans.Add(user); banUser.SaveChanges(); + + var targetUser = banUser.Users.FirstOrDefault(u => u.Name == target.Name); + targetUser.BanId = user.Id; + banUser.SaveChanges(); } } }