littleshop/LittleShop/Controllers/AuthController.cs

44 lines
1.3 KiB
C#

using Microsoft.AspNetCore.Mvc;
using LittleShop.DTOs;
using LittleShop.Services;
namespace LittleShop.Controllers;
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
private readonly IAuthService _authService;
private readonly ILogger<AuthController> _logger;
public AuthController(IAuthService authService, ILogger<AuthController> logger)
{
_authService = authService;
_logger = logger;
}
[HttpPost("login")]
public async Task<ActionResult<AuthResponseDto>> Login([FromBody] LoginDto loginDto)
{
try
{
_logger.LogInformation("Login attempt for user: {Username}", loginDto.Username);
var result = await _authService.LoginAsync(loginDto);
if (result != null)
{
_logger.LogInformation("Login successful for user: {Username}", loginDto.Username);
return Ok(result);
}
_logger.LogWarning("Login failed for user: {Username}", loginDto.Username);
return Unauthorized(new { message = "Invalid credentials" });
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during login for user: {Username}", loginDto.Username);
return StatusCode(500, new { message = "An error occurred during login" });
}
}
}