// Copyright (c) 2024 Mattermost Community Enterprise // Registration of OAuth Providers implementation package oauthproviders import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/v8/einterfaces" ) // RegisterAllProviders registers all OAuth providers with Mattermost func RegisterAllProviders(config func() *model.Config, logger mlog.LoggerIFace) { cfg := &OAuthProviderConfig{ Config: config, Logger: logger, } // Register Google provider einterfaces.RegisterOAuthProvider(model.ServiceGoogle, NewGoogleProvider(cfg)) // Register Office 365 provider einterfaces.RegisterOAuthProvider(model.ServiceOffice365, NewOffice365Provider(cfg)) // Register OpenID Connect provider einterfaces.RegisterOAuthProvider(model.ServiceOpenid, NewOpenIDConnectProvider(cfg)) logger.Info("Registered OAuth providers", mlog.String("providers", "google,office365,openid"), ) } // CreateGoogleProvider creates a Google OAuth provider func CreateGoogleProvider(config func() *model.Config, logger mlog.LoggerIFace) einterfaces.OAuthProvider { cfg := &OAuthProviderConfig{ Config: config, Logger: logger, } return NewGoogleProvider(cfg) } // CreateOffice365Provider creates an Office 365 OAuth provider func CreateOffice365Provider(config func() *model.Config, logger mlog.LoggerIFace) einterfaces.OAuthProvider { cfg := &OAuthProviderConfig{ Config: config, Logger: logger, } return NewOffice365Provider(cfg) } // CreateOpenIDConnectProvider creates an OpenID Connect OAuth provider func CreateOpenIDConnectProvider(config func() *model.Config, logger mlog.LoggerIFace) einterfaces.OAuthProvider { cfg := &OAuthProviderConfig{ Config: config, Logger: logger, } return NewOpenIDConnectProvider(cfg) }