loginsrv

Unnamed repository; edit this file 'description' to name the repository.
git clone git@jamesshield.xyz:repos/loginsrv.git
Log | Files | Refs | README | LICENSE

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 }