Login.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using SharedKernel.Extensions;
  2. using MediatR;
  3. using Web.Api.Extensions;
  4. using Web.Api.Common;
  5. namespace Web.Api.Endpoints.Auth;
  6. internal sealed class Login : IEndpoint
  7. {
  8. public sealed record Request(
  9. string Email,
  10. string Password
  11. );
  12. public void MapEndpoint(IEndpointRouteBuilder app)
  13. {
  14. app.MapPost("api/auth/login", async (
  15. Request request,
  16. HttpContext httpContext,
  17. ISender sender,
  18. CancellationToken ct
  19. ) => {
  20. var ipAddress = httpContext.GetClientIP();
  21. var userAgent = httpContext.GetUserAgent();
  22. var command = new Application.Features.Api.Auth.Login.Command(
  23. request.Email,
  24. request.Password,
  25. ipAddress,
  26. userAgent
  27. );
  28. var result = await sender.Send(command, ct);
  29. return result.Match(
  30. data => ApiResponse.Ok(data),
  31. CustomResults.Problem
  32. );
  33. })
  34. .WithTags("Auth")
  35. .AllowAnonymous();
  36. }
  37. }