From 105ac85a663f47865d972f312a5d8066ebdbac26 Mon Sep 17 00:00:00 2001 From: amazing-username Date: Sat, 27 Apr 2019 03:31:23 +0000 Subject: [PATCH] Updated User model, Updated Password encryption to use a BCrypt implementation, Updated UserStoreContext #23, #24, #33 --- Controllers/RegisterController.cs | 2 +- Controllers/Utilities/PasswordEncryption.cs | 12 +++++------- Icarus.csproj | 1 + Models/Context/UserStoreContext.cs | 8 +++++--- Models/User.cs | 4 ++-- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Controllers/RegisterController.cs b/Controllers/RegisterController.cs index 617e5b4..4678605 100644 --- a/Controllers/RegisterController.cs +++ b/Controllers/RegisterController.cs @@ -42,7 +42,7 @@ namespace Icarus.Controllers Console.WriteLine($"Password: {user.Password}"); PasswordEncryption pe = new PasswordEncryption(); - user = pe.HashPassword(user); + user.Password = pe.HashPassword(user); Console.WriteLine($"Hashed Password: {user.Password}"); UserStoreContext context = HttpContext.RequestServices diff --git a/Controllers/Utilities/PasswordEncryption.cs b/Controllers/Utilities/PasswordEncryption.cs index 2c36190..e68ecd4 100644 --- a/Controllers/Utilities/PasswordEncryption.cs +++ b/Controllers/Utilities/PasswordEncryption.cs @@ -1,6 +1,7 @@ using System; using System.Security.Cryptography; +using BCrypt.Net; using Microsoft.AspNetCore.Cryptography.KeyDerivation; using Icarus.Models; @@ -22,22 +23,19 @@ namespace Icarus.Controllers.Utilities #region Methods - public User HashPassword(User user) + public string HashPassword(User user) { try { - var userSalt = GenerateSalt(); - var userHash = GenerateHash(user.Password, userSalt); + string hashedPassword = string.Empty; + hashedPassword = BCrypt.Net.BCrypt.HashPassword(user.Password); - user.Password = userHash; - user.Salt = userSalt; + return hashedPassword; - return user; } catch (Exception ex) { var exMsg = ex.Message; - Console.WriteLine($"An error occurred {exMsg}"); } return null; diff --git a/Icarus.csproj b/Icarus.csproj index daf221f..a2860d1 100644 --- a/Icarus.csproj +++ b/Icarus.csproj @@ -6,6 +6,7 @@ + diff --git a/Models/Context/UserStoreContext.cs b/Models/Context/UserStoreContext.cs index 88ea29d..4f9f341 100644 --- a/Models/Context/UserStoreContext.cs +++ b/Models/Context/UserStoreContext.cs @@ -33,16 +33,17 @@ namespace Icarus.Models.Context using (MySqlConnection conn = GetConnection()) { conn.Open(); - string query = "INSERT INTO Users(Username, Password, Salt, " + + string query = "INSERT INTO Users(Username, Password, Nickname," + "Email, PhoneNumber, Firstname, Lastname, " + "DateCreated, LastLogin) VALUES(@Username, " + - "@Password, @Salt, @Email, @PhoneNumber, " + + "@Password, @Nickname, @Email, @PhoneNumber, " + "@Firstname, @Lastname, @DateCreated, @LastLogin)"; using (MySqlCommand cmd = new MySqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@Username", user.Username); cmd.Parameters.AddWithValue("@Password", user.Password); - cmd.Parameters.AddWithValue("@Salt", user.Salt); + //cmd.Parameters.AddWithValue("@Salt", user.Salt); + cmd.Parameters.AddWithValue("@Nickname", user.Nickname); cmd.Parameters.AddWithValue("@Email", user.Email); cmd.Parameters.AddWithValue("@PhoneNumber", user.PhoneNumber); cmd.Parameters.AddWithValue("@Firstname", user.Firstname); @@ -80,6 +81,7 @@ namespace Icarus.Models.Context while (reader.Read()) { user.Id = Convert.ToInt32(reader["Id"]); + user.Nickname = reader["Nickname"].ToString(); user.Email = reader["Email"].ToString(); user.PhoneNumber = reader["PhoneNumber"].ToString(); user.Firstname = reader["Firstname"].ToString(); diff --git a/Models/User.cs b/Models/User.cs index df3e81d..ecdad66 100644 --- a/Models/User.cs +++ b/Models/User.cs @@ -10,10 +10,10 @@ namespace Icarus.Models public int Id { get; set; } [JsonProperty("username")] public string Username { get; set; } + [JsonProperty("nickname")] + public string Nickname { get; set; } [JsonProperty("password")] public string Password { get; set; } - [JsonIgnore] - public byte[] Salt { get; set; } [JsonProperty("email")] public string Email { get; set; } [JsonProperty("phone_number")]