diff --git a/internal/api/grpc/admin/email_converters.go b/internal/api/grpc/admin/email_converters.go index e7b5d2465..a3bb03eaa 100644 --- a/internal/api/grpc/admin/email_converters.go +++ b/internal/api/grpc/admin/email_converters.go @@ -108,6 +108,12 @@ func smtpToPb(config *query.SMTP) *settings_pb.EmailProvider_Smtp { ret.Smtp.Auth = xoauth2 } + if config.XOAuth2Auth == nil && config.PlainAuth == nil { + ret.Smtp.Auth = &settings_pb.EmailProviderSMTP_None{ + None: &settings_pb.SMTPNoAuth{}, + } + } + return ret } diff --git a/internal/api/grpc/admin/email_converters_test.go b/internal/api/grpc/admin/email_converters_test.go index 480c40d04..e2d89fe35 100644 --- a/internal/api/grpc/admin/email_converters_test.go +++ b/internal/api/grpc/admin/email_converters_test.go @@ -407,6 +407,19 @@ func Test_smtpToPb(t *testing.T) { }, }, }, + { + name: "no auth must map to none", + args: args{ + req: &query.SMTP{}, + }, + res: &settings_pb.EmailProvider_Smtp{ + Smtp: &settings_pb.EmailProviderSMTP{ + Auth: &settings_pb.EmailProviderSMTP_None{ + None: &settings_pb.SMTPNoAuth{}, + }, + }, + }, + }, { name: "plain auth must map to plain", args: args{ diff --git a/internal/query/smtp.go b/internal/query/smtp.go index 7e215cc10..70ca4a74c 100644 --- a/internal/query/smtp.go +++ b/internal/query/smtp.go @@ -4,13 +4,13 @@ import ( "context" "database/sql" "errors" - "strings" "time" sq "github.com/Masterminds/squirrel" "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/database" "github.com/zitadel/zitadel/internal/domain" "github.com/zitadel/zitadel/internal/query/projection" "github.com/zitadel/zitadel/internal/telemetry/tracing" @@ -451,7 +451,7 @@ type sqlSmtpConfig struct { xoauth2AuthClientCredentialsClientId sql.NullString xoauth2AuthClientClientCredentialsSecret *crypto.CryptoValue xoauth2AuthTokenEndpoint sql.NullString - xoauth2AuthScope sql.NullString + xoauth2AuthScope database.TextArray[string] } func (c sqlSmtpConfig) set(smtpConfig *SMTPConfig) { @@ -466,13 +466,9 @@ func (c sqlSmtpConfig) set(smtpConfig *SMTPConfig) { plainAuth = nil } - scopes := strings.Split(c.xoauth2AuthScope.String, " ") - if len(scopes) == 1 && scopes[0] == "" { - scopes = nil - } xoauth2Auth := &XOAuth2Auth{ TokenEndpoint: c.xoauth2AuthTokenEndpoint.String, - Scopes: scopes, + Scopes: []string(c.xoauth2AuthScope), ClientCredentials: &XOAuthClientCredentials{ ClientId: c.xoauth2AuthClientCredentialsClientId.String, ClientSecret: c.xoauth2AuthClientClientCredentialsSecret,