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 namespace Api.Controllers
{ {
[ApiController] [ApiController]
[Route("[controller]")] [Route("api/[controller]")]
public class DeviceController : Controller public class DeviceController : Controller
{ {
private readonly DBContext _context; private readonly DBContext _context;

View File

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

View File

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

View File

@ -41,19 +41,25 @@ namespace Api.DBAccess
return await _context.SaveChangesAsync() == 1; 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); User user = new User();
if (profile == null) 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) if (hashedPassword == user.Password)
{ {
return profile; return user;
} }
return new User(); return new User();
} }

View File

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