namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/users")] [ApiController] public class UsersController : ControllerBase { private readonly IUserService _userService; private readonly IEmailer _emailer; public UsersController(IUserService userService, IEmailer emailer) { _userService = userService; _emailer = emailer; } [HttpGet] public async Task GetAll() { return Ok("Hello from protected route"); } [HttpGet("ForgotPassword")] public async Task ForgotPassword(string email) { var result = await _userService.GetEmailConfirmationUrlAsync(email); return Ok(result); } [HttpPost("RessetPassword")] public async Task ResetPassword([FromBody]ResetPasswordModel model) { var result = await _userService.PasswordResetAsync(email:model.Email,code: model.Code,password: model.Password); return Ok(result); } [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(GoogleApiModel model) { var response = await _userService.Authenticate(model); if (response.IsError is true) return BadRequest(new { message = response.ErrorMessage }); return Ok(response.Data); } } }