package util import ( "encoding/hex" "math/rand" "time" "github.com/bwmarrin/snowflake" ) // var passwordChars = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=_+!@#$%^&*()[]{}|;:,.<>/?") var passwordChars = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=_+!@#$%^&*?") func GeneratePassword(length int) string { rand.Seed(time.Now().UnixNano()) b := make([]rune, length) for i := range b { b[i] = passwordChars[rand.Intn(len(passwordChars))] } code := string(b) return code } func GenerateToken() string { rand.Seed(time.Now().UnixNano()) b := make([]byte, 32) if _, err := rand.Read(b); err != nil { return "" } return hex.EncodeToString(b) } var snowflakeNodeIndex int64 = 0 func GenerateID() string { node, err := snowflake.NewNode(snowflakeNodeIndex) if err != nil { panic(err) } return node.Generate().String() } func GetEnd(token string) string { if len(token) < 8 { return "" } return token[len(token)-8:] }