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 }