UsersController.cs 972 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using RunnersMeet.Server.Domain;
  4. using RunnersMeet.Server.Persistence;
  5. namespace RunnersMeet.Server.Controllers;
  6. [Route("api/[controller]")]
  7. [ApiController]
  8. [Authorize]
  9. public class UsersController : ControllerBase
  10. {
  11. private readonly IRequestRouter _requestRouter;
  12. public UsersController(IRequestRouter requestRouter)
  13. {
  14. _requestRouter = requestRouter;
  15. }
  16. [HttpGet("validate")]
  17. public ActionResult<UserValidationResult> Validate([FromQuery] string? nickname)
  18. {
  19. if (!ApiUser.Current.IsValidUser)
  20. {
  21. throw new ApiException("UsersController.Validate call without a User / authentication token");
  22. }
  23. var userProfile = _requestRouter
  24. .For(new ValidateUserRequest(ApiUser.Current.UserId, nickname))
  25. .Process<UserProfile>();
  26. return new UserValidationResult
  27. {
  28. UserProfile = userProfile,
  29. Claims = ApiUser.Current.Claims,
  30. };
  31. }
  32. }