Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

UsersController.cs 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Diligent.WebAPI.Contracts.DTOs.User;
  2. using Diligent.WebAPI.Data.Entities;
  3. namespace Diligent.WebAPI.Host.Controllers.V1
  4. {
  5. [ApiVersion("1.0")]
  6. [Route("v{version:apiVersion}/users")]
  7. [ApiController]
  8. public class UsersController : ControllerBase
  9. {
  10. private readonly IUserService _userService;
  11. private readonly IMapper _mapper;
  12. private readonly IEmailer _emailer;
  13. public UsersController(IUserService userService, IEmailer emailer, IMapper mapper)
  14. {
  15. _userService = userService;
  16. _mapper = mapper;
  17. _emailer = emailer;
  18. }
  19. [Authorize]
  20. [HttpGet]
  21. public async Task<IActionResult> GetAll()
  22. {
  23. return Ok(_mapper.Map<IEnumerable<User?>, IEnumerable<UserResponseDTO>>(await _userService.GetAll()));
  24. }
  25. [HttpGet("ForgotPassword")]
  26. public async Task<IActionResult> ForgotPassword(string email)
  27. {
  28. var result = await _userService.GetEmailConfirmationUrlAsync(email);
  29. return Ok(result);
  30. }
  31. [HttpPost("RessetPassword")]
  32. public async Task<IActionResult> ResetPassword([FromBody]ResetPasswordModel model)
  33. {
  34. var result = await _userService.PasswordResetAsync(email:model.Email,code: model.Code,password: model.Password);
  35. return Ok(result);
  36. }
  37. [HttpPost]
  38. public async Task<IActionResult> CreateUser([FromBody] CreateUserRequestDto model)
  39. {
  40. await _userService.CreateUser(model);
  41. return Ok();
  42. }
  43. [HttpPost("authenticate")]
  44. public async Task<IActionResult> Authenticate([FromBody] AuthenticateRequestDto model)
  45. {
  46. var response = await _userService.Authenticate(model);
  47. if (response.IsError is true)
  48. return BadRequest(new { message = response.ErrorMessage });
  49. return Ok(response.Data);
  50. }
  51. [HttpPost("refresh")]
  52. public async Task<IActionResult> RefreshToken([FromBody] RefreshTokenRequestDto model)
  53. {
  54. var response = await _userService.RefreshTokenAsync(model);
  55. if (response.Error != null)
  56. {
  57. return BadRequest(new AuthFailedResponse { Error = response.Error });
  58. }
  59. return Ok(response);
  60. }
  61. [HttpPost("logout")]
  62. public async Task<IActionResult> Logout(int userId)
  63. {
  64. var response = await _userService.DeleteRefreshToken(userId);
  65. if (response.IsError)
  66. {
  67. return BadRequest(new { message = response.ErrorMessage });
  68. }
  69. return Ok();
  70. }
  71. [HttpPost("authenticateGoogle")]
  72. public async Task<IActionResult> GoogleLogin(GoogleApiModel model)
  73. {
  74. var response = await _userService.Authenticate(model);
  75. if (response.IsError is true)
  76. return BadRequest(new { message = response.ErrorMessage });
  77. return Ok(response.Data);
  78. }
  79. }
  80. }