58 lines
992 B
Go
58 lines
992 B
Go
package auth
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type (
|
|
configuration struct {
|
|
http *httpFlags
|
|
db *dbFlags
|
|
jwt *jwtFlags
|
|
}
|
|
)
|
|
|
|
var config *configuration
|
|
|
|
func (c *configuration) validate() error {
|
|
if c == nil {
|
|
return errors.New("CRM config is not initialized, need to call Flags() or FullFlags()")
|
|
}
|
|
if err := c.http.validate(); err != nil {
|
|
return err
|
|
}
|
|
if err := c.db.validate(); err != nil {
|
|
return err
|
|
}
|
|
if err := c.jwt.validate(); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func Flags(prefix ...string) {
|
|
if config != nil {
|
|
return
|
|
}
|
|
if len(prefix) == 0 {
|
|
panic("crm.Flags() needs prefix on first call")
|
|
}
|
|
config = &configuration{
|
|
jwt: new(jwtFlags).flags(prefix...),
|
|
}
|
|
}
|
|
|
|
func FullFlags(prefix ...string) {
|
|
if config != nil {
|
|
return
|
|
}
|
|
if len(prefix) == 0 {
|
|
panic("crm.Flags() needs prefix on first call")
|
|
}
|
|
config = &configuration{
|
|
new(httpFlags).flags(prefix...),
|
|
new(dbFlags).flags(prefix...),
|
|
new(jwtFlags).flags(prefix...),
|
|
}
|
|
}
|