package handlers import ( "os" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/repositories" "github.com/gin-gonic/gin" "golang.org/x/oauth2" "golang.org/x/oauth2/endpoints" ) type AuthHandlers struct { repo repositories.AuthRepository logger *logger.Logger } var configGithub = &oauth2.Config{ ClientID: os.Getenv("GITHUB_CLIENT_ID"), ClientSecret: os.Getenv("GITHUB_CLIENT_SECRET"), RedirectURL: "https://d3m0k1d.ru/", Scopes: []string{"user"}, Endpoint: endpoints.GitHub, } func NewAuthHandlers(repo repositories.AuthRepository) *AuthHandlers { return &AuthHandlers{repo: repo, logger: logger.New(false)} } // Callback godoc // @Summary Callback for oauth2 providers // @Description Callback for oauth2 providers // @Tags auth // @Accept json // @Produce json // @Success 200 {object} map[string]string // @Router /callback/github [get] func (h *AuthHandlers) CallbackGithub(c *gin.Context) { h.logger.Info("CallbackGithub called") token, err := configGithub.Exchange(c.Request.Context(), c.Query("code")) if err != nil { h.logger.Error("error request: " + err.Error()) c.Status(500) } h.logger.Info("200 OK GET /callback/github") c.JSON(200, gin.H{"token": token}) }