49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
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})
|
|
}
|