diff --git a/endpoints/endpoints.go b/endpoints/endpoints.go index 6c9badb..c5ebdde 100644 --- a/endpoints/endpoints.go +++ b/endpoints/endpoints.go @@ -15,7 +15,7 @@ func Run() { private := r.Group("/") 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("/bot/:bot", func(c *gin.Context) {}) //specific bot diff --git a/endpoints/login.go b/endpoints/login.go index cc14a38..334831a 100644 --- a/endpoints/login.go +++ b/endpoints/login.go @@ -32,4 +32,14 @@ func login(c *gin.Context) { }) } -} \ No newline at end of file +} + +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) +} diff --git a/endpoints/user.go b/endpoints/user.go deleted file mode 100644 index ae51b6c..0000000 --- a/endpoints/user.go +++ /dev/null @@ -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) -} \ No newline at end of file diff --git a/storage/login.go b/storage/login.go index 1db067a..396a185 100644 --- a/storage/login.go +++ b/storage/login.go @@ -61,6 +61,14 @@ type LoginToken struct { 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 { token := util.GeneratePassword(32) @@ -75,14 +83,9 @@ func createLoginToken(ip string) string { End: token[len(token) - 4:], } - marshalled, err := json.Marshal(&tokenData) - if err != nil { - panic(err) - } - member := redis.Z{ Score: float64(time.Now().Unix() + 4 * 60 * 60), - Member: string(marshalled), + Member: tokenData, } err = client.ZAdd(ctx, "loginTokens", member).Err() @@ -108,13 +111,15 @@ func CheckLoginToken(token string, ip string) bool { client.ZRem(ctx, "loginTokens", e) } - current := make([]LoginToken, 0) - err = client.ZRange(ctx, "loginTokens", 0, -1).ScanSlice(current) + var current []LoginToken + err = client.ZRange(ctx, "loginTokens", 0, -1).ScanSlice(¤t) if err != nil { panic(err) } + fmt.Printf("%v\n", current) + for _, c := range current { err = bcrypt.CompareHashAndPassword([]byte(c.Token), []byte(token)) if err == nil && ip == c.IP {