github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/auth/provider.go (about)

     1  package auth
     2  
     3  import (
     4  	"github.com/ngocphuongnb/tetua/app/config"
     5  	"github.com/ngocphuongnb/tetua/app/server"
     6  	"github.com/ngocphuongnb/tetua/app/utils"
     7  )
     8  
     9  var providers []server.AuthProvider
    10  
    11  type NewProviderFn func(cfg map[string]string) server.AuthProvider
    12  
    13  func New(newProviderFns map[string]NewProviderFn) {
    14  	if config.Auth == nil || len(config.Auth.Providers) == 0 {
    15  		return
    16  	}
    17  
    18  	for providerName, newProviderFn := range newProviderFns {
    19  		if providerName != "local" && !utils.SliceContains(config.Auth.EnabledProviders, providerName) {
    20  			continue
    21  		}
    22  
    23  		provider := newProviderFn(config.Auth.Providers[providerName])
    24  		addProvider(provider)
    25  	}
    26  }
    27  
    28  func Providers() []server.AuthProvider {
    29  	return providers
    30  }
    31  
    32  func addProvider(authProvider server.AuthProvider) {
    33  	for _, provider := range providers {
    34  		if provider.Name() == authProvider.Name() {
    35  			return
    36  		}
    37  	}
    38  
    39  	providers = append(providers, authProvider)
    40  }
    41  
    42  func GetProvider(name string) server.AuthProvider {
    43  	for _, provider := range providers {
    44  		if provider.Name() == name {
    45  			return provider
    46  		}
    47  	}
    48  
    49  	return nil
    50  }