From cfcaf981396ea4cb096f3d4904bad922bdb94aca Mon Sep 17 00:00:00 2001 From: VegaZ Date: Wed, 19 Sep 2018 19:53:31 +0200 Subject: [PATCH] Add unfinished Login-System --- Client/Login/login.html | 4 +--- Client/Login/login.js | 10 ++++++-- Client/Login/main.js | 24 +++++++++++++++++-- Server/Entities/User.cs | 3 ++- Server/Events/Login.cs | 42 ++++++++++++++++++++++++++++++---- Server/Services/HashService.cs | 18 +++++++++++++++ 6 files changed, 88 insertions(+), 13 deletions(-) create mode 100644 Server/Services/HashService.cs diff --git a/Client/Login/login.html b/Client/Login/login.html index 0bfe5b52..c8aa0a1c 100644 --- a/Client/Login/login.html +++ b/Client/Login/login.html @@ -20,7 +20,6 @@ ERROR TEXT
-

@@ -28,7 +27,6 @@

Bereits registriert? Logg dich ein

-

@@ -61,7 +59,7 @@ return; } - if (password.length < 8) { + if (password.length < 8 || passwordRepeat.length < 8) { showError("Das Passwort muss mindestens 8 Zeichen lang sein"); return; } diff --git a/Client/Login/login.js b/Client/Login/login.js index 2e07b8fa..69670ba6 100644 --- a/Client/Login/login.js +++ b/Client/Login/login.js @@ -6,10 +6,16 @@ $('#loginBtn').click(() => { $('.alert').remove(); //Remove any alerts when we attempt to login/register - mp.trigger('loginInformationToServer', $('#usernameInputLogin').val(), $('#passwordInputLogin').val()); + mp.trigger('loginInformationToServer', $('#passwordInputLogin').val()); }); $('#registerBtn').click(() => { $('.alert').remove(); //Remove any alerts when we attempt to login/register - mp.trigger('registerInformationToServer', $('#usernameInputRegister').val(), $('#passwordInputRegister').val()); + if ($('#passwordInputRegister').val().length < 8) { + return; + } + else { + mp.trigger('registerInformationToServer', $('#passwordInputRegister').val()); + } + }); \ No newline at end of file diff --git a/Client/Login/main.js b/Client/Login/main.js index 23f69481..fd346614 100644 --- a/Client/Login/main.js +++ b/Client/Login/main.js @@ -3,8 +3,8 @@ * @author VegaZ * @copyright (c) 2008 - 2018 Life of German */ -var loginBrowser = mp.browsers.new('package://Login/login.html'); -mp.gui.cursor.show(true, true); + +let loginBrowser; mp.events.add('loginInformationToServer', (username, password) => { @@ -17,3 +17,23 @@ mp.events.add('registerInformationToServer', (username, password) => { mp.events.callRemote('OnPlayerRegister', username, password); }); + +/* +mp.events.add('browserCreated', (browser) => { + mp.gui.chat.push("Browser created"); + mp.gui.chat.activate(false); + mp.gui.cursor.show(true); +}); +*/ +mp.events.add('showLogin', (player) => { + mp.gui.chat.push("show login"); + loginBrowser = mp.browsers.new('package://Login/login.html'); +}); + +mp.events.add('registerSuccess', (player) => { + + loginBrowser.destroy(); + mp.gui.chat.activate(true); + player.outputChatBox("Erfolgreich registriert"); + +}); diff --git a/Server/Entities/User.cs b/Server/Entities/User.cs index 1f0a934d..5f8532e1 100644 --- a/Server/Entities/User.cs +++ b/Server/Entities/User.cs @@ -25,7 +25,8 @@ namespace reallife_gamemode.Server.Entities [StringLength(64)] public string Password { get; set; } public int LogUserId { get; set; } - public DateTime RegistrationDate { get; set; } + [Timestamp] + public byte[] RegistrationDate { get; set; } [EmailAddress] [StringLength(64)] public string Email { get; set; } diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 04ebb9b0..c4db02ee 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; +using System.Security.Cryptography; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -14,15 +15,46 @@ namespace reallife_gamemode.Server.Events public class Login : Script { [RemoteEvent("OnPlayerLogin")] - public void OnPlayerLogin(Client player, string username, string password) + public void OnPlayerLogin(Client player, string password) { } - - [RemoteEvent("OnPlayerRegister")] - public void OnPlayerRegister(Client player, string username, string password) + [Command("login")] + public void CmdLogin(Client player) { - + player.Freeze(true); + player.TriggerEvent("showLogin",player); + } + [RemoteEvent("OnPlayerRegister")] + public void OnPlayerRegister(Client player, string password) + { + + using (var loginContext = new Model.DatabaseContext()) + { + var user = new Entities.User { Name = player.Name, SocialClubName = player.SocialClubName, Password = ComputeSha256Hash(password) }; + loginContext.Users.Add(user); + loginContext.SaveChanges(); + } + NAPI.Chat.SendChatMessageToPlayer(player, "Registriert, GZ"); + player.TriggerEvent("registerSuccess"); + } + + static string ComputeSha256Hash(string rawData) + { + // Create a SHA256 + using (SHA256 sha256Hash = SHA256.Create()) + { + // ComputeHash - returns byte array + byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData)); + + // Convert byte array to a string + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < bytes.Length; i++) + { + builder.Append(bytes[i].ToString("x2")); + } + return builder.ToString(); + } } } } diff --git a/Server/Services/HashService.cs b/Server/Services/HashService.cs new file mode 100644 index 00000000..ae5c3a09 --- /dev/null +++ b/Server/Services/HashService.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Security.Cryptography; + +/** +* @overview Life of German Reallife - Event Login (Login.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Services +{ + class HashService + { + + } +}