apg-go/config.go
Winni Neessen 8d42651e58
#53 Update password configuration parameters
Added comments for minimum requirements parameters in config.go to provide clarity on their purpose. This was necessary to increase code readability, making it easier for future developer reference.
2023-08-05 17:57:06 +02:00

88 lines
2.7 KiB
Go

package apg
// List of default values for Config instances
const (
// DefaultMinLength reflects the default minimum length of a generated password
DefaultMinLength int64 = 12
// DefaultMaxLength reflects the default maximum length of a generated password
DefaultMaxLength int64 = 20
// DefaultMode sets the default character set mode bitmask to a combination of
// lower- and upper-case characters as well as numbers
DefaultMode ModeMask = ModeLowerCase | ModeNumeric | ModeUpperCase
// DefaultNumberPass reflects the default amount of passwords returned by the generator
DefaultNumberPass int64 = 6
)
// Config represents the apg.Generator config parameters
type Config struct {
// Algo
Algorithm Algorithm
// FixedLength sets a fixed length for generated passwords and ignores
// the MinLength and MaxLength values
FixedLength int64
// MaxLength sets the maximum length for a generated password
MaxLength int64
// MinLength sets the minimum length for a generated password
MinLength int64
// MinLowerCase represents the minimum amount of lower-case characters that have
// to be part of the generated password
MinLowerCase int64
// MinNumeric represents the minimum amount of numeric characters that have
// to be part of the generated password
MinNumeric int64
// MinSpecial represents the minimum amount of special characters that have
// to be part of the generated password
MinSpecial int64
// MinUpperCase represents the minimum amount of upper-case characters that have
// to be part of the generated password
MinUpperCase int64
// Mode holds the different character modes for the Random algorithm
Mode ModeMask
// NumberPass sets the number of passwords that are generated
// and returned by the generator
NumberPass int64
}
// Option is a function that can override default Config settings
type Option func(*Config)
// NewConfig creates a new Config instance and pre-fills it with sane
// default settings. The Config is returned as pointer value
func NewConfig(o ...Option) *Config {
c := &Config{
MaxLength: DefaultMaxLength,
MinLength: DefaultMinLength,
Mode: DefaultMode,
NumberPass: DefaultNumberPass,
}
// Override defaults with optionally provided config.Option functions
for _, co := range o {
if co == nil {
continue
}
co(c)
}
return c
}
// WithMinLength overrides the minimum password length
func WithMinLength(l int64) Option {
return func(c *Config) {
c.MinLength = l
}
}
// WithMaxLength overrides the maximum password length
func WithMaxLength(l int64) Option {
return func(c *Config) {
c.MaxLength = l
}
}
// WithNumberPass overrides the number of generated passwords setting
func WithNumberPass(n int64) Option {
return func(c *Config) {
c.NumberPass = n
}
}