fixed login

This commit is contained in:
2022-12-09 20:06:43 -06:00
parent b7c156d1e0
commit 8df6231b71
4 changed files with 25 additions and 28 deletions

View File

@@ -15,7 +15,7 @@ func Run() {
private := r.Group("/") private := r.Group("/")
private.Use(userIsAuthorized) private.Use(userIsAuthorized)
private.PATCH("/login", user) //change username/password (required before adding bots) private.PATCH("/login", updateLogin) //change username/password (required before adding bots)
private.GET("/bots", func(c *gin.Context) {}) //generalized list of bots private.GET("/bots", func(c *gin.Context) {}) //generalized list of bots
private.GET("/bot/:bot", func(c *gin.Context) {}) //specific bot private.GET("/bot/:bot", func(c *gin.Context) {}) //specific bot

View File

@@ -33,3 +33,13 @@ func login(c *gin.Context) {
} }
} }
func updateLogin(c *gin.Context) {
var updateLogin LoginBody
if err := c.BindJSON(&updateLogin); err != nil {
fmt.Println(err)
return
}
storage.UpdateUsername(updateLogin.Username)
storage.UpdatePassword(updateLogin.Password)
}

View File

@@ -1,18 +0,0 @@
package endpoints
import (
"fmt"
"git.zomo.dev/zomo/discord-retokenizer/storage"
"github.com/gin-gonic/gin"
)
func user(c *gin.Context) {
var updateLogin LoginBody
if err := c.BindJSON(&updateLogin); err != nil {
fmt.Println(err)
return
}
storage.UpdateUsername(updateLogin.Username)
storage.UpdatePassword(updateLogin.Password)
}

View File

@@ -61,6 +61,14 @@ type LoginToken struct {
End string `json:"end"` End string `json:"end"`
} }
func (t LoginToken) MarshalBinary() ([]byte, error) {
return json.Marshal(t)
}
func (t *LoginToken) UnmarshalBinary(data []byte) error {
return json.Unmarshal(data, t)
}
func createLoginToken(ip string) string { func createLoginToken(ip string) string {
token := util.GeneratePassword(32) token := util.GeneratePassword(32)
@@ -75,14 +83,9 @@ func createLoginToken(ip string) string {
End: token[len(token) - 4:], End: token[len(token) - 4:],
} }
marshalled, err := json.Marshal(&tokenData)
if err != nil {
panic(err)
}
member := redis.Z{ member := redis.Z{
Score: float64(time.Now().Unix() + 4 * 60 * 60), Score: float64(time.Now().Unix() + 4 * 60 * 60),
Member: string(marshalled), Member: tokenData,
} }
err = client.ZAdd(ctx, "loginTokens", member).Err() err = client.ZAdd(ctx, "loginTokens", member).Err()
@@ -108,13 +111,15 @@ func CheckLoginToken(token string, ip string) bool {
client.ZRem(ctx, "loginTokens", e) client.ZRem(ctx, "loginTokens", e)
} }
current := make([]LoginToken, 0) var current []LoginToken
err = client.ZRange(ctx, "loginTokens", 0, -1).ScanSlice(current) err = client.ZRange(ctx, "loginTokens", 0, -1).ScanSlice(&current)
if err != nil { if err != nil {
panic(err) panic(err)
} }
fmt.Printf("%v\n", current)
for _, c := range current { for _, c := range current {
err = bcrypt.CompareHashAndPassword([]byte(c.Token), []byte(token)) err = bcrypt.CompareHashAndPassword([]byte(c.Token), []byte(token))
if err == nil && ip == c.IP { if err == nil && ip == c.IP {