Skip to content

Commit

Permalink
feat: Allow empty env vars (#4689)
Browse files Browse the repository at this point in the history
  • Loading branch information
Planlos5000 authored Dec 18, 2024
1 parent 15b0017 commit a7884e7
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 28 deletions.
43 changes: 21 additions & 22 deletions deployment/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,29 @@ services:
SCRUMLR_SERVER_NATS_URL: "${SCRUMLR_SERVER_NATS_URL}"
SCRUMLR_PRIVATE_KEY: "${SCRUMLR_PRIVATE_KEY}"
SCRUMLR_SERVER_DATABASE_URL: "postgres://scrumlr:${POSTGRES_PASSWORD}@postgres:5432/scrumlr?sslmode=disable"
# SCRUMLR_AUTH_GOOGLE_CLIENT_ID: "${GOOGLE_CLIENT_ID}"
# SCRUMLR_AUTH_GOOGLE_CLIENT_SECRET: "${GOOGLE_CLIENT_SECRET}"
# SCRUMLR_AUTH_MICROSOFT_CLIENT_ID: "${MICROSOFT_CLIENT_ID}"
# SCRUMLR_AUTH_MICROSOFT_CLIENT_SECRET: "${MICROSOFT_CLIENT_SECRET}"
SCRUMLR_AUTH_GOOGLE_CLIENT_ID: "${GOOGLE_CLIENT_ID}"
SCRUMLR_AUTH_GOOGLE_CLIENT_SECRET: "${GOOGLE_CLIENT_SECRET}"
SCRUMLR_AUTH_MICROSOFT_CLIENT_ID: "${MICROSOFT_CLIENT_ID}"
SCRUMLR_AUTH_MICROSOFT_CLIENT_SECRET: "${MICROSOFT_CLIENT_SECRET}"
SCRUMLR_FEEDBACK_WEBHOOK_URL: "${WEBHOOK_URL}"
SCRUMLR_BASE_PATH: "${SCRUMLR_BASE_PATH}"
SCRUMLR_INSECURE: "${SCRUMLR_INSECURE}"
SCRUMLR_AUTH_CALLBACK_HOST: "${AUTH_CALLBACK_HOST}"
# SCRUMLR_AUTH_GITHUB_CLIENT_ID: "${GITHUB_CLIENT_ID}"
# SCRUMLR_AUTH_GITHUB_CLIENT_SECRET: "${GITHUB_CLIENT_SECRET}"
# SCRUMLR_AUTH_AZURE_AD_TENANT_ID: "${AZURE_AD_TENANT_ID}"
# SCRUMLR_AUTH_AZURE_AD_CLIENT_ID: "${AZURE_AD_CLIENT_ID}"
# SCRUMLR_AUTH_AZURE_AD_CLIENT_SECRET: "${AZURE_AD_CLIENT_SECRET}"
# SCRUMLR_AUTH_APPLE_CLIENT_ID: "${APPLE_CLIENT_ID}"
# SCRUMLR_AUTH_APPLE_CLIENT_SECRET: "${APPLE_CLIENT_SECRET}"
# SCRUMLR_AUTH_OIDC_CLIENT_ID: "${OIDC_CLIENT_ID}"
# SCRUMLR_AUTH_OIDC_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}"
# SCRUMLR_AUTH_OIDC_DISCOVERY_URL: "${OIDC_DISCOVERY_URL}"
# SCRUMLR_CONFIG_PATH: "${SCRUMLR_CONFIG_PATH}"
SCRUMLR_AUTH_GITHUB_CLIENT_ID: "${GITHUB_CLIENT_ID}"
SCRUMLR_AUTH_GITHUB_CLIENT_SECRET: "${GITHUB_CLIENT_SECRET}"
SCRUMLR_AUTH_AZURE_AD_TENANT_ID: "${AZURE_AD_TENANT_ID}"
SCRUMLR_AUTH_AZURE_AD_CLIENT_ID: "${AZURE_AD_CLIENT_ID}"
SCRUMLR_AUTH_AZURE_AD_CLIENT_SECRET: "${AZURE_AD_CLIENT_SECRET}"
SCRUMLR_AUTH_APPLE_CLIENT_ID: "${APPLE_CLIENT_ID}"
SCRUMLR_AUTH_APPLE_CLIENT_SECRET: "${APPLE_CLIENT_SECRET}"
SCRUMLR_AUTH_OIDC_CLIENT_ID: "${OIDC_CLIENT_ID}"
SCRUMLR_AUTH_OIDC_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}"
SCRUMLR_AUTH_OIDC_DISCOVERY_URL: "${OIDC_DISCOVERY_URL}"
# SCRUMLR_CONFIG_PATH: "${SCRUMRL_CONFIG_PATH}"
# Redis variables (if you decide to use Redis instead of NATS)
# SCRUMLR_SERVER_REDIS_HOST: "${REDIS_HOST}"
# SCRUMLR_SERVER_REDIS_USERNAME: "${REDIS_USERNAME}"
# SCRUMLR_SERVER_REDIS_PASSWORD: "${REDIS_PASSWORD}"
# SCRUMLR_ENABLE_EXPERIMENTAL_AUTH_FILE_SYSTEM_STORE: "${SCRUMLR_ENABLE_EXPERIMENTAL_AUTH_FILE_SYSTEM_STORE}"
SCRUMLR_SERVER_REDIS_HOST: "${REDIS_HOST}"
SCRUMLR_SERVER_REDIS_USERNAME: "${REDIS_USERNAME}"
SCRUMLR_SERVER_REDIS_PASSWORD: "${REDIS_PASSWORD}"
ports:
- "8080:8080"
depends_on:
Expand All @@ -50,9 +49,9 @@ services:
SCRUMLR_WEBSOCKET_URL: "${SCRUMLR_WEBSOCKET_URL}"
SCRUMLR_SHOW_LEGAL_DOCUMENTS: "${SCRUMLR_SHOW_LEGAL_DOCUMENTS}"
# Add missing frontend environment variables here
# SCRUMLR_LISTEN_PORT: "${SCRUMLR_LISTEN_PORT}"
# SCRUMLR_ANALYTICS_DATA_DOMAIN: "${ANALYTICS_DATA_DOMAIN}"
# SCRUMLR_ANALYTICS_SRC: "${ANALYTICS_SRC}"
SCRUMLR_LISTEN_PORT: "${SCRUMLR_LISTEN_PORT:-8080}"
SCRUMLR_ANALYTICS_DATA_DOMAIN: "${ANALYTICS_DATA_DOMAIN}"
SCRUMLR_ANALYTICS_SRC: "${ANALYTICS_SRC}"
ports:
- "9090:8080"

