check_auth.go 958 B

1234567891011121314151617181920212223242526272829303132333435
  1. package auth
  2. import (
  3. "database/sql"
  4. "git.dmitriygnatenko.ru/dima/homethings/internal/interfaces"
  5. "git.dmitriygnatenko.ru/dima/homethings/internal/mappers"
  6. "github.com/gofiber/fiber/v2"
  7. )
  8. // @Router /api/v1/auth/check [get]
  9. // @Success 200 {object} dto.UserResponse
  10. // @Failure 403 {object} dto.ErrorResponse
  11. // @Failure 500 {object} dto.ErrorResponse
  12. // @Summary Check auth
  13. // @Tags Auth
  14. // @Accept json
  15. // @Produce json
  16. func CheckAuthHandler(sp interfaces.ServiceProvider) fiber.Handler {
  17. return func(fctx *fiber.Ctx) error {
  18. ctx := fctx.Context()
  19. claims := sp.GetAuthService().GetClaims(fctx)
  20. user, err := sp.GetUserRepository().Get(ctx, claims["name"].(string))
  21. if err != nil {
  22. if err == sql.ErrNoRows {
  23. return fiber.NewError(fiber.StatusForbidden, "")
  24. }
  25. return fiber.NewError(fiber.StatusInternalServerError, err.Error())
  26. }
  27. return fctx.JSON(mappers.ConvertToUserResponseDTO(*user))
  28. }
  29. }