Spaces:
Running
Running
File size: 2,199 Bytes
3418204 01be06d 3418204 01be06d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using TaskTrackingSystem.Shared;
using TaskTrackingSystem.Shared.Models.Auth;
namespace TaskTrackingSystem.WebApi.Features.Auth
{
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
private readonly AuthService _authService;
public AuthController(AuthService authService)
{
_authService = authService;
}
[HttpPost("login")]
public async Task<IActionResult> Login([FromBody] LoginDto loginDto)
{
try
{
var response = await _authService.LoginAsync(loginDto);
if (response == null)
{
// Wrap the error inside your official Result architecture
return Unauthorized(Result<AuthResponseDto>.Failure(ResultMessages.InvalidCredentials, 401));
}
// Wrap the payload inside your official Result architecture
return Ok(Result<AuthResponseDto>.Success(response));
}
catch (InvalidOperationException ex)
{
return BadRequest(Result<AuthResponseDto>.Failure(ex.Message, 400));
}
}
[HttpPost("register")]
public async Task<IActionResult> Register([FromBody] RegisterDto registerDto)
{
try
{
var response = await _authService.RegisterAsync(registerDto);
return Ok(Result<AuthResponseDto>.Success(response));
}
catch (InvalidOperationException ex)
{
return BadRequest(Result<AuthResponseDto>.Failure(ex.Message, 400));
}
}
[HttpPost("reset-password")]
public async Task<IActionResult> ResetPassword([FromBody] ResetPasswordDto resetPasswordDto)
{
var result = await _authService.ResetPasswordAsync(resetPasswordDto);
if (!result.IsSuccess)
{
return StatusCode(result.StatusCode, result);
}
return Ok(result);
}
}
}
|