mirror of
https://github.com/mgerb/go-discord-bot
synced 2026-01-09 08:32:48 +00:00
71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
package routes
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/mgerb/go-discord-bot/server/db"
|
|
"github.com/mgerb/go-discord-bot/server/webserver/discord"
|
|
"github.com/mgerb/go-discord-bot/server/webserver/middleware"
|
|
"github.com/mgerb/go-discord-bot/server/webserver/model"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type oauthReq struct {
|
|
Code string `json:"code"`
|
|
}
|
|
|
|
// AddOauthRoutes -
|
|
func AddOauthRoutes(group *gin.RouterGroup) {
|
|
group.POST("/oauth", oauthHandler)
|
|
}
|
|
|
|
func oauthHandler(c *gin.Context) {
|
|
|
|
var json oauthReq
|
|
|
|
err := c.ShouldBindJSON(&json)
|
|
|
|
if err != nil {
|
|
log.Error(err)
|
|
c.JSON(500, err)
|
|
return
|
|
}
|
|
|
|
// get users oauth code
|
|
oauth, err := discord.Oauth(json.Code)
|
|
|
|
if err != nil {
|
|
log.Error(err)
|
|
c.JSON(500, err)
|
|
return
|
|
}
|
|
|
|
// verify and grab user information
|
|
user, err := discord.GetUserInfo(oauth.AccessToken)
|
|
|
|
if err != nil {
|
|
log.Error(err)
|
|
c.JSON(500, err)
|
|
return
|
|
}
|
|
|
|
// save/update user in database
|
|
err = model.UserSave(db.GetConn(), &user)
|
|
|
|
if err != nil {
|
|
log.Error(err)
|
|
c.JSON(500, err)
|
|
return
|
|
}
|
|
|
|
// generate json web token
|
|
token, err := middleware.GetJWT(user)
|
|
|
|
if err != nil {
|
|
log.Error(err)
|
|
c.JSON(500, err)
|
|
return
|
|
}
|
|
|
|
c.JSON(200, token)
|
|
}
|