From 5dae651d29e1a76ed96c1bedeb380ac9c142aaa3 Mon Sep 17 00:00:00 2001 From: harold Date: Fri, 4 Jul 2025 11:11:45 +0500 Subject: [PATCH] add fix for bearer token --- internal/api/http/handlers/donat/donat.go | 15 +++++++++++---- internal/app/http/app.go | 2 +- internal/docs/docs.go | 7 ++++++- internal/docs/swagger.json | 7 ++++++- internal/docs/swagger.yaml | 4 +++- internal/model/interfaces.go | 2 +- internal/service/donat/donat.go | 12 +++--------- 7 files changed, 31 insertions(+), 18 deletions(-) diff --git a/internal/api/http/handlers/donat/donat.go b/internal/api/http/handlers/donat/donat.go index 011cb0c..075e377 100644 --- a/internal/api/http/handlers/donat/donat.go +++ b/internal/api/http/handlers/donat/donat.go @@ -61,33 +61,40 @@ func CreateDonat(donatService model.DonatService) echo.HandlerFunc { // @Tags Donate // @Accept json // @Produce json +// @Security BearerAuth // @Param streamer-login path string true "Login стримера" // @Param request body model.CreateDonatBody true "Create donat body json" // @Success 200 {object} model.CreateDonatResponse "Donat page updated successfully" // @Failure 400 {object} echo.HTTPError "Bad request" // @Failure 401 {object} echo.HTTPError "Unauthorized or expired token" // @Failure 422 {object} echo.HTTPError "Validation error" -// @Router /test-donat/{streamer-login} [post] +// @Router /test-donat [post] func CreateTestDonat(donatService model.DonatService) echo.HandlerFunc { return func(request echo.Context) error { ctx := context.Background() var body model.CreateDonatBody - err := validator.ParseAndValidate(&body, request) + authData, err := donatService.CheckToken(request) + if err != nil { + slog.Error("Unauthorized") + return echo.NewHTTPError(http.StatusUnauthorized, err.Error()) + } + + err = validator.ParseAndValidate(&body, request) if err != nil { slog.Error(err.Error()) return echo.NewHTTPError(http.StatusUnprocessableEntity, "Unprocessable Entity") } - streamerLogin := request.Param("streamer-login") err = donatService.CreateTestDonat( ctx, - streamerLogin, + authData.AccountID, body.Text, body.DonatUser, body.TargetID, body.Amount, ) + if err != nil { return request.JSON(http.StatusInternalServerError, err.Error()) } diff --git a/internal/app/http/app.go b/internal/app/http/app.go index 555e475..ac1b114 100644 --- a/internal/app/http/app.go +++ b/internal/app/http/app.go @@ -80,7 +80,7 @@ func IncludeDonatHandlers( server.POST(PREFIX+"/init-streamer", InitNewStreamer(donatService)) server.POST(PREFIX+"/donat/:streamer-login", CreateDonat(donatService)) - server.POST(PREFIX+"/test-donat/:streamer-login", CreateTestDonat(donatService)) + server.POST(PREFIX+"/test-donat", CreateTestDonat(donatService)) server.GET(PREFIX+"/inner-donate-page", GetInnerDonatePage(donatService)) server.GET(PREFIX+"/outer-donate-page/:streamer-login", GetOuterDonatePage(donatService)) diff --git a/internal/docs/docs.go b/internal/docs/docs.go index 6874d49..e71225f 100644 --- a/internal/docs/docs.go +++ b/internal/docs/docs.go @@ -1111,8 +1111,13 @@ const docTemplate = `{ } } }, - "/test-donat/{streamer-login}": { + "/test-donat": { "post": { + "security": [ + { + "BearerAuth": [] + } + ], "description": "Create donat", "consumes": [ "application/json" diff --git a/internal/docs/swagger.json b/internal/docs/swagger.json index be77e1e..179cb4f 100644 --- a/internal/docs/swagger.json +++ b/internal/docs/swagger.json @@ -1104,8 +1104,13 @@ } } }, - "/test-donat/{streamer-login}": { + "/test-donat": { "post": { + "security": [ + { + "BearerAuth": [] + } + ], "description": "Create donat", "consumes": [ "application/json" diff --git a/internal/docs/swagger.yaml b/internal/docs/swagger.yaml index ba608bd..1760a85 100644 --- a/internal/docs/swagger.yaml +++ b/internal/docs/swagger.yaml @@ -1269,7 +1269,7 @@ paths: summary: Get outer donate page info tags: - Donate - /test-donat/{streamer-login}: + /test-donat: post: consumes: - application/json @@ -1305,6 +1305,8 @@ paths: description: Validation error schema: $ref: '#/definitions/echo.HTTPError' + security: + - BearerAuth: [] summary: Create donat tags: - Donate diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index a2a8093..73deff6 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -76,7 +76,7 @@ type DonatService interface { CreateDonat(ctx context.Context, streamerLogin, text, donatUser string, targetID *int, amount int) (CreateDonatResponse, error) CreateTestDonat( ctx context.Context, - streamerLogin string, + streamerID int, text string, donatUser string, targetID *int, diff --git a/internal/service/donat/donat.go b/internal/service/donat/donat.go index 1fa2aed..5b13b79 100644 --- a/internal/service/donat/donat.go +++ b/internal/service/donat/donat.go @@ -149,25 +149,19 @@ func (donatService *ServiceDonat) CreateDonat( func (donatService *ServiceDonat) CreateTestDonat( ctx context.Context, - streamerLogin string, + streamerID int, text string, donatUser string, targetID *int, amount int, ) error { - donatePage, err := donatService.donatRepo.GetDonatPageByLogin(ctx, streamerLogin) - if err != nil { - slog.Error("Failed to get donate page", "error", err.Error()) - return err - } - orderID := uuid.New() widgetID := donatService.defaultWidgetID - err = donatService.donatRepo.CreateDonat( + err := donatService.donatRepo.CreateDonat( ctx, - donatePage.StreamerID, + streamerID, targetID, widgetID, orderID,