| 33 | } |
| 34 | |
| 35 | func NewProvider(providerConfig options.Provider) (Provider, error) { |
| 36 | providerData, err := newProviderDataFromConfig(providerConfig) |
| 37 | if err != nil { |
| 38 | return nil, fmt.Errorf("could not create provider data: %v", err) |
| 39 | } |
| 40 | switch providerConfig.Type { |
| 41 | case options.ADFSProvider: |
| 42 | return NewADFSProvider(providerData, providerConfig), nil |
| 43 | case options.AzureProvider: |
| 44 | return NewAzureProvider(providerData, providerConfig.AzureConfig), nil |
| 45 | case options.MicrosoftEntraIDProvider: |
| 46 | return NewMicrosoftEntraIDProvider(providerData, providerConfig), nil |
| 47 | case options.BitbucketProvider: |
| 48 | return NewBitbucketProvider(providerData, providerConfig.BitbucketConfig), nil |
| 49 | case options.CidaasProvider: |
| 50 | return NewCIDAASProvider(providerData, providerConfig), nil |
| 51 | case options.DigitalOceanProvider: |
| 52 | return NewDigitalOceanProvider(providerData), nil |
| 53 | case options.FacebookProvider: |
| 54 | return NewFacebookProvider(providerData), nil |
| 55 | case options.GitHubProvider: |
| 56 | return NewGitHubProvider(providerData, providerConfig.GitHubConfig), nil |
| 57 | case options.GitLabProvider: |
| 58 | return NewGitLabProvider(providerData, providerConfig) |
| 59 | case options.GoogleProvider: |
| 60 | return NewGoogleProvider(providerData, providerConfig.GoogleConfig) |
| 61 | case options.KeycloakProvider: |
| 62 | return NewKeycloakProvider(providerData, providerConfig.KeycloakConfig), nil |
| 63 | case options.KeycloakOIDCProvider: |
| 64 | return NewKeycloakOIDCProvider(providerData, providerConfig), nil |
| 65 | case options.LinkedInProvider: |
| 66 | return NewLinkedInProvider(providerData), nil |
| 67 | case options.LoginGovProvider: |
| 68 | return NewLoginGovProvider(providerData, providerConfig.LoginGovConfig) |
| 69 | case options.NextCloudProvider: |
| 70 | return NewNextcloudProvider(providerData), nil |
| 71 | case options.OIDCProvider: |
| 72 | return NewOIDCProvider(providerData, providerConfig.OIDCConfig), nil |
| 73 | case options.SourceHutProvider: |
| 74 | return NewSourceHutProvider(providerData), nil |
| 75 | default: |
| 76 | return nil, fmt.Errorf("unknown provider type %q", providerConfig.Type) |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | func newProviderDataFromConfig(providerConfig options.Provider) (*ProviderData, error) { |
| 81 | p := &ProviderData{ |