mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-05-09 13:58:11 +00:00
67 lines
2.0 KiB
Go
67 lines
2.0 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/tinyauthapp/tinyauth/internal/service"
|
|
)
|
|
|
|
func (app *BootstrapApp) setupServices() error {
|
|
ldapService, err := service.NewLdapService(app.log, app.config, app.ctx, &app.wg)
|
|
|
|
if err != nil {
|
|
app.log.App.Warn().Err(err).Msg("Failed to initialize LDAP connection, will continue without it")
|
|
}
|
|
|
|
app.services.ldapService = ldapService
|
|
|
|
useKubernetes := app.config.LabelProvider == "kubernetes" ||
|
|
(app.config.LabelProvider == "auto" && os.Getenv("KUBERNETES_SERVICE_HOST") != "")
|
|
|
|
var labelProvider service.LabelProviderImpl
|
|
|
|
if useKubernetes {
|
|
app.log.App.Debug().Msg("Using Kubernetes label provider")
|
|
|
|
kubernetesService, err := service.NewKubernetesService(app.log, app.ctx, &app.wg)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize kubernetes service: %w", err)
|
|
}
|
|
|
|
app.services.kubernetesService = kubernetesService
|
|
labelProvider = kubernetesService
|
|
} else {
|
|
app.log.App.Debug().Msg("Using Docker label provider")
|
|
|
|
dockerService, err := service.NewDockerService(app.log, app.ctx, &app.wg)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize docker service: %w", err)
|
|
}
|
|
|
|
app.services.dockerService = dockerService
|
|
labelProvider = dockerService
|
|
}
|
|
|
|
accessControlsService := service.NewAccessControlsService(app.log, &labelProvider, app.config.Apps)
|
|
app.services.accessControlService = accessControlsService
|
|
|
|
oauthBrokerService := service.NewOAuthBrokerService(app.log, app.runtime.OAuthProviders, app.ctx)
|
|
app.services.oauthBrokerService = oauthBrokerService
|
|
|
|
authService := service.NewAuthService(app.log, app.config, app.runtime, app.ctx, &app.wg, app.services.ldapService, app.queries, app.services.oauthBrokerService)
|
|
app.services.authService = authService
|
|
|
|
oidcService, err := service.NewOIDCService(app.log, app.config, app.runtime, app.queries, app.ctx, &app.wg)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize oidc service: %w", err)
|
|
}
|
|
|
|
app.services.oidcService = oidcService
|
|
|
|
return nil
|
|
}
|