fixed login
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -32,4 +32,14 @@ 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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
|
||||||
@@ -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(¤t)
|
||||||
|
|
||||||
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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user