package endpoints import ( "fmt" "git.zomo.dev/zomo/discord-retokenizer/storage" "github.com/gin-gonic/gin" ) type LoginPasswordBody struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required"` } type LoginTokenBody struct { Token string `json:"token" binding:"required"` } func loginPassword(c *gin.Context) { var loginBody LoginPasswordBody if err := c.BindJSON(&loginBody); err != nil { fmt.Println(err) return } userAgentString := c.GetHeader("User-Agent") if userAgentString == "" { return } ua := storage.ParseUA(userAgentString) loggedIn, token := storage.CheckLoginPassword(loginBody.Username, loginBody.Password, c.ClientIP(), ua) if loggedIn { c.JSON(200, gin.H{ "token": token, }) } else { c.JSON(401, gin.H{ "error": "invalid username or password", }) } } func loginToken(c *gin.Context) { var loginBody LoginTokenBody if err := c.BindJSON(&loginBody); err != nil { fmt.Println(err) return } userAgentString := c.GetHeader("User-Agent") if userAgentString == "" { return } ua := storage.ParseUA(userAgentString) loggedIn := storage.CheckLoginToken(loginBody.Token, c.ClientIP(), ua) if loggedIn { c.JSON(200, gin.H{ "token": loginBody.Token, }) } else { c.JSON(401, gin.H{ "error": "invalid username or password", }) } } func updateLogin(c *gin.Context) { var updateLogin LoginPasswordBody if err := c.BindJSON(&updateLogin); err != nil { fmt.Println(err) return } storage.UpdateUsername(updateLogin.Username) storage.UpdatePassword(updateLogin.Password) } func getLoginTokens(c *gin.Context) { tokens := storage.GetLoginTokensSimple() c.JSON(200, tokens) } func clearLoginTokens(c *gin.Context) { storage.ClearLoginTokens() }