Possible to login with email or username and added api/ back to the routes

This commit is contained in:
Jeas0001 2025-03-20 10:03:42 +01:00
parent 1d4e17dcef
commit f1f5a45232
5 changed files with 18 additions and 12 deletions

View File

@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Authorization;
namespace Api.Controllers
{
[ApiController]
[Route("[controller]")]
[Route("api/[controller]")]
public class DeviceController : Controller
{
private readonly DBContext _context;

View File

@ -3,7 +3,7 @@
namespace Api.Controllers
{
[ApiController]
[Route("[controller]")]
[Route("api/[controller]")]
public class HealthController : Controller
{
[HttpGet]

View File

@ -10,7 +10,7 @@ using Microsoft.AspNetCore.Authorization;
namespace Api.Controllers
{
[ApiController]
[Route("[controller]")]
[Route("api/[controller]")]
public class UserController : Controller
{
private readonly DBContext _context;
@ -23,10 +23,10 @@ namespace Api.Controllers
}
[HttpPost("Login")]
public async Task<IActionResult> Login([FromBody] User user)
public async Task<IActionResult> Login([FromBody] Login login)
{
DbAccess dBAccess = new DbAccess(_context);
user = await dBAccess.Login(user);
var user = await dBAccess.Login(login);
if (user.Id == 0) { return Unauthorized(new { error = "Invalid username or password" }); }
var token = GenerateJwtToken(user);
return Ok(new { token, user.UserName, user.Id });

View File

@ -41,19 +41,25 @@ namespace Api.DBAccess
return await _context.SaveChangesAsync() == 1;
}
public async Task<User> Login(User user)
public async Task<User> Login(Login login)
{
var profile = await _context.Users.FirstAsync(u => u.UserName == user.UserName);
if (profile == null)
User user = new User();
if (!login.EmailOrUsrn.Contains("@"))
{
profile = await _context.Users.FirstAsync(u => u.Email == user.Email);
user = await _context.Users.FirstAsync(u => u.UserName == login.EmailOrUsrn);
}
else
{
user = await _context.Users.FirstAsync(u => u.Email == login.EmailOrUsrn);
}
string hashedPassword = ComputeHash(user.Password, SHA256.Create(), profile.Salt);
if (user == null) { return new User(); }
string hashedPassword = ComputeHash(user.Password, SHA256.Create(), user.Salt);
if (hashedPassword == user.Password)
{
return profile;
return user;
}
return new User();
}

View File

@ -2,7 +2,7 @@
{
public class Login
{
public string Login { get; set; }
public string EmailOrUsrn { get; set; }
public string Password { get; set; }
}