Files
schedtxt_api/Controllers/UsersController.cs
T
kdeng00 f6afac5fd8 Added login endpoint
Started adding endpoint to login users
2023-09-28 06:58:42 -04:00

97 lines
2.7 KiB
C#

using System.Linq;
using Microsoft.AspNetCore.Mvc;
using TextSender_API.Models;
using TextSender_API.Repositories;
namespace TextSender_API.Controllers;
[ApiController]
[Route("api/v1/user")]
public class UsersController : ControllerBase
{
#region Fields
private readonly ILogger<UsersController> _logger;
private IConfiguration _config;
#endregion
#region Constructors
public UsersController(ILogger<UsersController> logger, IConfiguration config)
{
this._logger = logger;
this._config = config;
}
#endregion
#region Methods
[HttpPost("login")]
public IActionResult Login([FromBody] User userRequest)
{
try
{
var connString = this._config.GetConnectionString("MongoDBURI");
var userRepo = new UsersRepository(connString!);
var saltRepo = new SaltRepository(connString!);
var pwdVerify = new PasswordVerification(userRepo, saltRepo);
var result = userRepo.Exists(userRequest);
if (result.Item1 && pwdVerify.VerifyPassword(result.Item2, userRequest.Password!))
{
Ok(result.Item2);
}
else
{
return NotFound();
}
}
catch (Exception ex)
{
this._logger.LogError($"An error occurred: {ex.Message}");
}
return Ok();
}
[HttpPost("register"), DisableRequestSizeLimit]
public IActionResult Upload([FromBody] User userRequest)
{
try
{
var connString = this._config.GetConnectionString("MongoDBURI");
var userRepo = new UsersRepository(connString!);
var saltRepo = new SaltRepository(connString!);
var allUsers = userRepo.RetrieveAllUsers();
var result = allUsers.Exists(ea => ea.Username!.Equals(userRequest.Username));
if (!result)
{
var pwdVerify = new PasswordVerification();
var salt = pwdVerify.CreateSalt(userRequest);
var hashedPassword = pwdVerify.HashPassword(userRequest, salt);
this._logger.LogInformation("Creating user");
userRequest.Password = hashedPassword;
userRequest.DateCreated = DateTime.Now;
userRepo.CreateUser(userRequest);
salt.UserId = userRequest.Id;
saltRepo.Create(salt);
}
else
{
this._logger.LogInformation("User already exists");
}
}
catch (Exception ex)
{
this._logger.LogError($"An error occurred: {ex.Message}");
}
return Ok();
}
#endregion
}