package app import ( "fmt" "forge.cadoles.com/arcad/edge/pkg/module/auth/http/passwd" "github.com/pkg/errors" "github.com/urfave/cli/v2" "forge.cadoles.com/arcad/edge/pkg/module/auth/http/passwd/argon2id" _ "forge.cadoles.com/arcad/edge/pkg/module/auth/http/passwd/plain" ) func HashPasswordCommand() *cli.Command { return &cli.Command{ Name: "hash-password", Usage: "Hash the provided password with the specified algorithm", Flags: []cli.Flag{ &cli.StringFlag{ Name: "password", Usage: "hash `PASSWORD`", Aliases: []string{"p"}, Value: "", Required: true, }, &cli.StringFlag{ Name: "algorithm", Usage: fmt.Sprintf("use `ALGORITHM` to hash password (available: %v)", passwd.Algorithms()), Aliases: []string{"a"}, Value: string(argon2id.Algo), }, }, Action: func(ctx *cli.Context) error { algo := ctx.String("algorithm") password := ctx.String("password") hash, err := passwd.Hash(passwd.Algo(algo), password) if err != nil { return errors.WithStack(err) } fmt.Println(hash) return nil }, } }