Expand Down
21 changes: 15 additions & 6 deletions server/src/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ func run(c *cli.Context) error {
if c.Bool("verbose") {
logger.EnableDevelopmentLogger()
}

db, err := migrations.MigrateDatabase(c.String("database"))
if err != nil {
return fmt.Errorf("unable to migrate database: %w", err)
Expand All @@ -266,6 +267,7 @@ func run(c *cli.Context) error {

var rt *realtime.Broker
if c.String("redis-address") != "" {
logger.Get().Infof("Connecting to redis at %v", c.String("redis-address"))
rt, err = realtime.NewRedis(realtime.RedisServer{
Addr: c.String("redis-address"),
Username: c.String("redis-username"),
Expand All @@ -275,6 +277,7 @@ func run(c *cli.Context) error {
logger.Get().Fatalf("failed to connect to redis message queue: %v", err)
}
} else {
logger.Get().Infof("Connecting to nats at %v", c.String("nats"))
rt, err = realtime.NewNats(c.String("nats"))
if err != nil {
logger.Get().Fatalf("failed to connect to nats message queue: %v", err)
Expand All @@ -294,43 +297,49 @@ func run(c *cli.Context) error {
}

providersMap := make(map[string]auth.AuthProviderConfiguration)
if c.IsSet("auth-google-client-id") && c.IsSet("auth-google-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-google-client-id") != "" && c.String("auth-google-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using google authentication")
providersMap[(string)(types.AccountTypeGoogle)] = auth.AuthProviderConfiguration{
ClientId: c.String("auth-google-client-id"),
ClientSecret: c.String("auth-google-client-secret"),
RedirectUri: fmt.Sprintf("%s%s/login/google/callback", strings.TrimSuffix(c.String("auth-callback-host"), "/"), strings.TrimSuffix(basePath, "/")),
}
}
if c.IsSet("auth-github-client-id") && c.IsSet("auth-github-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-github-client-id") != "" && c.String("auth-github-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using github authentication")
providersMap[(string)(types.AccountTypeGitHub)] = auth.AuthProviderConfiguration{
ClientId: c.String("auth-github-client-id"),
ClientSecret: c.String("auth-github-client-secret"),
RedirectUri: fmt.Sprintf("%s%s/login/github/callback", strings.TrimSuffix(c.String("auth-callback-host"), "/"), strings.TrimSuffix(basePath, "/")),
}
}
if c.IsSet("auth-microsoft-client-id") && c.IsSet("auth-microsoft-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-microsoft-client-id") != "" && c.String("auth-microsoft-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using microsoft authentication")
providersMap[(string)(types.AccountTypeMicrosoft)] = auth.AuthProviderConfiguration{
ClientId: c.String("auth-microsoft-client-id"),
ClientSecret: c.String("auth-microsoft-client-secret"),
RedirectUri: fmt.Sprintf("%s%s/login/microsoft/callback", strings.TrimSuffix(c.String("auth-callback-host"), "/"), strings.TrimSuffix(basePath, "/")),
}
}
if c.IsSet("auth-azure-ad-tenant-id") && c.IsSet("auth-azure-ad-client-id") && c.IsSet("auth-azure-ad-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-azure-ad-tenant-id") != "" && c.String("auth-azure-ad-client-id") != "" && c.String("auth-azure-ad-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using azure authentication")
providersMap[(string)(types.AccountTypeAzureAd)] = auth.AuthProviderConfiguration{
TenantId: c.String("auth-azure-ad-tenant-id"),
ClientId: c.String("auth-azure-ad-client-id"),
ClientSecret: c.String("auth-azure-ad-client-secret"),
RedirectUri: fmt.Sprintf("%s%s/login/azure_ad/callback", strings.TrimSuffix(c.String("auth-callback-host"), "/"), strings.TrimSuffix(basePath, "/")),
}
}
if c.IsSet("auth-apple-client-id") && c.IsSet("auth-apple-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-apple-client-id") != "" && c.String("auth-apple-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using apple authentication.")
providersMap[(string)(types.AccountTypeApple)] = auth.AuthProviderConfiguration{
ClientId: c.String("auth-apple-client-id"),
ClientSecret: c.String("auth-apple-client-secret"),
RedirectUri: fmt.Sprintf("%s%s/login/apple/callback", strings.TrimSuffix(c.String("auth-callback-host"), "/"), strings.TrimSuffix(basePath, "/")),
}
}
if c.IsSet("auth-oidc-discovery-url") && c.IsSet("auth-oidc-client-id") && c.IsSet("auth-oidc-client-secret") && c.IsSet("auth-callback-host") {
if c.String("auth-oidc-discovery-url") != "" && c.String("auth-oidc-client-id") != "" && c.String("auth-oidc-client-secret") != "" && c.String("auth-callback-host") != "" {
logger.Get().Info("Using oicd authentication.")
providersMap[(string)(types.AccountTypeOIDC)] = auth.AuthProviderConfiguration{
ClientId: c.String("auth-oidc-client-id"),
ClientSecret: c.String("auth-oidc-client-secret"),
Expand Down

0 comments on commit a7884e7

Please sign in to comment.