package main import ( "github.com/gin-gonic/gin" "github.com/google/uuid" "gorm.io/driver/sqlite" "gorm.io/gorm" ) var ( db *gorm.DB ) type User struct { gorm.Model Secret string Username string `gorm:"uniqueIndex"` Token uuid.UUID } func init() { var err error db, err = gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") } db.AutoMigrate(&User{}) } func main() { r := gin.Default() r.Use(check_auth) r.GET("/api/signup", signup) r.GET("/api/login", login) r.GET("/api/reset", reset_token) r.GET("/", show) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") } func show(c *gin.Context) { auth := c.MustGet("authorized").(bool) if auth { user := c.MustGet("user").(User) c.String(200, "%s", user) } else { c.String(200, "not logged in") } }