fixed login
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user