Skip to content

Commit db56658

Browse files
committed
fix: override all sensitive auth config fields
1 parent 92da28c commit db56658

File tree

1 file changed

+46
-3
lines changed

1 file changed

+46
-3
lines changed

internal/provider/settings_resource.go

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,13 @@ func readAuthConfig(ctx context.Context, state *SettingsResourceModel, client *a
313313
return diag.Diagnostics{diag.NewErrorDiagnostic("Client Error", msg)}
314314
}
315315
// API treats sensitive fields as write-only
316-
var body api.AuthConfigResponse
316+
var body LocalAuthConfig
317317
if !state.Auth.IsNull() {
318318
if diags := state.Auth.Unmarshal(&body); diags.HasError() {
319319
return diags
320320
}
321321
}
322-
httpResp.JSON200.SmtpPass = body.SmtpPass
322+
body.overrideSensitiveFields(httpResp.JSON200)
323323
if state.Auth, err = parseConfig(state.Auth, *httpResp.JSON200); err != nil {
324324
msg := fmt.Sprintf("Unable to read auth settings, got error: %s", err)
325325
return diag.Diagnostics{diag.NewErrorDiagnostic("Client Error", msg)}
@@ -343,7 +343,8 @@ func updateAuthConfig(ctx context.Context, plan *SettingsResourceModel, client *
343343
return diag.Diagnostics{diag.NewErrorDiagnostic("Client Error", msg)}
344344
}
345345
// Copy over sensitive fields from TF plan
346-
httpResp.JSON200.SmtpPass = body.SmtpPass
346+
local := LocalAuthConfig{UpdateAuthConfigBody: body}
347+
local.overrideSensitiveFields(httpResp.JSON200)
347348

348349
if plan.Auth, err = parseConfig(plan.Auth, *httpResp.JSON200); err != nil {
349350
msg := fmt.Sprintf("Unable to update auth settings, got error: %s", err)
@@ -439,6 +440,48 @@ func copyConfig(source any, target map[string]interface{}) {
439440
}
440441
}
441442

443+
type LocalAuthConfig struct {
444+
api.UpdateAuthConfigBody
445+
}
446+
447+
func (c LocalAuthConfig) overrideSensitiveFields(resp *api.AuthConfigResponse) {
448+
// Email provider secrets
449+
resp.SmtpPass = c.SmtpPass
450+
// SMS provider secrets
451+
resp.SmsTwilioAuthToken = c.SmsTwilioAuthToken
452+
resp.SmsTwilioVerifyAuthToken = c.SmsTwilioVerifyAuthToken
453+
resp.SmsMessagebirdAccessKey = c.SmsMessagebirdAccessKey
454+
resp.SmsTextlocalApiKey = c.SmsTextlocalApiKey
455+
resp.SmsVonageApiSecret = c.SmsVonageApiSecret
456+
// External provider secrets
457+
resp.ExternalAppleSecret = c.ExternalAppleSecret
458+
resp.ExternalAzureSecret = c.ExternalAzureSecret
459+
resp.ExternalBitbucketSecret = c.ExternalBitbucketSecret
460+
resp.ExternalDiscordSecret = c.ExternalDiscordSecret
461+
resp.ExternalFacebookSecret = c.ExternalFacebookSecret
462+
resp.ExternalFigmaSecret = c.ExternalFigmaSecret
463+
resp.ExternalGithubSecret = c.ExternalGithubSecret
464+
resp.ExternalGitlabSecret = c.ExternalGitlabSecret
465+
resp.ExternalGoogleSecret = c.ExternalGoogleSecret
466+
resp.ExternalKakaoSecret = c.ExternalKakaoSecret
467+
resp.ExternalKeycloakSecret = c.ExternalKeycloakSecret
468+
resp.ExternalLinkedinOidcSecret = c.ExternalLinkedinOidcSecret
469+
resp.ExternalNotionSecret = c.ExternalNotionSecret
470+
resp.ExternalSlackOidcSecret = c.ExternalSlackOidcSecret
471+
resp.ExternalSlackSecret = c.ExternalSlackSecret
472+
resp.ExternalSpotifySecret = c.ExternalSpotifySecret
473+
resp.ExternalTwitchSecret = c.ExternalTwitchSecret
474+
resp.ExternalTwitterSecret = c.ExternalTwitterSecret
475+
resp.ExternalWorkosSecret = c.ExternalWorkosSecret
476+
resp.ExternalZoomSecret = c.ExternalZoomSecret
477+
// Hook provider secrets
478+
resp.HookCustomAccessTokenSecrets = c.HookCustomAccessTokenSecrets
479+
resp.HookMfaVerificationAttemptSecrets = c.HookMfaVerificationAttemptSecrets
480+
resp.HookPasswordVerificationAttemptSecrets = c.HookPasswordVerificationAttemptSecrets
481+
resp.HookSendEmailSecrets = c.HookSendEmailSecrets
482+
resp.HookSendSmsSecrets = c.HookSendSmsSecrets
483+
}
484+
442485
type NetworkConfig struct {
443486
Restrictions []string `json:"restrictions,omitempty"`
444487
}

0 commit comments

Comments
 (0)