namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/users")] [ApiController] public class UsersController : ControllerBase { private readonly IUserService _userService; public UsersController(IUserService userService) { _userService = userService; } [Authorize] [HttpGet] public IActionResult GetAll() { return Ok("Hello from protected route"); } [HttpPost] public async Task CreateUser([FromBody] CreateUserRequestDto model) { await _userService.CreateUser(model); return Ok(); } [HttpPost("authenticate")] public async Task Authenticate([FromBody] AuthenticateRequestDto model) { var response = await _userService.Authenticate(model); if (response.IsError is true) return BadRequest(new { message = response.ErrorMessage }); return Ok(response.Data); } [HttpPost("refresh")] public async Task RefreshToken([FromBody] RefreshTokenRequestDto model) { var response = await _userService.RefreshTokenAsync(model); if (response.Error != null) { return BadRequest(new AuthFailedResponse { Error = response.Error }); } return Ok(response); } [HttpPost("logout")] public async Task Logout(int userId) { var response = await _userService.DeleteRefreshToken(userId); if (response.IsError) { return BadRequest(new { message = response.ErrorMessage }); } return Ok(); } [HttpPost("authenticateGoogle")] public async Task GoogleLogin([FromBody] GoogleApiTokenInfo model) { var response = await _userService.Authenticate(model); if (response.IsError is true) return BadRequest(new { message = response.ErrorMessage }); return Ok(response.Data); } } }