provider.go (1117B)
1 package login 2 3 // Provider is a factory method for creation of login backends. 4 type Provider func(config map[string]string) (Backend, error) 5 6 var provider = map[string]Provider{} 7 var providerDescription = map[string]*ProviderDescription{} 8 9 // RegisterProvider registers a factory method by the provider name. 10 func RegisterProvider(desc *ProviderDescription, factoryMethod Provider) { 11 provider[desc.Name] = factoryMethod 12 providerDescription[desc.Name] = desc 13 } 14 15 // GetProvider returns a registered provider by its name. 16 // The bool return parameter indicated, if there was such a provider. 17 func GetProvider(providerName string) (Provider, bool) { 18 p, exist := provider[providerName] 19 return p, exist 20 } 21 22 // GetProviderDescription returns the metainfo for a provider 23 func GetProviderDescription(providerName string) (*ProviderDescription, bool) { 24 p, exist := providerDescription[providerName] 25 return p, exist 26 } 27 28 // ProviderList returns the names of all registered provider 29 func ProviderList() []string { 30 list := make([]string, 0, len(provider)) 31 for k := range provider { 32 list = append(list, k) 33 } 34 return list 35 }