up
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"chat/services/board"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
@@ -16,29 +15,21 @@ import (
|
||||
"github.com/golang-jwt/jwt"
|
||||
"github.com/google/go-github/v50/github"
|
||||
"github.com/joho/godotenv"
|
||||
"golang.org/x/oauth2"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var db *gorm.DB
|
||||
var jwtSecret = []byte("JWT_SECRET")
|
||||
var oauthConf *oauth2.Config
|
||||
|
||||
func main() {
|
||||
func init() {
|
||||
err := godotenv.Load()
|
||||
if err != nil {
|
||||
log.Fatal("Error loading .env file")
|
||||
}
|
||||
oauthConf = &oauth2.Config{
|
||||
ClientID: os.Getenv("GITHUB_CLIENT_ID"),
|
||||
ClientSecret: os.Getenv("GITHUB_CLIENT_SECRET"),
|
||||
// Scopes: []string{"read:user", "user:email"},
|
||||
Endpoint: oauth2.Endpoint{
|
||||
AuthURL: "https://github.com/login/oauth/authorize",
|
||||
TokenURL: "https://github.com/login/oauth/access_token",
|
||||
}}
|
||||
}
|
||||
|
||||
func main() {
|
||||
initDB()
|
||||
|
||||
router := gin.Default()
|
||||
@@ -53,27 +44,12 @@ func main() {
|
||||
AllowCredentials: true,
|
||||
}))
|
||||
router.GET("/", func(ctx *gin.Context) { ctx.Writer.WriteString("hello world") })
|
||||
router.GET("/auth/github", githubLoginHandler)
|
||||
// router.POST("/auth/signin/sso", )
|
||||
router.GET("/auth/idt", board.IdentityHandler)
|
||||
router.POST("/auth/signin/sso", board.SSOHandler)
|
||||
|
||||
router.Run(":8000")
|
||||
}
|
||||
|
||||
func githubLoginHandler(c *gin.Context) {
|
||||
state := generateState()
|
||||
|
||||
session := sessions.Default(c)
|
||||
session.Set("state", state)
|
||||
if err := session.Save(); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
url := oauthConf.AuthCodeURL("state")
|
||||
log.Println(url)
|
||||
c.Redirect(http.StatusFound, url)
|
||||
}
|
||||
|
||||
func initDB() {
|
||||
dsn := os.Getenv("MYSQL_DSN")
|
||||
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
@@ -92,24 +68,6 @@ func initDB() {
|
||||
log.Println("Database connection established")
|
||||
}
|
||||
|
||||
func generateState() string {
|
||||
return generateRandomString(20)
|
||||
}
|
||||
|
||||
func generateCode() string {
|
||||
return generateRandomString(20)
|
||||
}
|
||||
|
||||
func generateRandomString(length int) string {
|
||||
byteArr := make([]byte, length)
|
||||
_, err := rand.Read(byteArr)
|
||||
if err != nil {
|
||||
log.Fatal("Error generating random string:", err)
|
||||
}
|
||||
|
||||
return base64.URLEncoding.EncodeToString(byteArr)
|
||||
}
|
||||
|
||||
func storeStateToDB(state, code string) error {
|
||||
query := "INSERT INTO oauth_state (state, code) VALUES (?, ?)"
|
||||
err := db.Exec(query, state, code).Error
|
||||
|
||||
Reference in New Issue
Block a user