Made the elo system work. Colorized the leaderboard. Better data structure. Improved the HTML. Custom form system. Added Sessions
This commit is contained in:
38
src/main.go
38
src/main.go
@@ -6,6 +6,8 @@ import (
|
||||
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/sessions/cookie"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
@@ -50,13 +52,20 @@ func main() {
|
||||
}
|
||||
lg.Println("using SQLite qrank.db")
|
||||
|
||||
if err := db.AutoMigrate(&User{}, &Session{}, &LoginToken{}, &Table{}, &Game{}, &GamePlayer{}); err != nil {
|
||||
if err := db.AutoMigrate(&User{}, &Session{}, &LoginToken{}, &Table{}, &Game{}, &GameUser{}); err != nil {
|
||||
lg.Fatal("migrate:", err)
|
||||
}
|
||||
if err := db.SetupJoinTable(&User{}, "Games", &GameUser{}); err != nil {
|
||||
lg.Fatal("setup jointable:", err)
|
||||
}
|
||||
|
||||
// Create engine
|
||||
r := gin.Default()
|
||||
|
||||
store := cookie.NewStore([]byte("secret"))
|
||||
r.Use(sessions.Sessions("mysession", store))
|
||||
r.Use(SessionHandlerMiddleware())
|
||||
|
||||
// Serve static files from the current directory
|
||||
r.Static("/assets", "./assets")
|
||||
|
||||
@@ -66,20 +75,25 @@ func main() {
|
||||
r.POST("/login", postLogin)
|
||||
r.GET("/magic", getMagic)
|
||||
|
||||
// Authenticated routes
|
||||
r.GET("/enter", requireAuth(), getEnter)
|
||||
r.POST("/enter", requireAuth(), postEnter)
|
||||
authorized := r.Group("/")
|
||||
authorized.Use(RequireAuthMiddleware())
|
||||
{
|
||||
|
||||
// QR-prepped table routes
|
||||
r.GET("/t/:tslug/enter", requireAuth(), getEnter)
|
||||
r.POST("/t/:tslug/enter", requireAuth(), postEnter)
|
||||
// Authenticated routes
|
||||
authorized.GET("/enter", getEnter)
|
||||
authorized.POST("/enter", postEnter)
|
||||
|
||||
r.GET("/history", requireAuth(), getHistory)
|
||||
r.GET("/leaderboard", requireAuth(), getLeaderboard)
|
||||
// QR-prepped table routes
|
||||
authorized.GET("/table/:tableSlug", getEnter)
|
||||
authorized.POST("/table/:tableSlug", postEnter)
|
||||
|
||||
r.GET("/u/:slug", requireAuth(), getUserView)
|
||||
r.GET("/me", requireAuth(), getMe)
|
||||
r.POST("/me", requireAuth(), postMe)
|
||||
authorized.GET("/history", getHistory)
|
||||
authorized.GET("/leaderboard", getLeaderboard)
|
||||
|
||||
authorized.GET("/user/:userSlug", getUserView)
|
||||
authorized.GET("/me", getMe)
|
||||
authorized.POST("/me", postMe)
|
||||
}
|
||||
|
||||
// Start application with port
|
||||
bind := ":" + port
|
||||
|
||||
Reference in New Issue
Block a user