From 4c232a500db66bdaf2cbf4915aaf9b25c0f9a1ab Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 29 Sep 2023 19:09:17 -0400 Subject: [PATCH] Adding structure to responses --- Controllers/PasswordVerification.cs | 11 ++---- Controllers/UsersController.cs | 56 ++++++++++++++++++++++++++--- Models/User.cs | 13 ++++--- Program.cs | 2 -- 4 files changed, 62 insertions(+), 20 deletions(-) diff --git a/Controllers/PasswordVerification.cs b/Controllers/PasswordVerification.cs index 9a09812..0eac000 100644 --- a/Controllers/PasswordVerification.cs +++ b/Controllers/PasswordVerification.cs @@ -1,4 +1,3 @@ -using System; using System.Security.Cryptography; using System.Text; @@ -10,17 +9,13 @@ namespace TextSender_API.Controllers; public class PasswordVerification { #region Fiends - private UsersRepository? _userRepo; - private SaltRepository? _saltRepo; + private UsersRepository _userRepo; + private SaltRepository _saltRepo; private int _keySize = 64; private int _iterations = 350000; #endregion #region Constructors - public PasswordVerification() - { - } - public PasswordVerification(UsersRepository userRepo, SaltRepository saltRepo) { this._userRepo = userRepo; @@ -31,7 +26,7 @@ public class PasswordVerification #region Methods public bool VerifyPassword(User user, string password) { - var salt = this._saltRepo.Retrieve(user.Id); + var salt = this._saltRepo.Retrieve(user.Id!); var hashedPassword = this.HashPassword(user, salt, password); return hashedPassword.Equals(user.Password); diff --git a/Controllers/UsersController.cs b/Controllers/UsersController.cs index 9c203c9..86f5119 100644 --- a/Controllers/UsersController.cs +++ b/Controllers/UsersController.cs @@ -1,6 +1,7 @@ using System.Linq; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using TextSender_API.Models; using TextSender_API.Repositories; @@ -30,6 +31,8 @@ public class UsersController : ControllerBase [HttpPost("login")] public IActionResult Login([FromBody] User userRequest) { + var response = new LoginResponse(); + try { var connString = this._config.GetConnectionString("MongoDBURI"); @@ -40,11 +43,12 @@ public class UsersController : ControllerBase if (result.Item1 && pwdVerify.VerifyPassword(result.Item2, userRequest.Password!)) { - Ok(result.Item2); + response.Data.Add(result.Item2); + Ok(response); } else { - return NotFound(); + return NotFound(response); } } catch (Exception ex) @@ -52,12 +56,14 @@ public class UsersController : ControllerBase this._logger.LogError($"An error occurred: {ex.Message}"); } - return Ok(); + return Ok(response); } [HttpPost("register"), DisableRequestSizeLimit] public IActionResult Upload([FromBody] User userRequest) { + var response = new RegisterUserResponse(); + try { var connString = this._config.GetConnectionString("MongoDBURI"); @@ -68,7 +74,7 @@ public class UsersController : ControllerBase if (!result) { - var pwdVerify = new PasswordVerification(); + var pwdVerify = new PasswordVerification(userRepo, saltRepo); var salt = pwdVerify.CreateSalt(userRequest); var hashedPassword = pwdVerify.HashPassword(userRequest, salt); @@ -77,6 +83,8 @@ public class UsersController : ControllerBase userRequest.DateCreated = DateTime.Now; userRepo.CreateUser(userRequest); + response.Data.Add(userRequest); + salt.UserId = userRequest.Id; saltRepo.Create(salt); } @@ -90,7 +98,45 @@ public class UsersController : ControllerBase this._logger.LogError($"An error occurred: {ex.Message}"); } - return Ok(); + return Ok(response); + } + #endregion + + #region Responses + public class LoginResponse + { + #region Properties + [JsonProperty("data")] + public List Data { get; set; } + #endregion + + #region Constructors + public LoginResponse() + { + this.Data = new List(); + } + #endregion + + #region Methods + #endregion + } + + public class RegisterUserResponse + { + #region Properties + [JsonProperty("data")] + public List Data { get; set; } + #endregion + + #region Constructors + public RegisterUserResponse() + { + this.Data = new List(); + } + #endregion + + #region Methods + #endregion } #endregion } diff --git a/Models/User.cs b/Models/User.cs index 4dc8992..9cbf051 100644 --- a/Models/User.cs +++ b/Models/User.cs @@ -1,10 +1,6 @@ -using System; - using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; -using MongoDB.Bson.Serialization.Conventions; -using MongoDB.Bson.Serialization.IdGenerators; -using MongoDB.Driver; +using Newtonsoft.Json; namespace TextSender_API.Models; @@ -13,18 +9,25 @@ public class User #region Properties [BsonId] [BsonRepresentation(BsonType.ObjectId)] + [JsonProperty("id")] public string? Id { get; set; } [BsonElement("firstname")] + [JsonProperty("firstname")] public string? Firstname { get; set; } [BsonElement("lastname")] + [JsonProperty("lastname")] public string? Lastname { get; set; } [BsonElement("phonenumber")] + [JsonProperty("phone_number")] public string? PhoneNumber { get; set; } [BsonElement("username")] + [JsonProperty("username")] public string? Username { get; set; } [BsonElement("password")] + [JsonProperty("password")] public string? Password { get; set; } [BsonElement("datecreated")] + [JsonProperty("date_created")] public DateTime? DateCreated { get; set; } #endregion } diff --git a/Program.cs b/Program.cs index 065e1e6..99cc324 100644 --- a/Program.cs +++ b/Program.cs @@ -1,5 +1,3 @@ -using Newtonsoft.Json; - var builder = WebApplication.CreateBuilder(args); // Add services to the container.