24 lines
526 B
Go
24 lines
526 B
Go
package utils
|
|
|
|
import (
|
|
"math/rand"
|
|
|
|
"github.com/lucasjones/reggen"
|
|
)
|
|
|
|
func GeneratePassword() (string, error) {
|
|
patterns := []string{
|
|
`[A-Z]{6,}[\d]{2,}[a-z]{2,}[@$!%*?&]{2,}[A-Za-z]{2,}`,
|
|
`[A-Za-z]{2,}[a-z]{6,}[\d]{2,}[@$!%*?&]{4,}`,
|
|
`[\d]{2,}[A-Z]{6,}[@$!%*?&]{4,}[a-z]{2,}`,
|
|
`[@$!%*?&]{4,}[a-z]{4,}[A-Z]{4,}[\d]{2,}`,
|
|
`[A-Z]{2,}[@$!%*?&]{6,}[a-z]{4,}[\d]{2,}`,
|
|
`[A-Z]{4,}[\d]{6,}[@$!%*?&]{4,}[a-z]{2,}`,
|
|
}
|
|
|
|
i := rand.Intn(len(patterns))
|
|
pass, err := reggen.Generate(patterns[i], 14)
|
|
|
|
return pass, err
|
|
}
|