feat: update callback handler and repository for user
All checks were successful
Backend ci / build (push) Successful in 3m23s
All checks were successful
Backend ci / build (push) Successful in 3m23s
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
|
||||
"gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger"
|
||||
@@ -81,7 +82,35 @@ func (h *AuthHandlers) CallbackGithub(c *gin.Context) {
|
||||
c.JSON(500, gin.H{"error": "exchange failed", "details": err.Error()})
|
||||
return
|
||||
}
|
||||
client := h.config.Client(c.Request.Context(), token)
|
||||
resp, err := client.Get("https://api.github.com/user")
|
||||
if err != nil {
|
||||
h.logger.Error("Get failed: " + err.Error())
|
||||
c.JSON(500, gin.H{"error": "get request failed to github", "details": err.Error()})
|
||||
return
|
||||
}
|
||||
var ghUser struct {
|
||||
ID int `json:"id"`
|
||||
Login string `json:"login"`
|
||||
Email string `json:"email"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
}
|
||||
err = json.NewDecoder(resp.Body).Decode(&ghUser)
|
||||
if err != nil {
|
||||
h.logger.Error("Decode failed: " + err.Error())
|
||||
c.JSON(500, gin.H{"error": "decode failed", "details": err.Error()})
|
||||
return
|
||||
}
|
||||
isreg, err := h.repo.IsRegistered(c.Request.Context(), ghUser.ID)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{"error": "database error", "details": err.Error()})
|
||||
return
|
||||
}
|
||||
if isreg {
|
||||
c.JSON(200, gin.H{"user": ghUser})
|
||||
return
|
||||
}
|
||||
|
||||
h.logger.Info("200 OK - token received")
|
||||
c.JSON(200, gin.H{"token": token})
|
||||
c.JSON(200, gin.H{"user": ghUser})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user