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 _logger; public AuthController(IAuthService authService, ILogger logger) { _authService = authService; _logger = logger; } [HttpPost("login")] public async Task> 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", error = ex.Message }); } } }