From 5819924275a477d8c3e2ec21dc8bde047b60f77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20M=C3=B6hlmann?= Date: Wed, 19 Apr 2023 11:46:02 +0300 Subject: [PATCH 01/23] feat: device authorization RFC 8628 (#5646) * device auth: implement the write events * add grant type device code * fix(init): check if default value implements stringer --------- Co-authored-by: adlerhurst --- cmd/defaults.yaml | 2 + cmd/start/start.go | 4 +- go.mod | 10 +- go.sum | 16 +- internal/api/api.go | 6 + internal/api/grpc/project/application.go | 4 + internal/api/oidc/auth_request_converter.go | 9 - internal/api/oidc/client_converter.go | 2 + internal/api/oidc/device_auth.go | 176 +++++++ internal/api/oidc/op.go | 6 + internal/api/saml/auth_request_converter.go | 8 - internal/api/ui/login/device_auth.go | 201 ++++++++ .../api/ui/login/login_success_handler.go | 2 + internal/api/ui/login/renderer.go | 7 +- internal/api/ui/login/router.go | 5 + internal/api/ui/login/static/i18n/de.yaml | 20 + internal/api/ui/login/static/i18n/en.yaml | 20 + internal/api/ui/login/static/i18n/fr.yaml | 20 + internal/api/ui/login/static/i18n/it.yaml | 20 + internal/api/ui/login/static/i18n/ja.yaml | 20 + internal/api/ui/login/static/i18n/pl.yaml | 20 + internal/api/ui/login/static/i18n/zh.yaml | 20 + .../login/static/templates/device_action.html | 18 + .../static/templates/device_usercode.html | 21 + .../ui/login/static/templates/success.html | 12 + internal/api/ui/login/statik/generate.go | 2 +- .../eventsourcing/eventstore/auth_request.go | 6 +- internal/command/device_auth.go | 113 ++++ internal/command/device_auth_model.go | 61 +++ internal/command/device_auth_test.go | 481 ++++++++++++++++++ internal/domain/application_oidc.go | 1 + internal/domain/auth_request.go | 11 + internal/domain/device_auth.go | 78 +++ internal/domain/device_auth_test.go | 158 ++++++ internal/domain/deviceauthstate_string.go | 28 + internal/domain/request.go | 16 + internal/eventstore/eventstore.go | 18 + .../eventstore/handler/crdb/handler_stmt.go | 1 + internal/eventstore/handler/crdb/init.go | 2 + internal/eventstore/handler/crdb/init_test.go | 49 ++ internal/query/device_auth.go | 141 +++++ internal/query/device_auth_test.go | 158 ++++++ internal/query/projection/device_auth.go | 161 ++++++ internal/query/projection/projection.go | 3 + internal/repository/deviceauth/aggregate.go | 19 + internal/repository/deviceauth/constraints.go | 46 ++ internal/repository/deviceauth/device_auth.go | 141 +++++ internal/repository/org/eventstore.go | 7 +- proto/zitadel/app.proto | 1 + 49 files changed, 2313 insertions(+), 38 deletions(-) create mode 100644 internal/api/oidc/device_auth.go create mode 100644 internal/api/ui/login/device_auth.go create mode 100644 internal/api/ui/login/static/templates/device_action.html create mode 100644 internal/api/ui/login/static/templates/device_usercode.html create mode 100644 internal/api/ui/login/static/templates/success.html create mode 100644 internal/command/device_auth.go create mode 100644 internal/command/device_auth_model.go create mode 100644 internal/command/device_auth_test.go create mode 100644 internal/domain/device_auth.go create mode 100644 internal/domain/device_auth_test.go create mode 100644 internal/domain/deviceauthstate_string.go create mode 100644 internal/eventstore/handler/crdb/init_test.go create mode 100644 internal/query/device_auth.go create mode 100644 internal/query/device_auth_test.go create mode 100644 internal/query/projection/device_auth.go create mode 100644 internal/repository/deviceauth/aggregate.go create mode 100644 internal/repository/deviceauth/constraints.go create mode 100644 internal/repository/deviceauth/device_auth.go diff --git a/cmd/defaults.yaml b/cmd/defaults.yaml index 8996e384c6..1afc617c5a 100644 --- a/cmd/defaults.yaml +++ b/cmd/defaults.yaml @@ -233,6 +233,8 @@ OIDC: Path: /oidc/v1/end_session Keys: Path: /oauth/v2/keys + DeviceAuth: + Path: /oauth/v2/device_authorization SAML: ProviderConfig: diff --git a/cmd/start/start.go b/cmd/start/start.go index f80fc6fef1..c3ba766fea 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -12,14 +12,13 @@ import ( "syscall" "time" - "github.com/zitadel/saml/pkg/provider" - clockpkg "github.com/benbjohnson/clock" "github.com/gorilla/mux" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/zitadel/logging" "github.com/zitadel/oidc/v2/pkg/op" + "github.com/zitadel/saml/pkg/provider" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" @@ -294,6 +293,7 @@ func startAPIs( return fmt.Errorf("unable to start login: %w", err) } apis.RegisterHandlerOnPrefix(login.HandlerPrefix, l.Handler()) + apis.HandleFunc(login.EndpointDeviceAuth, login.RedirectDeviceAuthToPrefix) // handle grpc at last to be able to handle the root, because grpc and gateway require a lot of different prefixes apis.RouteGRPC() diff --git a/go.mod b/go.mod index eb61ce26e2..668aa02305 100644 --- a/go.mod +++ b/go.mod @@ -45,6 +45,7 @@ require ( github.com/minio/minio-go/v7 v7.0.50 github.com/mitchellh/mapstructure v1.5.0 github.com/muesli/gamut v0.3.1 + github.com/muhlemmer/gu v0.3.1 github.com/nicksnyder/go-i18n/v2 v2.2.1 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 @@ -57,7 +58,7 @@ require ( github.com/superseriousbusiness/exifremove v0.0.0-20210330092427-6acd27eac203 github.com/ttacon/libphonenumber v1.2.1 github.com/zitadel/logging v0.3.4 - github.com/zitadel/oidc/v2 v2.2.6 + github.com/zitadel/oidc/v2 v2.4.0 github.com/zitadel/saml v0.0.11 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 @@ -70,10 +71,10 @@ require ( go.opentelemetry.io/otel/sdk/metric v0.37.0 go.opentelemetry.io/otel/trace v1.14.0 golang.org/x/crypto v0.7.0 - golang.org/x/net v0.8.0 - golang.org/x/oauth2 v0.6.0 + golang.org/x/net v0.9.0 + golang.org/x/oauth2 v0.7.0 golang.org/x/sync v0.1.0 - golang.org/x/text v0.8.0 + golang.org/x/text v0.9.0 golang.org/x/tools v0.7.0 google.golang.org/api v0.115.0 google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd @@ -90,7 +91,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/muhlemmer/gu v0.3.1 // indirect github.com/pelletier/go-toml/v2 v2.0.7 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index 4efcc17bb2..382d482406 100644 --- a/go.sum +++ b/go.sum @@ -1130,8 +1130,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zitadel/logging v0.3.4 h1:9hZsTjMMTE3X2LUi0xcF9Q9EdLo+FAezeu52ireBbHM= github.com/zitadel/logging v0.3.4/go.mod h1:aPpLQhE+v6ocNK0TWrBrd363hZ95KcI17Q1ixAQwZF0= -github.com/zitadel/oidc/v2 v2.2.6 h1:L2k5q1X8Rucax5Ynp3B3lz7JQDJxUwfWCOmgc9Bh0BM= -github.com/zitadel/oidc/v2 v2.2.6/go.mod h1:tGkj9lQk6KVj5hsM89XPadvi6I06666sMy3KtykvSFM= +github.com/zitadel/oidc/v2 v2.4.0 h1:BKx61qOxDf+GjrY8T6lFxPjea0aMfkFvHD9pqyJGpFk= +github.com/zitadel/oidc/v2 v2.4.0/go.mod h1:wBOrfB0m/tGXo6isym1F5k3VeXSUinGsAt2H8V/+Uks= github.com/zitadel/saml v0.0.11 h1:kObucnBrcu1PHCO7RGT0iVeuJL/5I50gUgr40S41nMs= github.com/zitadel/saml v0.0.11/go.mod h1:YGWAvPZRv4DbEZ78Ht/2P0AWzGn+6WGhFf90PMXl0Po= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= @@ -1342,8 +1342,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1360,8 +1360,8 @@ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1477,8 +1477,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/internal/api/api.go b/internal/api/api.go index 3cb851e3d0..d634e50109 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -101,6 +101,12 @@ func (a *API) RegisterService(ctx context.Context, grpcServer server.Server) err return nil } +// HandleFunc allows registering a [http.HandlerFunc] on an exact +// path, instead of prefix like RegisterHandlerOnPrefix. +func (a *API) HandleFunc(path string, f http.HandlerFunc) { + a.router.HandleFunc(path, f) +} + // RegisterHandlerOnPrefix registers a http handler on a path prefix // the prefix will not be passed to the actual handler func (a *API) RegisterHandlerOnPrefix(prefix string, handler http.Handler) { diff --git a/internal/api/grpc/project/application.go b/internal/api/grpc/project/application.go index 5565ba359e..e555e93d27 100644 --- a/internal/api/grpc/project/application.go +++ b/internal/api/grpc/project/application.go @@ -136,6 +136,8 @@ func OIDCGrantTypesFromModel(grantTypes []domain.OIDCGrantType) []app_pb.OIDCGra oidcGrantTypes[i] = app_pb.OIDCGrantType_OIDC_GRANT_TYPE_IMPLICIT case domain.OIDCGrantTypeRefreshToken: oidcGrantTypes[i] = app_pb.OIDCGrantType_OIDC_GRANT_TYPE_REFRESH_TOKEN + case domain.OIDCGrantTypeDeviceCode: + oidcGrantTypes[i] = app_pb.OIDCGrantType_OIDC_GRANT_TYPE_DEVICE_CODE } } return oidcGrantTypes @@ -154,6 +156,8 @@ func OIDCGrantTypesToDomain(grantTypes []app_pb.OIDCGrantType) []domain.OIDCGran oidcGrantTypes[i] = domain.OIDCGrantTypeImplicit case app_pb.OIDCGrantType_OIDC_GRANT_TYPE_REFRESH_TOKEN: oidcGrantTypes[i] = domain.OIDCGrantTypeRefreshToken + case app_pb.OIDCGrantType_OIDC_GRANT_TYPE_DEVICE_CODE: + oidcGrantTypes[i] = domain.OIDCGrantTypeDeviceCode } } return oidcGrantTypes diff --git a/internal/api/oidc/auth_request_converter.go b/internal/api/oidc/auth_request_converter.go index 48729705e7..6473460843 100644 --- a/internal/api/oidc/auth_request_converter.go +++ b/internal/api/oidc/auth_request_converter.go @@ -99,15 +99,6 @@ func (a *AuthRequest) GetSubject() string { return a.UserID } -func (a *AuthRequest) Done() bool { - for _, step := range a.PossibleSteps { - if step.Type() == domain.NextStepRedirectToCallback { - return true - } - } - return false -} - func (a *AuthRequest) oidc() *domain.AuthRequestOIDC { return a.Request.(*domain.AuthRequestOIDC) } diff --git a/internal/api/oidc/client_converter.go b/internal/api/oidc/client_converter.go index 749a5c3dff..6b32f38927 100644 --- a/internal/api/oidc/client_converter.go +++ b/internal/api/oidc/client_converter.go @@ -200,6 +200,8 @@ func grantTypeToOIDC(grantType domain.OIDCGrantType) oidc.GrantType { return oidc.GrantTypeImplicit case domain.OIDCGrantTypeRefreshToken: return oidc.GrantTypeRefreshToken + case domain.OIDCGrantTypeDeviceCode: + return oidc.GrantTypeDeviceCode default: return oidc.GrantTypeCode } diff --git a/internal/api/oidc/device_auth.go b/internal/api/oidc/device_auth.go new file mode 100644 index 0000000000..7eee06096a --- /dev/null +++ b/internal/api/oidc/device_auth.go @@ -0,0 +1,176 @@ +package oidc + +import ( + "context" + "time" + + "github.com/zitadel/logging" + "github.com/zitadel/oidc/v2/pkg/oidc" + "github.com/zitadel/oidc/v2/pkg/op" + + "github.com/zitadel/zitadel/internal/api/ui/login" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/telemetry/tracing" +) + +const ( + DeviceAuthDefaultLifetime = 5 * time.Minute + DeviceAuthDefaultPollInterval = 5 * time.Second +) + +type DeviceAuthorizationConfig struct { + Lifetime time.Duration + PollInterval time.Duration + UserCode *UserCodeConfig +} + +type UserCodeConfig struct { + CharSet string + CharAmount int + DashInterval int +} + +// toOPConfig converts DeviceAuthorizationConfig to a [op.DeviceAuthorizationConfig], +// setting sane defaults for empty values. +// Safe to call when c is nil. +func (c *DeviceAuthorizationConfig) toOPConfig() op.DeviceAuthorizationConfig { + out := op.DeviceAuthorizationConfig{ + Lifetime: DeviceAuthDefaultLifetime, + PollInterval: DeviceAuthDefaultPollInterval, + UserFormPath: login.EndpointDeviceAuth, + UserCode: op.UserCodeBase20, + } + if c == nil { + return out + } + if c.Lifetime != 0 { + out.Lifetime = c.Lifetime + } + if c.PollInterval != 0 { + out.PollInterval = c.PollInterval + } + + if c.UserCode == nil { + return out + } + if c.UserCode.CharSet != "" { + out.UserCode.CharSet = c.UserCode.CharSet + } + if c.UserCode.CharAmount != 0 { + out.UserCode.CharAmount = c.UserCode.CharAmount + } + if c.UserCode.DashInterval != 0 { + out.UserCode.DashInterval = c.UserCode.CharAmount + } + return out +} + +// StoreDeviceAuthorization creates a new Device Authorization request. +// Implements the op.DeviceAuthorizationStorage interface. +func (o *OPStorage) StoreDeviceAuthorization(ctx context.Context, clientID, deviceCode, userCode string, expires time.Time, scopes []string) (err error) { + const logMsg = "store device authorization" + logger := logging.WithFields("client_id", clientID, "device_code", deviceCode, "user_code", userCode, "expires", expires, "scopes", scopes) + + ctx, span := tracing.NewSpan(ctx) + defer func() { + logger.OnError(err).Error(logMsg) + span.EndWithError(err) + }() + + // TODO(muhlemmer): Remove the following code block with oidc v3 + // https://github.com/zitadel/oidc/issues/370 + client, err := o.GetClientByClientID(ctx, clientID) + if err != nil { + return err + } + if !op.ValidateGrantType(client, oidc.GrantTypeDeviceCode) { + return errors.ThrowPermissionDeniedf(nil, "OIDC-et1Ae", "grant type %q not allowed for client", oidc.GrantTypeDeviceCode) + } + + scopes, err = o.assertProjectRoleScopes(ctx, clientID, scopes) + if err != nil { + return errors.ThrowPreconditionFailed(err, "OIDC-She4t", "Errors.Internal") + } + aggrID, details, err := o.command.AddDeviceAuth(ctx, clientID, deviceCode, userCode, expires, scopes) + if err == nil { + logger.SetFields("aggregate_id", aggrID, "details", details).Debug(logMsg) + } + + return err +} + +func newDeviceAuthorizationState(d *domain.DeviceAuth) *op.DeviceAuthorizationState { + return &op.DeviceAuthorizationState{ + ClientID: d.ClientID, + Scopes: d.Scopes, + Expires: d.Expires, + Done: d.State.Done(), + Subject: d.Subject, + Denied: d.State.Denied(), + } +} + +// GetDeviceAuthorizatonState retieves the current state of the Device Authorization process. +// It implements the [op.DeviceAuthorizationStorage] interface and is used by devices that +// are polling until they successfully receive a token or we indicate a denied or expired state. +// As generated user codes are of low entropy, this implementation also takes care or +// device authorization request cleanup, when it has been Approved, Denied or Expired. +func (o *OPStorage) GetDeviceAuthorizatonState(ctx context.Context, clientID, deviceCode string) (state *op.DeviceAuthorizationState, err error) { + const logMsg = "get device authorization state" + logger := logging.WithFields("client_id", clientID, "device_code", deviceCode) + + ctx, span := tracing.NewSpan(ctx) + defer func() { + if err != nil { + logger.WithError(err).Error(logMsg) + } + span.EndWithError(err) + }() + + deviceAuth, err := o.query.DeviceAuthByDeviceCode(ctx, clientID, deviceCode) + if err != nil { + return nil, err + } + logger.SetFields( + "expires", deviceAuth.Expires, "scopes", deviceAuth.Scopes, + "subject", deviceAuth.Subject, "state", deviceAuth.State, + ).Debug("device authorization state") + + // Cancel the request if it is expired, only if it wasn't Done meanwhile + if !deviceAuth.State.Done() && deviceAuth.Expires.Before(time.Now()) { + _, err = o.command.CancelDeviceAuth(ctx, deviceAuth.AggregateID, domain.DeviceAuthCanceledExpired) + if err != nil { + return nil, err + } + deviceAuth.State = domain.DeviceAuthStateExpired + } + + // When the request is more then initiated, it has been either Approved, Denied or Expired. + // At this point we should remove it from the DB to avoid user code conflicts. + if deviceAuth.State > domain.DeviceAuthStateInitiated { + _, err = o.command.RemoveDeviceAuth(ctx, deviceAuth.AggregateID) + if err != nil { + return nil, err + } + } + + return newDeviceAuthorizationState(deviceAuth), nil +} + +// TODO(muhlemmer): remove the following methods with oidc v3. +// They are actually not used, but are required by the oidc device storage interface. +// https://github.com/zitadel/oidc/issues/371 +func (o *OPStorage) GetDeviceAuthorizationByUserCode(ctx context.Context, userCode string) (*op.DeviceAuthorizationState, error) { + return nil, nil +} + +func (o *OPStorage) CompleteDeviceAuthorization(ctx context.Context, userCode, subject string) (err error) { + return nil +} + +func (o *OPStorage) DenyDeviceAuthorization(ctx context.Context, userCode string) (err error) { + return nil +} + +// TODO end. diff --git a/internal/api/oidc/op.go b/internal/api/oidc/op.go index 48167f402c..9574f561b6 100644 --- a/internal/api/oidc/op.go +++ b/internal/api/oidc/op.go @@ -40,6 +40,7 @@ type Config struct { UserAgentCookieConfig *middleware.UserAgentCookieConfig Cache *middleware.CacheConfig CustomEndpoints *EndpointConfig + DeviceAuth *DeviceAuthorizationConfig } type EndpointConfig struct { @@ -50,6 +51,7 @@ type EndpointConfig struct { Revocation *Endpoint EndSession *Endpoint Keys *Endpoint + DeviceAuth *Endpoint } type Endpoint struct { @@ -108,6 +110,7 @@ func createOPConfig(config Config, defaultLogoutRedirectURI string, cryptoKey [] GrantTypeRefreshToken: config.GrantTypeRefreshToken, RequestObjectSupported: config.RequestObjectSupported, SupportedUILocales: supportedLanguages, + DeviceAuthorization: config.DeviceAuth.toOPConfig(), } if cryptoLength := len(cryptoKey); cryptoLength != 32 { return nil, caos_errs.ThrowInternalf(nil, "OIDC-D43gf", "crypto key must be 32 bytes, but is %d", cryptoLength) @@ -165,6 +168,9 @@ func customEndpoints(endpointConfig *EndpointConfig) []op.Option { if endpointConfig.Keys != nil { options = append(options, op.WithCustomKeysEndpoint(op.NewEndpointWithURL(endpointConfig.Keys.Path, endpointConfig.Keys.URL))) } + if endpointConfig.DeviceAuth != nil { + options = append(options, op.WithCustomDeviceAuthorizationEndpoint(op.NewEndpointWithURL(endpointConfig.DeviceAuth.Path, endpointConfig.DeviceAuth.URL))) + } return options } diff --git a/internal/api/saml/auth_request_converter.go b/internal/api/saml/auth_request_converter.go index a19fed0920..28f2a3c548 100644 --- a/internal/api/saml/auth_request_converter.go +++ b/internal/api/saml/auth_request_converter.go @@ -63,14 +63,6 @@ func (a *AuthRequest) GetUserID() string { func (a *AuthRequest) GetUserName() string { return a.UserName } -func (a *AuthRequest) Done() bool { - for _, step := range a.PossibleSteps { - if step.Type() == domain.NextStepRedirectToCallback { - return true - } - } - return false -} func AuthRequestFromBusiness(authReq *domain.AuthRequest) (_ models.AuthRequestInt, err error) { if _, ok := authReq.Request.(*domain.AuthRequestSAML); !ok { diff --git a/internal/api/ui/login/device_auth.go b/internal/api/ui/login/device_auth.go new file mode 100644 index 0000000000..e2322ee04f --- /dev/null +++ b/internal/api/ui/login/device_auth.go @@ -0,0 +1,201 @@ +package login + +import ( + errs "errors" + "fmt" + "net/http" + "net/url" + "time" + + "github.com/gorilla/mux" + "github.com/muhlemmer/gu" + "github.com/zitadel/logging" + + "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/zitadel/internal/api/http/middleware" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" +) + +const ( + tmplDeviceAuthUserCode = "device-usercode" + tmplDeviceAuthAction = "device-action" +) + +func (l *Login) renderDeviceAuthUserCode(w http.ResponseWriter, r *http.Request, err error) { + var errID, errMessage string + if err != nil { + logging.WithError(err).Error() + errID, errMessage = l.getErrorMessage(r, err) + } + + data := l.getBaseData(r, nil, "DeviceAuth.Title", "DeviceAuth.UserCode.Description", errID, errMessage) + translator := l.getTranslator(r.Context(), nil) + l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplDeviceAuthUserCode], data, nil) +} + +func (l *Login) renderDeviceAuthAction(w http.ResponseWriter, r *http.Request, authReq *domain.AuthRequest, scopes []string) { + data := &struct { + baseData + AuthRequestID string + Username string + ClientID string + Scopes []string + }{ + baseData: l.getBaseData(r, authReq, "DeviceAuth.Title", "DeviceAuth.Action.Description", "", ""), + AuthRequestID: authReq.ID, + Username: authReq.UserName, + ClientID: authReq.ApplicationID, + Scopes: scopes, + } + + translator := l.getTranslator(r.Context(), authReq) + l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplDeviceAuthAction], data, nil) +} + +const ( + deviceAuthAllowed = "allowed" + deviceAuthDenied = "denied" +) + +// renderDeviceAuthDone renders success.html when the action was allowed and error.html when it was denied. +func (l *Login) renderDeviceAuthDone(w http.ResponseWriter, r *http.Request, authReq *domain.AuthRequest, action string) { + data := &struct { + baseData + Message string + }{ + baseData: l.getBaseData(r, authReq, "DeviceAuth.Title", "DeviceAuth.Done.Description", "", ""), + } + + translator := l.getTranslator(r.Context(), authReq) + switch action { + case deviceAuthAllowed: + data.Message = translator.LocalizeFromRequest(r, "DeviceAuth.Done.Approved", nil) + l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplSuccess], data, nil) + case deviceAuthDenied: + data.ErrMessage = translator.LocalizeFromRequest(r, "DeviceAuth.Done.Denied", nil) + l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplError], data, nil) + } +} + +// handleDeviceUserCode serves the Device Authorization user code submission form. +// The "user_code" may be submitted by URL (GET) or form (POST). +// When a "user_code" is received and found through query, +// handleDeviceAuthUserCode will create a new AuthRequest in the repository. +// The user is then redirected to the /login endpoint to complete authentication. +// +// The agent ID from the context is set to the authentication request +// to ensure the complete login flow is completed from the same browser. +func (l *Login) handleDeviceAuthUserCode(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + err := r.ParseForm() + if err != nil { + w.WriteHeader(http.StatusBadRequest) + l.renderDeviceAuthUserCode(w, r, err) + return + } + userCode := r.Form.Get("user_code") + if userCode == "" { + if prompt, _ := url.QueryUnescape(r.Form.Get("prompt")); prompt != "" { + err = errs.New(prompt) + } + l.renderDeviceAuthUserCode(w, r, err) + return + } + deviceAuth, err := l.query.DeviceAuthByUserCode(ctx, userCode) + if err != nil { + l.renderDeviceAuthUserCode(w, r, err) + return + } + userAgentID, ok := middleware.UserAgentIDFromCtx(ctx) + if !ok { + l.renderDeviceAuthUserCode(w, r, errs.New("internal error: agent ID missing")) + return + } + authRequest, err := l.authRepo.CreateAuthRequest(ctx, &domain.AuthRequest{ + CreationDate: time.Now(), + AgentID: userAgentID, + ApplicationID: deviceAuth.ClientID, + InstanceID: authz.GetInstance(ctx).InstanceID(), + Request: &domain.AuthRequestDevice{ + ID: deviceAuth.AggregateID, + DeviceCode: deviceAuth.DeviceCode, + UserCode: deviceAuth.UserCode, + Scopes: deviceAuth.Scopes, + }, + }) + if err != nil { + l.renderDeviceAuthUserCode(w, r, err) + return + } + + http.Redirect(w, r, l.renderer.pathPrefix+EndpointLogin+"?authRequestID="+authRequest.ID, http.StatusFound) +} + +// redirectDeviceAuthStart redirects the user to the start point of +// the device authorization flow. A prompt can be set to inform the user +// of the reason why they are redirected back. +func (l *Login) redirectDeviceAuthStart(w http.ResponseWriter, r *http.Request, prompt string) { + values := make(url.Values) + values.Set("prompt", url.QueryEscape(prompt)) + + url := url.URL{ + Path: l.renderer.pathPrefix + EndpointDeviceAuth, + RawQuery: values.Encode(), + } + http.Redirect(w, r, url.String(), http.StatusSeeOther) +} + +// handleDeviceAuthAction is the handler where the user is redirected after login. +// The authRequest is checked if the login was indeed completed. +// When the action of "allowed" or "denied", the device authorization is updated accordingly. +// Else the user is presented with a page where they can choose / submit either action. +func (l *Login) handleDeviceAuthAction(w http.ResponseWriter, r *http.Request) { + authReq, err := l.getAuthRequest(r) + if authReq == nil { + err = errors.ThrowInvalidArgument(err, "LOGIN-OLah8", "invalid or missing auth request") + l.redirectDeviceAuthStart(w, r, err.Error()) + return + } + if !authReq.Done() { + l.redirectDeviceAuthStart(w, r, "authentication not completed") + return + } + authDev, ok := authReq.Request.(*domain.AuthRequestDevice) + if !ok { + l.redirectDeviceAuthStart(w, r, fmt.Sprintf("wrong auth request type: %T", authReq.Request)) + return + } + + action := mux.Vars(r)["action"] + switch action { + case deviceAuthAllowed: + _, err = l.command.ApproveDeviceAuth(r.Context(), authDev.ID, authReq.UserID) + case deviceAuthDenied: + _, err = l.command.CancelDeviceAuth(r.Context(), authDev.ID, domain.DeviceAuthCanceledDenied) + default: + l.renderDeviceAuthAction(w, r, authReq, authDev.Scopes) + return + } + if err != nil { + l.redirectDeviceAuthStart(w, r, err.Error()) + return + } + + l.renderDeviceAuthDone(w, r, authReq, action) +} + +// deviceAuthCallbackURL creates the callback URL with which the user +// is redirected back to the device authorization flow. +func (l *Login) deviceAuthCallbackURL(authRequestID string) string { + return l.renderer.pathPrefix + EndpointDeviceAuthAction + "?authRequestID=" + authRequestID +} + +// RedirectDeviceAuthToPrefix allows users to use https://domain.com/device without the /ui/login prefix +// and redirects them to the prefixed endpoint. +// [rfc 8628](https://www.rfc-editor.org/rfc/rfc8628#section-3.2) recommends the URL to be as short as possible. +func RedirectDeviceAuthToPrefix(w http.ResponseWriter, r *http.Request) { + target := gu.PtrCopy(r.URL) + target.Path = HandlerPrefix + EndpointDeviceAuth + http.Redirect(w, r, target.String(), http.StatusFound) +} diff --git a/internal/api/ui/login/login_success_handler.go b/internal/api/ui/login/login_success_handler.go index aad9a67393..f05ee48185 100644 --- a/internal/api/ui/login/login_success_handler.go +++ b/internal/api/ui/login/login_success_handler.go @@ -69,6 +69,8 @@ func (l *Login) authRequestCallback(ctx context.Context, authReq *domain.AuthReq return l.oidcAuthCallbackURL(ctx, authReq.ID), nil case *domain.AuthRequestSAML: return l.samlAuthCallbackURL(ctx, authReq.ID), nil + case *domain.AuthRequestDevice: + return l.deviceAuthCallbackURL(authReq.ID), nil default: return "", caos_errs.ThrowInternal(nil, "LOGIN-rhjQF", "Errors.AuthRequest.RequestTypeNotSupported") } diff --git a/internal/api/ui/login/renderer.go b/internal/api/ui/login/renderer.go index 8266b74d07..a9b12f19dc 100644 --- a/internal/api/ui/login/renderer.go +++ b/internal/api/ui/login/renderer.go @@ -25,7 +25,8 @@ import ( ) const ( - tmplError = "error" + tmplError = "error" + tmplSuccess = "success" ) type Renderer struct { @@ -45,6 +46,7 @@ func CreateRenderer(pathPrefix string, staticDir http.FileSystem, staticStorage } tmplMapping := map[string]string{ tmplError: "error.html", + tmplSuccess: "success.html", tmplLogin: "login.html", tmplUserSelection: "select_user.html", tmplPassword: "password.html", @@ -77,6 +79,8 @@ func CreateRenderer(pathPrefix string, staticDir http.FileSystem, staticStorage tmplExternalNotFoundOption: "external_not_found_option.html", tmplLoginSuccess: "login_success.html", tmplLDAPLogin: "ldap_login.html", + tmplDeviceAuthUserCode: "device_usercode.html", + tmplDeviceAuthAction: "device_action.html", } funcs := map[string]interface{}{ "resourceUrl": func(file string) string { @@ -323,6 +327,7 @@ func (l *Login) chooseNextStep(w http.ResponseWriter, r *http.Request, authReq * func (l *Login) renderInternalError(w http.ResponseWriter, r *http.Request, authReq *domain.AuthRequest, err error) { var msg string if err != nil { + logging.WithError(err).WithField("auth_req_id", authReq.ID).Error() _, msg = l.getErrorMessage(r, err) } data := l.getBaseData(r, authReq, "Errors.Internal", "", "Internal", msg) diff --git a/internal/api/ui/login/router.go b/internal/api/ui/login/router.go index e723cad1ac..8ad27d7573 100644 --- a/internal/api/ui/login/router.go +++ b/internal/api/ui/login/router.go @@ -46,6 +46,9 @@ const ( EndpointResources = "/resources" EndpointDynamicResources = "/resources/dynamic" + + EndpointDeviceAuth = "/device" + EndpointDeviceAuthAction = "/device/{action}" ) var ( @@ -107,5 +110,7 @@ func CreateRouter(login *Login, staticDir http.FileSystem, interceptors ...mux.M router.HandleFunc(EndpointLDAPLogin, login.handleLDAP).Methods(http.MethodGet) router.HandleFunc(EndpointLDAPCallback, login.handleLDAPCallback).Methods(http.MethodPost) router.SkipClean(true).Handle("", http.RedirectHandler(HandlerPrefix+"/", http.StatusMovedPermanently)) + router.HandleFunc(EndpointDeviceAuth, login.handleDeviceAuthUserCode).Methods(http.MethodGet, http.MethodPost) + router.HandleFunc(EndpointDeviceAuthAction, login.handleDeviceAuthAction).Methods(http.MethodGet, http.MethodPost) return router } diff --git a/internal/api/ui/login/static/i18n/de.yaml b/internal/api/ui/login/static/i18n/de.yaml index 5b12002119..96a5d461fa 100644 --- a/internal/api/ui/login/static/i18n/de.yaml +++ b/internal/api/ui/login/static/i18n/de.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: Geräteautorisierung + UserCode: + Label: Benutzercode + Description: Geben Sie den auf dem Gerät angezeigten Benutzercode ein + ButtonNext: weiter + Action: + Description: Gerätezugriff erlauben + GrantDevice: Sie sind dabei, das Gerät zu erlauben + AccessToScopes: Zugriff auf die folgenden Daten + Button: + Allow: erlauben + Deny: verweigern + Done: + Description: Abgeschlossen + Approved: Gerätezulassung genehmigt. Sie können jetzt zum Gerät zurückkehren. + Denied: Geräteautorisierung verweigert. Sie können jetzt zum Gerät zurückkehren. + Footer: PoweredBy: Powered By Tos: AGB @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: Registrierung ist nicht erlaubt + DeviceAuth: + NotExisting: Benutzercode existiert nicht optional: (optional) diff --git a/internal/api/ui/login/static/i18n/en.yaml b/internal/api/ui/login/static/i18n/en.yaml index 14b0d90011..14ac6a5808 100644 --- a/internal/api/ui/login/static/i18n/en.yaml +++ b/internal/api/ui/login/static/i18n/en.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: Device Authorization + UserCode: + Label: User Code + Description: Enter the user code presented on the device. + ButtonNext: next + Action: + Description: Grant device access. + GrantDevice: you are about to grant device + AccessToScopes: access to the following scopes + Button: + Allow: allow + Deny: deny + Done: + Description: Done. + Approved: Device authorization approved. You can now return to the device. + Denied: Device authorization denied. You can now return to the device. + Footer: PoweredBy: Powered By Tos: TOS @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: Registration is not allowed + DeviceAuth: + NotExisting: User Code doesn't exist optional: (optional) diff --git a/internal/api/ui/login/static/i18n/fr.yaml b/internal/api/ui/login/static/i18n/fr.yaml index be50b4327e..3678b555a0 100644 --- a/internal/api/ui/login/static/i18n/fr.yaml +++ b/internal/api/ui/login/static/i18n/fr.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: Autorisation de l'appareil + UserCode: + Label: Code d'utilisateur + Description: Saisissez le code utilisateur présenté sur l'appareil. + ButtonNext: suivant + Action: + Description: Accordez l'accès à l'appareil. + GrantDevice: vous êtes sur le point d'accorder un appareil + AccessToScopes: accès aux périmètres suivants + Button: + Allow: permettre + Deny: refuser + Done: + Description: Fait. + Approved: Autorisation de l'appareil approuvée. Vous pouvez maintenant retourner à l'appareil. + Denied: Autorisation de l'appareil refusée. Vous pouvez maintenant retourner à l'appareil. + Footer: PoweredBy: Promulgué par Tos: TOS @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: L'enregistrement n'est pas autorisé + DeviceAuth: + NotExisting: Le code utilisateur n'existe pas optional: (facultatif) diff --git a/internal/api/ui/login/static/i18n/it.yaml b/internal/api/ui/login/static/i18n/it.yaml index b27e27b072..61bf0e3190 100644 --- a/internal/api/ui/login/static/i18n/it.yaml +++ b/internal/api/ui/login/static/i18n/it.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: Autorizzazione del dispositivo + UserCode: + Label: Codice utente + Description: Inserire il codice utente presentato sul dispositivo. + ButtonNext: prossimo + Action: + Description: Concedi l'accesso al dispositivo. + GrantDevice: stai per concedere il dispositivo + AccessToScopes: accesso ai seguenti ambiti + Button: + Allow: permettere + Deny: negare + Done: + Description: Fatto. + Approved: Autorizzazione del dispositivo approvata. Ora puoi tornare al dispositivo. + Denied: Autorizzazione dispositivo negata. Ora puoi tornare al dispositivo. + Footer: PoweredBy: Alimentato da Tos: Termini di servizio @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: la registrazione non è consentita. + DeviceAuth: + NotExisting: Il codice utente non esiste optional: (opzionale) diff --git a/internal/api/ui/login/static/i18n/ja.yaml b/internal/api/ui/login/static/i18n/ja.yaml index bdb9ec09d7..3a7b964b2b 100644 --- a/internal/api/ui/login/static/i18n/ja.yaml +++ b/internal/api/ui/login/static/i18n/ja.yaml @@ -309,6 +309,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: デバイス認証 + UserCode: + Label: ユーザーコード + Description: デバイスに表示されたユーザー コードを入力します。 + ButtonNext: 次 + Action: + Description: デバイスへのアクセスを許可します。 + GrantDevice: デバイスを許可しようとしています + AccessToScopes: 次のスコープへのアクセス + Button: + Allow: 許可する + Deny: 拒否 + Done: + Description: 終わり。 + Approved: デバイス認証が承認されました。 これで、デバイスに戻ることができます。 + Denied: デバイス認証が拒否されました。 これで、デバイスに戻ることができます。 + Footer: PoweredBy: Powered By Tos: TOS @@ -385,5 +403,7 @@ Errors: IAM: LockoutPolicy: NotExisting: ロックアウトポリシーが存在しません + DeviceAuth: + NotExisting: ユーザーコードが存在しません optional: "(オプション)" diff --git a/internal/api/ui/login/static/i18n/pl.yaml b/internal/api/ui/login/static/i18n/pl.yaml index ca038b2561..894de884bd 100644 --- a/internal/api/ui/login/static/i18n/pl.yaml +++ b/internal/api/ui/login/static/i18n/pl.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: Autoryzacja urządzenia + UserCode: + Label: Kod użytkownika + Description: Wprowadź kod użytkownika prezentowany na urządzeniu. + ButtonNext: Następny + Action: + Description: Przyznaj dostęp do urządzenia. + GrantDevice: zamierzasz przyznać urządzenie + AccessToScopes: dostęp do następujących zakresów + Button: + Allow: umożliwić + Deny: zaprzeczyć + Done: + Description: Zrobione. + Approved: Zatwierdzono autoryzację urządzenia. Możesz teraz wrócić do urządzenia. + Denied: Odmowa autoryzacji urządzenia. Możesz teraz wrócić do urządzenia. + Footer: PoweredBy: Obsługiwane przez Tos: TOS @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: Rejestracja nie jest dozwolona + DeviceAuth: + NotExisting: Kod użytkownika nie istnieje optional: (opcjonalny) diff --git a/internal/api/ui/login/static/i18n/zh.yaml b/internal/api/ui/login/static/i18n/zh.yaml index 830476299f..e2947e6d17 100644 --- a/internal/api/ui/login/static/i18n/zh.yaml +++ b/internal/api/ui/login/static/i18n/zh.yaml @@ -317,6 +317,24 @@ ExternalNotFound: Japanese: 日本語 Spanish: Español +DeviceAuth: + Title: 设备授权 + UserCode: + Label: 用户代码 + Description: 输入设备上显示的用户代码。 + ButtonNext: 下一个 + Action: + Description: 授予设备访问权限。 + GrantDevice: 您即将授予设备 + AccessToScopes: 访问以下范围 + Button: + Allow: 允许 + Deny: 否定 + Done: + Description: 完毕。 + Approved: 设备授权已批准。 您现在可以返回设备。 + Denied: 设备授权被拒绝。 您现在可以返回设备。 + Footer: PoweredBy: Powered By Tos: 服务条款 @@ -425,5 +443,7 @@ Errors: Org: LoginPolicy: RegistrationNotAllowed: 不允许注册 + DeviceAuth: + NotExisting: 用户代码不存在 optional: (可选) diff --git a/internal/api/ui/login/static/templates/device_action.html b/internal/api/ui/login/static/templates/device_action.html new file mode 100644 index 0000000000..4e0cc2801d --- /dev/null +++ b/internal/api/ui/login/static/templates/device_action.html @@ -0,0 +1,18 @@ +{{template "main-top" .}} + +

{{.Title}}

+

+ {{.Username}}, {{t "DeviceAuth.Action.GrantDevice"}} {{.ClientID}} {{t "DeviceAuth.Action.AccessToScopes"}}: {{.Scopes}}. +

+
+ {{ .CSRF }} + + + +
+ +{{template "main-bottom" .}} diff --git a/internal/api/ui/login/static/templates/device_usercode.html b/internal/api/ui/login/static/templates/device_usercode.html new file mode 100644 index 0000000000..5d053cabac --- /dev/null +++ b/internal/api/ui/login/static/templates/device_usercode.html @@ -0,0 +1,21 @@ +{{template "main-top" .}} + +

{{.Title}}

+
+ + {{ .CSRF }} + +
+ + +
+ + {{template "error-message" .}} + +
+ + +
+
+ +{{template "main-bottom" .}} diff --git a/internal/api/ui/login/static/templates/success.html b/internal/api/ui/login/static/templates/success.html new file mode 100644 index 0000000000..bc5042f13b --- /dev/null +++ b/internal/api/ui/login/static/templates/success.html @@ -0,0 +1,12 @@ +{{template "main-top" .}} + +
+
+ +

+ {{ .Message }} +

+
+
+ +{{template "main-bottom" .}} diff --git a/internal/api/ui/login/statik/generate.go b/internal/api/ui/login/statik/generate.go index 75330afad9..5388980631 100644 --- a/internal/api/ui/login/statik/generate.go +++ b/internal/api/ui/login/statik/generate.go @@ -1,3 +1,3 @@ package statik -//go:generate statik -src=../static -dest=.. -ns=login +//go:generate statik -f -src=../static -dest=.. -ns=login diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request.go b/internal/auth/repository/eventsourcing/eventstore/auth_request.go index 34a30a6abf..84f884620b 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request.go @@ -1446,7 +1446,7 @@ func linkingIDPConfigExistingInAllowedIDPs(linkingUsers []*domain.ExternalUser, func userGrantRequired(ctx context.Context, request *domain.AuthRequest, user *user_model.UserView, userGrantProvider userGrantProvider) (_ bool, err error) { var project *query.Project switch request.Request.Type() { - case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML: + case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML, domain.AuthRequestTypeDevice: project, err = userGrantProvider.ProjectByClientID(ctx, request.ApplicationID, false) if err != nil { return false, err @@ -1467,13 +1467,13 @@ func userGrantRequired(ctx context.Context, request *domain.AuthRequest, user *u func projectRequired(ctx context.Context, request *domain.AuthRequest, projectProvider projectProvider) (missingGrant bool, err error) { var project *query.Project switch request.Request.Type() { - case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML: + case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML, domain.AuthRequestTypeDevice: project, err = projectProvider.ProjectByClientID(ctx, request.ApplicationID, false) if err != nil { return false, err } default: - return false, errors.ThrowPreconditionFailed(nil, "EVENT-dfrw2", "Errors.AuthRequest.RequestTypeNotSupported") + return false, errors.ThrowPreconditionFailed(nil, "EVENT-ku4He", "Errors.AuthRequest.RequestTypeNotSupported") } // if the user and project are part of the same organisation we do not need to check if the project exists on that org if !project.HasProjectCheck || project.ResourceOwner == request.UserOrgID { diff --git a/internal/command/device_auth.go b/internal/command/device_auth.go new file mode 100644 index 0000000000..6c3e1a3cfa --- /dev/null +++ b/internal/command/device_auth.go @@ -0,0 +1,113 @@ +package command + +import ( + "context" + "time" + + "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/repository/deviceauth" +) + +func (c *Commands) AddDeviceAuth(ctx context.Context, clientID, deviceCode, userCode string, expires time.Time, scopes []string) (string, *domain.ObjectDetails, error) { + aggrID, err := c.idGenerator.Next() + if err != nil { + return "", nil, err + } + + aggr := deviceauth.NewAggregate(aggrID, authz.GetInstance(ctx).InstanceID()) + model := NewDeviceAuthWriteModel(aggrID, aggr.ResourceOwner) + + pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewAddedEvent( + ctx, + aggr, + clientID, + deviceCode, + userCode, + expires, + scopes, + )) + if err != nil { + return "", nil, err + } + err = AppendAndReduce(model, pushedEvents...) + if err != nil { + return "", nil, err + } + + return model.AggregateID, writeModelToObjectDetails(&model.WriteModel), nil +} + +func (c *Commands) ApproveDeviceAuth(ctx context.Context, id, subject string) (*domain.ObjectDetails, error) { + model, err := c.getDeviceAuthWriteModelByID(ctx, id) + if err != nil { + return nil, err + } + if !model.State.Exists() { + return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound") + } + aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID) + + pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewApprovedEvent(ctx, aggr, subject)) + if err != nil { + return nil, err + } + err = AppendAndReduce(model, pushedEvents...) + if err != nil { + return nil, err + } + + return writeModelToObjectDetails(&model.WriteModel), nil +} + +func (c *Commands) CancelDeviceAuth(ctx context.Context, id string, reason domain.DeviceAuthCanceled) (*domain.ObjectDetails, error) { + model, err := c.getDeviceAuthWriteModelByID(ctx, id) + if err != nil { + return nil, err + } + if !model.State.Exists() { + return nil, caos_errs.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound") + } + aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID) + + pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewCanceledEvent(ctx, aggr, reason)) + if err != nil { + return nil, err + } + err = AppendAndReduce(model, pushedEvents...) + if err != nil { + return nil, err + } + + return writeModelToObjectDetails(&model.WriteModel), nil +} + +func (c *Commands) RemoveDeviceAuth(ctx context.Context, id string) (*domain.ObjectDetails, error) { + model, err := c.getDeviceAuthWriteModelByID(ctx, id) + if err != nil { + return nil, err + } + aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID) + + pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewRemovedEvent(ctx, aggr, model.ClientID, model.DeviceCode, model.UserCode)) + if err != nil { + return nil, err + } + err = AppendAndReduce(model, pushedEvents...) + if err != nil { + return nil, err + } + + return writeModelToObjectDetails(&model.WriteModel), nil +} + +func (c *Commands) getDeviceAuthWriteModelByID(ctx context.Context, id string) (*DeviceAuthWriteModel, error) { + model := &DeviceAuthWriteModel{WriteModel: eventstore.WriteModel{AggregateID: id}} + err := c.eventstore.FilterToQueryReducer(ctx, model) + if err != nil { + return nil, err + } + return model, nil +} diff --git a/internal/command/device_auth_model.go b/internal/command/device_auth_model.go new file mode 100644 index 0000000000..2ea52a39ab --- /dev/null +++ b/internal/command/device_auth_model.go @@ -0,0 +1,61 @@ +package command + +import ( + "time" + + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/repository/deviceauth" +) + +type DeviceAuthWriteModel struct { + eventstore.WriteModel + + ClientID string + DeviceCode string + UserCode string + Expires time.Time + Scopes []string + Subject string + State domain.DeviceAuthState +} + +func NewDeviceAuthWriteModel(aggrID, resourceOwner string) *DeviceAuthWriteModel { + return &DeviceAuthWriteModel{ + WriteModel: eventstore.WriteModel{ + AggregateID: aggrID, + ResourceOwner: resourceOwner, + }, + } +} + +func (m *DeviceAuthWriteModel) Reduce() error { + for _, event := range m.Events { + switch e := event.(type) { + case *deviceauth.AddedEvent: + m.ClientID = e.ClientID + m.DeviceCode = e.DeviceCode + m.UserCode = e.UserCode + m.Expires = e.Expires + m.Scopes = e.Scopes + m.State = e.State + case *deviceauth.ApprovedEvent: + m.Subject = e.Subject + m.State = domain.DeviceAuthStateApproved + case *deviceauth.CanceledEvent: + m.State = e.Reason.State() + case *deviceauth.RemovedEvent: + m.State = domain.DeviceAuthStateRemoved + } + } + + return m.WriteModel.Reduce() +} + +func (m *DeviceAuthWriteModel) Query() *eventstore.SearchQueryBuilder { + return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent). + AddQuery(). + AggregateTypes(deviceauth.AggregateType). + AggregateIDs(m.AggregateID). + Builder() +} diff --git a/internal/command/device_auth_test.go b/internal/command/device_auth_test.go new file mode 100644 index 0000000000..d0d3dd8281 --- /dev/null +++ b/internal/command/device_auth_test.go @@ -0,0 +1,481 @@ +package command + +import ( + "context" + "errors" + "testing" + "time" + + "github.com/golang/mock/gomock" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/eventstore/repository" + "github.com/zitadel/zitadel/internal/id" + id_mock "github.com/zitadel/zitadel/internal/id/mock" + "github.com/zitadel/zitadel/internal/repository/deviceauth" +) + +func TestCommands_AddDeviceAuth(t *testing.T) { + ctx := authz.WithInstanceID(context.Background(), "instance1") + idErr := errors.New("idErr") + pushErr := errors.New("pushErr") + now := time.Now() + + unique := deviceauth.NewAddUniqueConstraints("client_id", "123", "456") + require.Len(t, unique, 2) + + type fields struct { + eventstore *eventstore.Eventstore + idGenerator id.Generator + } + type args struct { + ctx context.Context + clientID string + deviceCode string + userCode string + expires time.Time + scopes []string + } + tests := []struct { + name string + fields fields + args args + wantID string + wantDetails *domain.ObjectDetails + wantErr error + }{ + { + name: "idGenerator error", + fields: fields{ + eventstore: eventstoreExpect(t), + idGenerator: func() id.Generator { + m := id_mock.NewMockGenerator(gomock.NewController(t)) + m.EXPECT().Next().Return("", idErr) + return m + }(), + }, + args: args{ + ctx: ctx, + clientID: "client_id", + deviceCode: "123", + userCode: "456", + expires: now, + scopes: []string{"a", "b", "c"}, + }, + wantErr: idErr, + }, + { + name: "success", + fields: fields{ + eventstore: eventstoreExpect(t, expectPush( + []*repository.Event{ + eventFromEventPusherWithInstanceID("instance1", deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + )), + }, + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[0]), + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[1]), + )), + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "1999"), + }, + args: args{ + ctx: authz.WithInstanceID(context.Background(), "instance1"), + clientID: "client_id", + deviceCode: "123", + userCode: "456", + expires: now, + scopes: []string{"a", "b", "c"}, + }, + wantID: "1999", + wantDetails: &domain.ObjectDetails{ + ResourceOwner: "instance1", + }, + }, + { + name: "push error", + fields: fields{ + eventstore: eventstoreExpect(t, expectPushFailed(pushErr, + []*repository.Event{ + eventFromEventPusherWithInstanceID("instance1", deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + )), + }, + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[0]), + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[1]), + )), + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "1999"), + }, + args: args{ + ctx: authz.WithInstanceID(context.Background(), "instance1"), + clientID: "client_id", + deviceCode: "123", + userCode: "456", + expires: now, + scopes: []string{"a", "b", "c"}, + }, + wantErr: pushErr, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + idGenerator: tt.fields.idGenerator, + } + gotID, gotDetails, err := c.AddDeviceAuth(tt.args.ctx, tt.args.clientID, tt.args.deviceCode, tt.args.userCode, tt.args.expires, tt.args.scopes) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, gotID, tt.wantID) + assert.Equal(t, gotDetails, tt.wantDetails) + }) + } +} + +func TestCommands_ApproveDeviceAuth(t *testing.T) { + ctx := authz.WithInstanceID(context.Background(), "instance1") + now := time.Now() + pushErr := errors.New("pushErr") + + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + ctx context.Context + id string + subject string + } + tests := []struct { + name string + fields fields + args args + wantDetails *domain.ObjectDetails + wantErr error + }{ + { + name: "not found error", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter( + eventFromEventPusherWithInstanceID("instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + ), + eventFromEventPusherWithInstanceID("instance1", + deviceauth.NewRemovedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", + ), + ), + ), + ), + }, + args: args{ctx, "1999", "subj"}, + wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound"), + }, + { + name: "push error", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPushFailed(pushErr, + []*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewApprovedEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), "subj", + ), + )}, + ), + ), + }, + args: args{ctx, "1999", "subj"}, + wantErr: pushErr, + }, + { + name: "success", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPush([]*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewApprovedEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), "subj", + ), + )}), + ), + }, + args: args{ctx, "1999", "subj"}, + wantDetails: &domain.ObjectDetails{ + ResourceOwner: "instance1", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + gotDetails, err := c.ApproveDeviceAuth(tt.args.ctx, tt.args.id, tt.args.subject) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, gotDetails, tt.wantDetails) + }) + } +} + +func TestCommands_CancelDeviceAuth(t *testing.T) { + ctx := authz.WithInstanceID(context.Background(), "instance1") + now := time.Now() + pushErr := errors.New("pushErr") + + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + ctx context.Context + id string + reason domain.DeviceAuthCanceled + } + tests := []struct { + name string + fields fields + args args + wantDetails *domain.ObjectDetails + wantErr error + }{ + { + name: "not found error", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter( + eventFromEventPusherWithInstanceID("instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + ), + eventFromEventPusherWithInstanceID("instance1", + deviceauth.NewRemovedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", + ), + ), + ), + ), + }, + args: args{ctx, "1999", domain.DeviceAuthCanceledDenied}, + wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound"), + }, + { + name: "push error", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPushFailed(pushErr, + []*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewCanceledEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), + domain.DeviceAuthCanceledDenied, + ), + )}, + ), + ), + }, + args: args{ctx, "1999", domain.DeviceAuthCanceledDenied}, + wantErr: pushErr, + }, + { + name: "success/denied", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPush([]*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewCanceledEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), + domain.DeviceAuthCanceledDenied, + ), + )}), + ), + }, + args: args{ctx, "1999", domain.DeviceAuthCanceledDenied}, + wantDetails: &domain.ObjectDetails{ + ResourceOwner: "instance1", + }, + }, + { + name: "success/expired", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPush([]*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewCanceledEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), + domain.DeviceAuthCanceledExpired, + ), + )}), + ), + }, + args: args{ctx, "1999", domain.DeviceAuthCanceledExpired}, + wantDetails: &domain.ObjectDetails{ + ResourceOwner: "instance1", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + gotDetails, err := c.CancelDeviceAuth(tt.args.ctx, tt.args.id, tt.args.reason) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, gotDetails, tt.wantDetails) + }) + } +} + +func TestCommands_RemoveDeviceAuth(t *testing.T) { + ctx := authz.WithInstanceID(context.Background(), "instance1") + now := time.Now() + pushErr := errors.New("pushErr") + + unique := deviceauth.NewRemoveUniqueConstraints("client_id", "123", "456") + require.Len(t, unique, 2) + + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + ctx context.Context + id string + } + tests := []struct { + name string + fields fields + args args + wantDetails *domain.ObjectDetails + wantErr error + }{ + { + name: "push error", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPushFailed(pushErr, + []*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewRemovedEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", + ), + )}, + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[0]), + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[1]), + ), + ), + }, + args: args{ctx, "1999"}, + wantErr: pushErr, + }, + { + name: "success", + fields: fields{ + eventstore: eventstoreExpect(t, + expectFilter(eventFromEventPusherWithInstanceID( + "instance1", + deviceauth.NewAddedEvent( + ctx, + deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", now, + []string{"a", "b", "c"}, + ), + )), + expectPush( + []*repository.Event{eventFromEventPusherWithInstanceID( + "instance1", deviceauth.NewRemovedEvent( + ctx, deviceauth.NewAggregate("1999", "instance1"), + "client_id", "123", "456", + ), + )}, + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[0]), + uniqueConstraintsFromEventConstraintWithInstanceID("instance1", unique[1]), + ), + ), + }, + args: args{ctx, "1999"}, + wantDetails: &domain.ObjectDetails{ + ResourceOwner: "instance1", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + gotDetails, err := c.RemoveDeviceAuth(tt.args.ctx, tt.args.id) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, gotDetails, tt.wantDetails) + }) + } +} diff --git a/internal/domain/application_oidc.go b/internal/domain/application_oidc.go index ad08b18d7a..e0ae783e8e 100644 --- a/internal/domain/application_oidc.go +++ b/internal/domain/application_oidc.go @@ -90,6 +90,7 @@ const ( OIDCGrantTypeAuthorizationCode OIDCGrantType = iota OIDCGrantTypeImplicit OIDCGrantTypeRefreshToken + OIDCGrantTypeDeviceCode ) type OIDCApplicationType int32 diff --git a/internal/domain/auth_request.go b/internal/domain/auth_request.go index 84ca2b9ab8..86cd0575f6 100644 --- a/internal/domain/auth_request.go +++ b/internal/domain/auth_request.go @@ -122,6 +122,8 @@ func NewAuthRequestFromType(requestType AuthRequestType) (*AuthRequest, error) { return &AuthRequest{Request: &AuthRequestOIDC{}}, nil case AuthRequestTypeSAML: return &AuthRequest{Request: &AuthRequestSAML{}}, nil + case AuthRequestTypeDevice: + return &AuthRequest{Request: &AuthRequestDevice{}}, nil } return nil, errors.ThrowInvalidArgument(nil, "DOMAIN-ds2kl", "invalid request type") } @@ -184,3 +186,12 @@ func (a *AuthRequest) GetScopeOrgID() string { } return "" } + +func (a *AuthRequest) Done() bool { + for _, step := range a.PossibleSteps { + if step.Type() == NextStepRedirectToCallback { + return true + } + } + return false +} diff --git a/internal/domain/device_auth.go b/internal/domain/device_auth.go new file mode 100644 index 0000000000..79f30250f0 --- /dev/null +++ b/internal/domain/device_auth.go @@ -0,0 +1,78 @@ +package domain + +import ( + "time" + + "github.com/zitadel/zitadel/internal/eventstore/v1/models" +) + +// DeviceAuth describes a Device Authorization request. +// It is used as input and output model in the command and query packages. +type DeviceAuth struct { + models.ObjectRoot + + ClientID string + DeviceCode string + UserCode string + Expires time.Time + Scopes []string + Subject string + State DeviceAuthState +} + +// DeviceAuthState describes the step the +// the device authorization process is in. +// We generate the Stringer implemntation for pretier +// log output. +// +//go:generate stringer -type=DeviceAuthState -linecomment +type DeviceAuthState uint + +const ( + DeviceAuthStateUndefined DeviceAuthState = iota // undefined + DeviceAuthStateInitiated // initiated + DeviceAuthStateApproved // approved + DeviceAuthStateDenied // denied + DeviceAuthStateExpired // expired + DeviceAuthStateRemoved // removed +) + +// Exists returns true when not Undefined and +// any status lower than Removed. +func (s DeviceAuthState) Exists() bool { + return s > DeviceAuthStateUndefined && s < DeviceAuthStateRemoved +} + +// Done returns true when DeviceAuthState is Approved. +// This implements the OIDC interface requirement of "Done" +func (s DeviceAuthState) Done() bool { + return s == DeviceAuthStateApproved +} + +// Denied returns true when DeviceAuthState is Denied, Expired or Removed. +// This implements the OIDC interface requirement of "Denied". +func (s DeviceAuthState) Denied() bool { + return s >= DeviceAuthStateDenied +} + +// DeviceAuthCanceled is a subset of DeviceAuthState, allowed to +// be used in the deviceauth.CanceledEvent. +// The string type is used to make the eventstore more readable +// on the reason of cancelation. +type DeviceAuthCanceled string + +const ( + DeviceAuthCanceledDenied = "denied" + DeviceAuthCanceledExpired = "expired" +) + +func (c DeviceAuthCanceled) State() DeviceAuthState { + switch c { + case DeviceAuthCanceledDenied: + return DeviceAuthStateDenied + case DeviceAuthCanceledExpired: + return DeviceAuthStateExpired + default: + return DeviceAuthStateUndefined + } +} diff --git a/internal/domain/device_auth_test.go b/internal/domain/device_auth_test.go new file mode 100644 index 0000000000..c3fcf359da --- /dev/null +++ b/internal/domain/device_auth_test.go @@ -0,0 +1,158 @@ +package domain + +import ( + "testing" +) + +func TestDeviceAuthState_Exists(t *testing.T) { + tests := []struct { + s DeviceAuthState + want bool + }{ + { + s: DeviceAuthStateUndefined, + want: false, + }, + { + s: DeviceAuthStateInitiated, + want: true, + }, + { + s: DeviceAuthStateApproved, + want: true, + }, + { + s: DeviceAuthStateDenied, + want: true, + }, + { + s: DeviceAuthStateExpired, + want: true, + }, + { + s: DeviceAuthStateRemoved, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.s.String(), func(t *testing.T) { + if got := tt.s.Exists(); got != tt.want { + t.Errorf("DeviceAuthState.Exists() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestDeviceAuthState_Done(t *testing.T) { + tests := []struct { + s DeviceAuthState + want bool + }{ + { + s: DeviceAuthStateUndefined, + want: false, + }, + { + s: DeviceAuthStateInitiated, + want: false, + }, + { + s: DeviceAuthStateApproved, + want: true, + }, + { + s: DeviceAuthStateDenied, + want: false, + }, + { + s: DeviceAuthStateExpired, + want: false, + }, + { + s: DeviceAuthStateRemoved, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.s.String(), func(t *testing.T) { + if got := tt.s.Done(); got != tt.want { + t.Errorf("DeviceAuthState.Done() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestDeviceAuthState_Denied(t *testing.T) { + tests := []struct { + name string + s DeviceAuthState + want bool + }{ + { + s: DeviceAuthStateUndefined, + want: false, + }, + { + s: DeviceAuthStateInitiated, + want: false, + }, + { + s: DeviceAuthStateApproved, + want: false, + }, + { + s: DeviceAuthStateDenied, + want: true, + }, + { + s: DeviceAuthStateExpired, + want: true, + }, + { + s: DeviceAuthStateRemoved, + want: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.s.Denied(); got != tt.want { + t.Errorf("DeviceAuthState.Denied() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestDeviceAuthCanceled_State(t *testing.T) { + tests := []struct { + name string + c DeviceAuthCanceled + want DeviceAuthState + }{ + { + name: "empty", + want: DeviceAuthStateUndefined, + }, + { + name: "invalid", + c: "foo", + want: DeviceAuthStateUndefined, + }, + { + name: "denied", + c: DeviceAuthCanceledDenied, + want: DeviceAuthStateDenied, + }, + { + name: "expired", + c: DeviceAuthCanceledExpired, + want: DeviceAuthStateExpired, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.c.State(); got != tt.want { + t.Errorf("DeviceAuthCanceled.State() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/internal/domain/deviceauthstate_string.go b/internal/domain/deviceauthstate_string.go new file mode 100644 index 0000000000..b47a6bc7e8 --- /dev/null +++ b/internal/domain/deviceauthstate_string.go @@ -0,0 +1,28 @@ +// Code generated by "stringer -type=DeviceAuthState -linecomment"; DO NOT EDIT. + +package domain + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[DeviceAuthStateUndefined-0] + _ = x[DeviceAuthStateInitiated-1] + _ = x[DeviceAuthStateApproved-2] + _ = x[DeviceAuthStateDenied-3] + _ = x[DeviceAuthStateExpired-4] + _ = x[DeviceAuthStateRemoved-5] +} + +const _DeviceAuthState_name = "undefinedinitiatedapproveddeniedexpiredremoved" + +var _DeviceAuthState_index = [...]uint8{0, 9, 18, 26, 32, 39, 46} + +func (i DeviceAuthState) String() string { + if i >= DeviceAuthState(len(_DeviceAuthState_index)-1) { + return "DeviceAuthState(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _DeviceAuthState_name[_DeviceAuthState_index[i]:_DeviceAuthState_index[i+1]] +} diff --git a/internal/domain/request.go b/internal/domain/request.go index d76ab2cf4f..7f91463921 100644 --- a/internal/domain/request.go +++ b/internal/domain/request.go @@ -22,6 +22,7 @@ type AuthRequestType int32 const ( AuthRequestTypeOIDC AuthRequestType = iota AuthRequestTypeSAML + AuthRequestTypeDevice ) type AuthRequestOIDC struct { @@ -56,3 +57,18 @@ func (a *AuthRequestSAML) Type() AuthRequestType { func (a *AuthRequestSAML) IsValid() bool { return true } + +type AuthRequestDevice struct { + ID string + DeviceCode string + UserCode string + Scopes []string +} + +func (*AuthRequestDevice) Type() AuthRequestType { + return AuthRequestTypeDevice +} + +func (a *AuthRequestDevice) IsValid() bool { + return a.DeviceCode != "" && a.UserCode != "" && len(a.Scopes) > 0 +} diff --git a/internal/eventstore/eventstore.go b/internal/eventstore/eventstore.go index 6e9e47f8e4..216a29bdee 100644 --- a/internal/eventstore/eventstore.go +++ b/internal/eventstore/eventstore.go @@ -304,3 +304,21 @@ func uniqueConstraintActionToRepository(action UniqueConstraintAction) repositor return repository.UniqueConstraintAdd } } + +type BaseEventSetter[T any] interface { + Event + SetBaseEvent(*BaseEvent) + *T +} + +func GenericEventMapper[T any, PT BaseEventSetter[T]](event *repository.Event) (Event, error) { + e := PT(new(T)) + e.SetBaseEvent(BaseEventFromRepo(event)) + + err := json.Unmarshal(event.Data, e) + if err != nil { + return nil, errors.ThrowInternal(err, "V2-Thai6", "unable to unmarshal event") + } + + return e, nil +} diff --git a/internal/eventstore/handler/crdb/handler_stmt.go b/internal/eventstore/handler/crdb/handler_stmt.go index 65eb99426a..8f6d9481f0 100644 --- a/internal/eventstore/handler/crdb/handler_stmt.go +++ b/internal/eventstore/handler/crdb/handler_stmt.go @@ -267,6 +267,7 @@ func (h *StatementHandler) executeStmt(tx *sql.Tx, stmt *handler.Statement) erro } err = stmt.Execute(tx, h.ProjectionName) if err != nil { + logging.WithError(err).Error() _, rollbackErr := tx.Exec("ROLLBACK TO SAVEPOINT push_stmt") if rollbackErr != nil { return errors.ThrowInternal(rollbackErr, "CRDB-zzp3P", "rollback to savepoint failed") diff --git a/internal/eventstore/handler/crdb/init.go b/internal/eventstore/handler/crdb/init.go index 9ca9c34a9d..420b11731a 100644 --- a/internal/eventstore/handler/crdb/init.go +++ b/internal/eventstore/handler/crdb/init.go @@ -377,6 +377,8 @@ func defaultValue(value interface{}) string { switch v := value.(type) { case string: return "'" + v + "'" + case fmt.Stringer: + return fmt.Sprintf("%#v", v) default: return fmt.Sprintf("%v", v) } diff --git a/internal/eventstore/handler/crdb/init_test.go b/internal/eventstore/handler/crdb/init_test.go new file mode 100644 index 0000000000..1e7e6bd823 --- /dev/null +++ b/internal/eventstore/handler/crdb/init_test.go @@ -0,0 +1,49 @@ +package crdb + +import "testing" + +func Test_defaultValue(t *testing.T) { + type args struct { + value interface{} + } + tests := []struct { + name string + args args + want string + }{ + { + name: "string", + args: args{ + value: "asdf", + }, + want: "'asdf'", + }, + { + name: "primitive non string", + args: args{ + value: 1, + }, + want: "1", + }, + { + name: "stringer", + args: args{ + value: testStringer(0), + }, + want: "0", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := defaultValue(tt.args.value); got != tt.want { + t.Errorf("defaultValue() = %v, want %v", got, tt.want) + } + }) + } +} + +type testStringer int + +func (t testStringer) String() string { + return "0529958243" +} diff --git a/internal/query/device_auth.go b/internal/query/device_auth.go new file mode 100644 index 0000000000..98faff200b --- /dev/null +++ b/internal/query/device_auth.go @@ -0,0 +1,141 @@ +package query + +import ( + "context" + "database/sql" + errs "errors" + + sq "github.com/Masterminds/squirrel" + + "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/zitadel/internal/database" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/query/projection" + "github.com/zitadel/zitadel/internal/telemetry/tracing" +) + +var ( + deviceAuthTable = table{ + name: projection.DeviceAuthProjectionTable, + instanceIDCol: projection.DeviceAuthColumnInstanceID, + } + DeviceAuthColumnID = Column{ + name: projection.DeviceAuthColumnID, + table: deviceAuthTable, + } + DeviceAuthColumnClientID = Column{ + name: projection.DeviceAuthColumnClientID, + table: deviceAuthTable, + } + DeviceAuthColumnDeviceCode = Column{ + name: projection.DeviceAuthColumnDeviceCode, + table: deviceAuthTable, + } + DeviceAuthColumnUserCode = Column{ + name: projection.DeviceAuthColumnUserCode, + table: deviceAuthTable, + } + DeviceAuthColumnExpires = Column{ + name: projection.DeviceAuthColumnExpires, + table: deviceAuthTable, + } + DeviceAuthColumnScopes = Column{ + name: projection.DeviceAuthColumnScopes, + table: deviceAuthTable, + } + DeviceAuthColumnState = Column{ + name: projection.DeviceAuthColumnState, + table: deviceAuthTable, + } + DeviceAuthColumnSubject = Column{ + name: projection.DeviceAuthColumnSubject, + table: deviceAuthTable, + } + DeviceAuthColumnCreationDate = Column{ + name: projection.DeviceAuthColumnCreationDate, + table: deviceAuthTable, + } + DeviceAuthColumnChangeDate = Column{ + name: projection.DeviceAuthColumnChangeDate, + table: deviceAuthTable, + } + DeviceAuthColumnSequence = Column{ + name: projection.DeviceAuthColumnSequence, + table: deviceAuthTable, + } + DeviceAuthColumnInstanceID = Column{ + name: projection.DeviceAuthColumnInstanceID, + table: deviceAuthTable, + } +) + +func (q *Queries) DeviceAuthByDeviceCode(ctx context.Context, clientID, deviceCode string) (_ *domain.DeviceAuth, err error) { + ctx, span := tracing.NewSpan(ctx) + defer func() { span.EndWithError(err) }() + + stmt, scan := prepareDeviceAuthQuery(ctx, q.client) + eq := sq.Eq{ + DeviceAuthColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), + DeviceAuthColumnClientID.identifier(): clientID, + DeviceAuthColumnDeviceCode.identifier(): deviceCode, + } + query, args, err := stmt.Where(eq).ToSql() + if err != nil { + return nil, errors.ThrowInternal(err, "QUERY-uk1Oh", "Errors.Query.SQLStatement") + } + + return scan(q.client.QueryRowContext(ctx, query, args...)) +} + +func (q *Queries) DeviceAuthByUserCode(ctx context.Context, userCode string) (_ *domain.DeviceAuth, err error) { + ctx, span := tracing.NewSpan(ctx) + defer func() { span.EndWithError(err) }() + + stmt, scan := prepareDeviceAuthQuery(ctx, q.client) + eq := sq.Eq{ + DeviceAuthColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), + DeviceAuthColumnUserCode.identifier(): userCode, + } + query, args, err := stmt.Where(eq).ToSql() + if err != nil { + return nil, errors.ThrowInternal(err, "QUERY-Axu7l", "Errors.Query.SQLStatement") + } + + return scan(q.client.QueryRowContext(ctx, query, args...)) +} + +var deviceAuthSelectColumns = []string{ + DeviceAuthColumnID.identifier(), + DeviceAuthColumnClientID.identifier(), + DeviceAuthColumnScopes.identifier(), + DeviceAuthColumnExpires.identifier(), + DeviceAuthColumnState.identifier(), + DeviceAuthColumnSubject.identifier(), +} + +func prepareDeviceAuthQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Row) (*domain.DeviceAuth, error)) { + return sq.Select(deviceAuthSelectColumns...).From(deviceAuthTable.identifier()).PlaceholderFormat(sq.Dollar), + func(row *sql.Row) (*domain.DeviceAuth, error) { + dst := new(domain.DeviceAuth) + var scopes database.StringArray + + err := row.Scan( + &dst.AggregateID, + &dst.ClientID, + &scopes, + &dst.Expires, + &dst.State, + &dst.Subject, + ) + if errs.Is(err, sql.ErrNoRows) { + return nil, errors.ThrowNotFound(err, "QUERY-Sah9a", "Errors.DeviceAuth.NotExisting") + } + if err != nil { + return nil, errors.ThrowInternal(err, "QUERY-Voo3o", "Errors.Internal") + } + + dst.Scopes = scopes + return dst, nil + } +} diff --git a/internal/query/device_auth_test.go b/internal/query/device_auth_test.go new file mode 100644 index 0000000000..938cb9f844 --- /dev/null +++ b/internal/query/device_auth_test.go @@ -0,0 +1,158 @@ +package query + +import ( + "context" + "database/sql" + "database/sql/driver" + "errors" + "fmt" + "regexp" + "testing" + + "github.com/DATA-DOG/go-sqlmock" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/zitadel/zitadel/internal/database" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/eventstore/v1/models" +) + +const ( + expectedDeviceAuthQueryC = `SELECT` + + ` projections.device_authorizations.id,` + + ` projections.device_authorizations.client_id,` + + ` projections.device_authorizations.scopes,` + + ` projections.device_authorizations.expires,` + + ` projections.device_authorizations.state,` + + ` projections.device_authorizations.subject` + + ` FROM projections.device_authorizations` + expectedDeviceAuthWhereDeviceCodeQueryC = expectedDeviceAuthQueryC + + ` WHERE projections.device_authorizations.client_id = $1` + + ` AND projections.device_authorizations.device_code = $2` + + ` AND projections.device_authorizations.instance_id = $3` + expectedDeviceAuthWhereUserCodeQueryC = expectedDeviceAuthQueryC + + ` WHERE projections.device_authorizations.instance_id = $1` + + ` AND projections.device_authorizations.user_code = $2` +) + +var ( + expectedDeviceAuthQuery = regexp.QuoteMeta(expectedDeviceAuthQueryC) + expectedDeviceAuthWhereDeviceCodeQuery = regexp.QuoteMeta(expectedDeviceAuthWhereDeviceCodeQueryC) + expectedDeviceAuthWhereUserCodeQuery = regexp.QuoteMeta(expectedDeviceAuthWhereUserCodeQueryC) + expectedDeviceAuthValues = []driver.Value{ + "primary-id", + "client-id", + database.StringArray{"a", "b", "c"}, + testNow, + domain.DeviceAuthStateApproved, + "subject", + } + expectedDeviceAuth = &domain.DeviceAuth{ + ObjectRoot: models.ObjectRoot{ + AggregateID: "primary-id", + }, + ClientID: "client-id", + Scopes: []string{"a", "b", "c"}, + Expires: testNow, + State: domain.DeviceAuthStateApproved, + Subject: "subject", + } +) + +func TestQueries_DeviceAuthByDeviceCode(t *testing.T) { + client, mock, err := sqlmock.New() + if err != nil { + t.Fatalf("failed to build mock client: %v", err) + } + defer client.Close() + + mock.ExpectQuery(expectedDeviceAuthWhereDeviceCodeQuery).WillReturnRows( + sqlmock.NewRows(deviceAuthSelectColumns).AddRow(expectedDeviceAuthValues...), + ) + q := Queries{ + client: &database.DB{DB: client}, + } + got, err := q.DeviceAuthByDeviceCode(context.TODO(), "123", "456") + require.NoError(t, err) + assert.Equal(t, expectedDeviceAuth, got) + require.NoError(t, mock.ExpectationsWereMet()) +} + +func TestQueries_DeviceAuthByUserCode(t *testing.T) { + client, mock, err := sqlmock.New() + if err != nil { + t.Fatalf("failed to build mock client: %v", err) + } + defer client.Close() + + mock.ExpectQuery(expectedDeviceAuthWhereUserCodeQuery).WillReturnRows( + sqlmock.NewRows(deviceAuthSelectColumns).AddRow(expectedDeviceAuthValues...), + ) + q := Queries{ + client: &database.DB{DB: client}, + } + got, err := q.DeviceAuthByUserCode(context.TODO(), "789") + require.NoError(t, err) + assert.Equal(t, expectedDeviceAuth, got) + require.NoError(t, mock.ExpectationsWereMet()) +} + +func Test_prepareDeviceAuthQuery(t *testing.T) { + type want struct { + sqlExpectations sqlExpectation + err checkErr + } + tests := []struct { + name string + want want + object any + }{ + { + name: "success", + want: want{ + sqlExpectations: mockQueries( + expectedDeviceAuthQuery, + deviceAuthSelectColumns, + [][]driver.Value{expectedDeviceAuthValues}, + ), + }, + object: expectedDeviceAuth, + }, + { + name: "not found error", + want: want{ + sqlExpectations: mockQueryErr( + expectedDeviceAuthQuery, + sql.ErrNoRows, + ), + err: func(err error) (error, bool) { + if !errors.Is(err, sql.ErrNoRows) { + return fmt.Errorf("err should be sql.ErrNoRows got: %w", err), false + } + return nil, true + }, + }, + }, + { + name: "other error", + want: want{ + sqlExpectations: mockQueryErr( + expectedDeviceAuthQuery, + sql.ErrConnDone, + ), + err: func(err error) (error, bool) { + if !errors.Is(err, sql.ErrConnDone) { + return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false + } + return nil, true + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assertPrepare(t, prepareDeviceAuthQuery, tt.object, tt.want.sqlExpectations, tt.want.err, defaultPrepareArgs...) + }) + } +} diff --git a/internal/query/projection/device_auth.go b/internal/query/projection/device_auth.go new file mode 100644 index 0000000000..c678dbd301 --- /dev/null +++ b/internal/query/projection/device_auth.go @@ -0,0 +1,161 @@ +package projection + +import ( + "context" + + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/eventstore/handler" + "github.com/zitadel/zitadel/internal/eventstore/handler/crdb" + "github.com/zitadel/zitadel/internal/repository/deviceauth" +) + +const ( + DeviceAuthProjectionTable = "projections.device_authorizations" + + DeviceAuthColumnID = "id" + DeviceAuthColumnClientID = "client_id" + DeviceAuthColumnDeviceCode = "device_code" + DeviceAuthColumnUserCode = "user_code" + DeviceAuthColumnExpires = "expires" + DeviceAuthColumnScopes = "scopes" + DeviceAuthColumnState = "state" + DeviceAuthColumnSubject = "subject" + + DeviceAuthColumnCreationDate = "creation_date" + DeviceAuthColumnChangeDate = "change_date" + DeviceAuthColumnSequence = "sequence" + DeviceAuthColumnInstanceID = "instance_id" +) + +type deviceAuthProjection struct { + crdb.StatementHandler +} + +func newDeviceAuthProjection(ctx context.Context, config crdb.StatementHandlerConfig) *deviceAuthProjection { + p := new(deviceAuthProjection) + config.ProjectionName = DeviceAuthProjectionTable + config.Reducers = p.reducers() + config.InitCheck = crdb.NewTableCheck( + crdb.NewTable([]*crdb.Column{ + crdb.NewColumn(DeviceAuthColumnID, crdb.ColumnTypeText), + crdb.NewColumn(DeviceAuthColumnClientID, crdb.ColumnTypeText), + crdb.NewColumn(DeviceAuthColumnDeviceCode, crdb.ColumnTypeText), + crdb.NewColumn(DeviceAuthColumnUserCode, crdb.ColumnTypeText), + crdb.NewColumn(DeviceAuthColumnExpires, crdb.ColumnTypeTimestamp), + crdb.NewColumn(DeviceAuthColumnScopes, crdb.ColumnTypeTextArray), + crdb.NewColumn(DeviceAuthColumnState, crdb.ColumnTypeEnum, crdb.Default(domain.DeviceAuthStateInitiated)), + crdb.NewColumn(DeviceAuthColumnSubject, crdb.ColumnTypeText, crdb.Default("")), + crdb.NewColumn(DeviceAuthColumnCreationDate, crdb.ColumnTypeTimestamp), + crdb.NewColumn(DeviceAuthColumnChangeDate, crdb.ColumnTypeTimestamp), + crdb.NewColumn(DeviceAuthColumnSequence, crdb.ColumnTypeInt64), + crdb.NewColumn(DeviceAuthColumnInstanceID, crdb.ColumnTypeText), + }, + crdb.NewPrimaryKey(DeviceAuthColumnInstanceID, DeviceAuthColumnID), + crdb.WithIndex(crdb.NewIndex("user_code", []string{DeviceAuthColumnInstanceID, DeviceAuthColumnUserCode})), + crdb.WithIndex(crdb.NewIndex("device_code", []string{DeviceAuthColumnInstanceID, DeviceAuthColumnClientID, DeviceAuthColumnDeviceCode})), + ), + ) + + p.StatementHandler = crdb.NewStatementHandler(ctx, config) + return p +} + +func (p *deviceAuthProjection) reducers() []handler.AggregateReducer { + return []handler.AggregateReducer{ + { + Aggregate: deviceauth.AggregateType, + EventRedusers: []handler.EventReducer{ + { + Event: deviceauth.AddedEventType, + Reduce: p.reduceAdded, + }, + { + Event: deviceauth.ApprovedEventType, + Reduce: p.reduceAppoved, + }, + { + Event: deviceauth.CanceledEventType, + Reduce: p.reduceCanceled, + }, + { + Event: deviceauth.RemovedEventType, + Reduce: p.reduceRemoved, + }, + }, + }, + } +} + +func (p *deviceAuthProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*deviceauth.AddedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-chu6O", "reduce.wrong.event.type %T != %s", event, deviceauth.AddedEventType) + } + return crdb.NewCreateStatement( + e, + []handler.Column{ + handler.NewCol(DeviceAuthColumnID, e.Aggregate().ID), + handler.NewCol(DeviceAuthColumnClientID, e.ClientID), + handler.NewCol(DeviceAuthColumnDeviceCode, e.DeviceCode), + handler.NewCol(DeviceAuthColumnUserCode, e.UserCode), + handler.NewCol(DeviceAuthColumnExpires, e.Expires), + handler.NewCol(DeviceAuthColumnScopes, e.Scopes), + handler.NewCol(DeviceAuthColumnCreationDate, e.CreationDate()), + handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()), + handler.NewCol(DeviceAuthColumnSequence, e.Sequence()), + handler.NewCol(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID), + }, + ), nil +} + +func (p *deviceAuthProjection) reduceAppoved(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*deviceauth.ApprovedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-kei0A", "reduce.wrong.event.type %T != %s", event, deviceauth.ApprovedEventType) + } + return crdb.NewUpdateStatement(e, + []handler.Column{ + handler.NewCol(DeviceAuthColumnState, domain.DeviceAuthStateApproved), + handler.NewCol(DeviceAuthColumnSubject, e.Subject), + handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()), + handler.NewCol(DeviceAuthColumnSequence, e.Sequence()), + }, + []handler.Condition{ + handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID), + handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID), + }, + ), nil +} + +func (p *deviceAuthProjection) reduceCanceled(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*deviceauth.CanceledEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eeS8d", "reduce.wrong.event.type %T != %s", event, deviceauth.CanceledEventType) + } + return crdb.NewUpdateStatement(e, + []handler.Column{ + handler.NewCol(DeviceAuthColumnState, e.Reason.State()), + handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()), + handler.NewCol(DeviceAuthColumnSequence, e.Sequence()), + }, + []handler.Condition{ + handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID), + handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID), + }, + ), nil +} + +func (p *deviceAuthProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*deviceauth.RemovedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-AJi1u", "reduce.wrong.event.type %T != %s", event, deviceauth.RemovedEventType) + } + return crdb.NewDeleteStatement(e, + []handler.Condition{ + handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID), + handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID), + }, + ), nil +} diff --git a/internal/query/projection/projection.go b/internal/query/projection/projection.go index e3c5cd4f71..fb461927c2 100644 --- a/internal/query/projection/projection.go +++ b/internal/query/projection/projection.go @@ -64,6 +64,7 @@ var ( NotificationPolicyProjection *notificationPolicyProjection NotificationsProjection interface{} NotificationsQuotaProjection interface{} + DeviceAuthProjection *deviceAuthProjection ) type projection interface { @@ -139,6 +140,7 @@ func Create(ctx context.Context, sqlClient *database.DB, es *eventstore.Eventsto KeyProjection = newKeyProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["keys"]), keyEncryptionAlgorithm, certEncryptionAlgorithm) SecurityPolicyProjection = newSecurityPolicyProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["security_policies"])) NotificationPolicyProjection = newNotificationPolicyProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["notification_policies"])) + DeviceAuthProjection = newDeviceAuthProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["device_auth"])) newProjectionsList() return nil } @@ -234,5 +236,6 @@ func newProjectionsList() { KeyProjection, SecurityPolicyProjection, NotificationPolicyProjection, + DeviceAuthProjection, } } diff --git a/internal/repository/deviceauth/aggregate.go b/internal/repository/deviceauth/aggregate.go new file mode 100644 index 0000000000..da3645d112 --- /dev/null +++ b/internal/repository/deviceauth/aggregate.go @@ -0,0 +1,19 @@ +package deviceauth + +import "github.com/zitadel/zitadel/internal/eventstore" + +const ( + AggregateType = "device_auth" + AggregateVersion = "v1" +) + +func NewAggregate(aggrID, instanceID string) *eventstore.Aggregate { + return &eventstore.Aggregate{ + ID: aggrID, + Type: AggregateType, + // we use the id because we don't know the resource owner yet + ResourceOwner: instanceID, + InstanceID: instanceID, + Version: AggregateVersion, + } +} diff --git a/internal/repository/deviceauth/constraints.go b/internal/repository/deviceauth/constraints.go new file mode 100644 index 0000000000..679220524c --- /dev/null +++ b/internal/repository/deviceauth/constraints.go @@ -0,0 +1,46 @@ +package deviceauth + +import ( + "strings" + + "github.com/zitadel/zitadel/internal/eventstore" +) + +const ( + UniqueUserCode = "user_code" + UniqueDeviceCode = "device_code" + DuplicateUserCode = "Errors.DeviceUserCode.AlreadyExists" + DuplicateDeviceCode = "Errors.DeviceCode.AlreadyExists" +) + +func deviceCodeUniqueField(clientID, deviceCode string) string { + return strings.Join([]string{clientID, deviceCode}, ":") +} + +func NewAddUniqueConstraints(clientID, deviceCode, userCode string) []*eventstore.EventUniqueConstraint { + return []*eventstore.EventUniqueConstraint{ + eventstore.NewAddEventUniqueConstraint( + UniqueDeviceCode, + deviceCodeUniqueField(clientID, deviceCode), + DuplicateDeviceCode, + ), + eventstore.NewAddEventUniqueConstraint( + UniqueUserCode, + userCode, + DuplicateUserCode, + ), + } +} + +func NewRemoveUniqueConstraints(clientID, deviceCode, userCode string) []*eventstore.EventUniqueConstraint { + return []*eventstore.EventUniqueConstraint{ + eventstore.NewRemoveEventUniqueConstraint( + UniqueDeviceCode, + deviceCodeUniqueField(clientID, deviceCode), + ), + eventstore.NewRemoveEventUniqueConstraint( + UniqueUserCode, + userCode, + ), + } +} diff --git a/internal/repository/deviceauth/device_auth.go b/internal/repository/deviceauth/device_auth.go new file mode 100644 index 0000000000..0ece3e78f9 --- /dev/null +++ b/internal/repository/deviceauth/device_auth.go @@ -0,0 +1,141 @@ +package deviceauth + +import ( + "context" + "time" + + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/eventstore" +) + +const ( + eventTypePrefix eventstore.EventType = "device.authorization." + AddedEventType = eventTypePrefix + "added" + ApprovedEventType = eventTypePrefix + "approved" + CanceledEventType = eventTypePrefix + "canceled" + RemovedEventType = eventTypePrefix + "removed" +) + +type AddedEvent struct { + *eventstore.BaseEvent + + ClientID string + DeviceCode string + UserCode string + Expires time.Time + Scopes []string + State domain.DeviceAuthState +} + +func (e *AddedEvent) SetBaseEvent(b *eventstore.BaseEvent) { + e.BaseEvent = b +} + +func (e *AddedEvent) Data() any { + return e +} + +func (e *AddedEvent) UniqueConstraints() []*eventstore.EventUniqueConstraint { + return NewAddUniqueConstraints(e.ClientID, e.DeviceCode, e.UserCode) +} + +func NewAddedEvent( + ctx context.Context, + aggregate *eventstore.Aggregate, + clientID string, + deviceCode string, + userCode string, + expires time.Time, + scopes []string, +) *AddedEvent { + return &AddedEvent{ + eventstore.NewBaseEventForPush( + ctx, aggregate, AddedEventType, + ), + clientID, deviceCode, userCode, expires, scopes, domain.DeviceAuthStateInitiated} +} + +type ApprovedEvent struct { + *eventstore.BaseEvent + + Subject string +} + +func (e *ApprovedEvent) SetBaseEvent(b *eventstore.BaseEvent) { + e.BaseEvent = b +} + +func (e *ApprovedEvent) Data() any { + return e +} + +func (e *ApprovedEvent) UniqueConstraints() []*eventstore.EventUniqueConstraint { + return nil +} + +func NewApprovedEvent( + ctx context.Context, + aggregate *eventstore.Aggregate, + subject string, +) *ApprovedEvent { + return &ApprovedEvent{ + eventstore.NewBaseEventForPush( + ctx, aggregate, ApprovedEventType, + ), + subject, + } +} + +type CanceledEvent struct { + *eventstore.BaseEvent + Reason domain.DeviceAuthCanceled +} + +func (e *CanceledEvent) SetBaseEvent(b *eventstore.BaseEvent) { + e.BaseEvent = b +} + +func (e *CanceledEvent) Data() any { + return e +} + +func (e *CanceledEvent) UniqueConstraints() []*eventstore.EventUniqueConstraint { + return nil +} + +func NewCanceledEvent(ctx context.Context, aggregate *eventstore.Aggregate, reason domain.DeviceAuthCanceled) *CanceledEvent { + return &CanceledEvent{eventstore.NewBaseEventForPush(ctx, aggregate, CanceledEventType), reason} +} + +type RemovedEvent struct { + *eventstore.BaseEvent + + ClientID string + DeviceCode string + UserCode string +} + +func (e *RemovedEvent) SetBaseEvent(b *eventstore.BaseEvent) { + e.BaseEvent = b +} + +func (e *RemovedEvent) Data() any { + return e +} + +func (e *RemovedEvent) UniqueConstraints() []*eventstore.EventUniqueConstraint { + return NewRemoveUniqueConstraints(e.ClientID, e.DeviceCode, e.UserCode) +} + +func NewRemovedEvent( + ctx context.Context, + aggregate *eventstore.Aggregate, + clientID, deviceCode, userCode string, +) *RemovedEvent { + return &RemovedEvent{ + eventstore.NewBaseEventForPush( + ctx, aggregate, RemovedEventType, + ), + clientID, deviceCode, userCode, + } +} diff --git a/internal/repository/org/eventstore.go b/internal/repository/org/eventstore.go index fb85ca86ee..662bf77b4b 100644 --- a/internal/repository/org/eventstore.go +++ b/internal/repository/org/eventstore.go @@ -2,6 +2,7 @@ package org import ( "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/repository/deviceauth" ) func RegisterEventMappers(es *eventstore.Eventstore) { @@ -107,5 +108,9 @@ func RegisterEventMappers(es *eventstore.Eventstore) { RegisterFilterEventMapper(AggregateType, MetadataRemovedAllType, MetadataRemovedAllEventMapper). RegisterFilterEventMapper(AggregateType, NotificationPolicyAddedEventType, NotificationPolicyAddedEventMapper). RegisterFilterEventMapper(AggregateType, NotificationPolicyChangedEventType, NotificationPolicyChangedEventMapper). - RegisterFilterEventMapper(AggregateType, NotificationPolicyRemovedEventType, NotificationPolicyRemovedEventMapper) + RegisterFilterEventMapper(AggregateType, NotificationPolicyRemovedEventType, NotificationPolicyRemovedEventMapper). + RegisterFilterEventMapper(AggregateType, deviceauth.AddedEventType, eventstore.GenericEventMapper[deviceauth.AddedEvent]). + RegisterFilterEventMapper(AggregateType, deviceauth.ApprovedEventType, eventstore.GenericEventMapper[deviceauth.ApprovedEvent]). + RegisterFilterEventMapper(AggregateType, deviceauth.CanceledEventType, eventstore.GenericEventMapper[deviceauth.CanceledEvent]). + RegisterFilterEventMapper(AggregateType, deviceauth.RemovedEventType, eventstore.GenericEventMapper[deviceauth.RemovedEvent]) } diff --git a/proto/zitadel/app.proto b/proto/zitadel/app.proto index d889135bc4..dcd5da5c25 100644 --- a/proto/zitadel/app.proto +++ b/proto/zitadel/app.proto @@ -180,6 +180,7 @@ enum OIDCGrantType{ OIDC_GRANT_TYPE_AUTHORIZATION_CODE = 0; OIDC_GRANT_TYPE_IMPLICIT = 1; OIDC_GRANT_TYPE_REFRESH_TOKEN = 2; + OIDC_GRANT_TYPE_DEVICE_CODE = 3; } enum OIDCAppType { From 11d75d0121f1eb900f301b4d9417bdf502411024 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 19 Apr 2023 11:51:03 +0200 Subject: [PATCH 02/23] fix(console): disallow inline fonts, critical styles (#5714) fix: disallow inline --- console/angular.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/console/angular.json b/console/angular.json index ec2bab7847..88d43181d2 100644 --- a/console/angular.json +++ b/console/angular.json @@ -40,6 +40,14 @@ }, "configurations": { "production": { + "optimization": { + "fonts": { + "inline": false + }, + "styles": { + "inlineCritical": false + } + }, "budgets": [ { "type": "initial", From 41025271f4c1b59d63aebbef1b4aa34a29f165cd Mon Sep 17 00:00:00 2001 From: Silvan Date: Thu, 20 Apr 2023 07:31:18 +0200 Subject: [PATCH 03/23] fix(setup): step 10 for postgres (#5717) --- cmd/setup/10.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/setup/10.sql b/cmd/setup/10.sql index ae2af741dc..27853f55a7 100644 --- a/cmd/setup/10.sql +++ b/cmd/setup/10.sql @@ -1,6 +1,6 @@ CREATE temporary TABLE IF NOT EXISTS wrong_events ( - instance_id STRING - , event_sequence INT8 + instance_id TEXT + , event_sequence BIGINT , current_cd TIMESTAMPTZ , next_cd TIMESTAMPTZ ); @@ -19,7 +19,7 @@ INSERT INTO wrong_events ( ) AS next_cd FROM eventstore.events - ) WHERE + ) sub WHERE current_cd < next_cd ORDER BY event_sequence DESC From e08309260578751fc70cd324acdc803817e91045 Mon Sep 17 00:00:00 2001 From: Silvan Date: Thu, 20 Apr 2023 10:55:19 +0200 Subject: [PATCH 04/23] docs(azure): update tenant id (#5720) --- .../integrate/identity-providers/azure-ad.mdx | 4 ++-- .../img/guides/zitadel_azure_provider.png | Bin 111952 -> 0 bytes .../img/guides/zitadel_azure_provider2.png | Bin 0 -> 374675 bytes 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 docs/static/img/guides/zitadel_azure_provider.png create mode 100644 docs/static/img/guides/zitadel_azure_provider2.png diff --git a/docs/docs/guides/integrate/identity-providers/azure-ad.mdx b/docs/docs/guides/integrate/identity-providers/azure-ad.mdx index a681d58cf6..b87c08f1bf 100644 --- a/docs/docs/guides/integrate/identity-providers/azure-ad.mdx +++ b/docs/docs/guides/integrate/identity-providers/azure-ad.mdx @@ -90,11 +90,11 @@ In this case, configure "Accounts in any organizational directory and personal M - Organizations: Choose organization if you have Azure AD Tenants and no personal accounts. (You have configured either "Accounts in this organization" or "Accounts in any organizational directory" on your Azure APP) - Consumers: Choose this if you want to allow public accounts. (In your Azure AD App you have configured "Personal Microsoft accounts only") -**Tenant ID**: If you have selected either the *Organizations* or *Customers* as the *Tenant Type*, you have to enter the *Directory (Tenant) ID*, copied previously in the Azure App configuration, here. +**Tenant ID**: If you have selected *Tenant ID* as *Tenant Type*, you have to enter the *Directory (Tenant) ID* into the *Tenant ID* field, copied previously from the Azure App configuration. -![Azure Provider](/img/guides/zitadel_azure_provider.png) +![Azure Provider](/img/guides/zitadel_azure_provider2.png) ### Activate IdP diff --git a/docs/static/img/guides/zitadel_azure_provider.png b/docs/static/img/guides/zitadel_azure_provider.png deleted file mode 100644 index 371148b6a7d64753a7b460b915fbc21619d1d398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111952 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

dd`!y!V(&eJn(DsrQAI=% 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\xoLm+LjKFJI^YkQDDj@Ql07sc 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�j7#^l|E3TgVrn$7=io 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%0A7B3?^6(I|GFi{HFty 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 Date: Thu, 20 Apr 2023 17:04:40 +0200 Subject: [PATCH 05/23] docs(integrate): create automatic overviews, move brokering (#5721) * overviews in sidebars * move identity brokering to features * fix links --- .../apis/actions/external-authentication.md | 2 +- .../features/identity-brokering.md} | 2 +- .../manage/console/instance-settings.mdx | 3 +- docs/docs/guides/manage/customize/behavior.md | 2 +- .../solution-scenarios/configurations.mdx | 2 +- docs/sidebars.js | 28 +++++++++++++++++-- 6 files changed, 31 insertions(+), 8 deletions(-) rename docs/docs/{guides/integrate/identity-providers/introduction.md => concepts/features/identity-brokering.md} (92%) diff --git a/docs/docs/apis/actions/external-authentication.md b/docs/docs/apis/actions/external-authentication.md index 294a99cad0..f26f55af84 100644 --- a/docs/docs/apis/actions/external-authentication.md +++ b/docs/docs/apis/actions/external-authentication.md @@ -2,7 +2,7 @@ title: External Authentication Flow --- -This flow is executed if the user logs in using an [identity provider](/guides/integrate/identity-providers/introduction.md) or using a [jwt token](/concepts/structure/jwt_idp). +This flow is executed if the user logs in using an [identity provider](/guides/integrate/identity-providers) or using a [jwt token](/concepts/structure/jwt_idp). ## Post Authentication diff --git a/docs/docs/guides/integrate/identity-providers/introduction.md b/docs/docs/concepts/features/identity-brokering.md similarity index 92% rename from docs/docs/guides/integrate/identity-providers/introduction.md rename to docs/docs/concepts/features/identity-brokering.md index aa004511ef..9b6c98f583 100644 --- a/docs/docs/guides/integrate/identity-providers/introduction.md +++ b/docs/docs/concepts/features/identity-brokering.md @@ -18,5 +18,5 @@ For example, if Google is configured as an identity provider in your organizatio Configure external identity providers on the instance level or just for one organization via the [Console](/guides/manage/console/instance-settings#identity-providers) or ZITADEL APIs. -The guides listed in this section will help you set up specific identity providers. +You will find [detailed integration guides for many Identity Providers](/guides/integrate/identity-providers) in our docs. ZITADEL also provides templates to configure generic identity providers, which don't have templates. diff --git a/docs/docs/guides/manage/console/instance-settings.mdx b/docs/docs/guides/manage/console/instance-settings.mdx index 1472365102..5a66e68b62 100644 --- a/docs/docs/guides/manage/console/instance-settings.mdx +++ b/docs/docs/guides/manage/console/instance-settings.mdx @@ -141,8 +141,7 @@ Configure the different lifetimes checks for the login process: You can configure all kinds of external identity providers for identity brokering, which support OIDC (OpenID Connect). Create a new identity provider configuration and enable it in the list afterwards. -For a detailed guide about how to configure a new identity provider for identity brokering have a look at our guide: -[Identity Brokering](/guides/integrate/identity-providers/introduction.md) +For a detailed guide about how to configure a new identity provider for identity brokering have a look at our [identity provider guides](/guides/integrate/identity-providers). ## Password Complexity diff --git a/docs/docs/guides/manage/customize/behavior.md b/docs/docs/guides/manage/customize/behavior.md index 061ac9ef06..fc45f9305d 100644 --- a/docs/docs/guides/manage/customize/behavior.md +++ b/docs/docs/guides/manage/customize/behavior.md @@ -11,7 +11,7 @@ Before you start, make sure you have everything set up correctly. - You need to be at least a ZITADEL _ORG_OWNER_ - Your ZITADEL organization needs to have the actions feature enabled. -- [Your ZITADEL organization needs to have at least one external identity provider enabled](../../integrate/identity-providers/introduction.md) +- [Your ZITADEL organization needs to have at least one external identity provider enabled](../../integrate/identity-providers) - [You need to have at least one role configured for a project](../console/projects) ## Copy some information for the action diff --git a/docs/docs/guides/solution-scenarios/configurations.mdx b/docs/docs/guides/solution-scenarios/configurations.mdx index f5a11b445f..60953f61ee 100644 --- a/docs/docs/guides/solution-scenarios/configurations.mdx +++ b/docs/docs/guides/solution-scenarios/configurations.mdx @@ -15,7 +15,7 @@ If a user of this organization wants to login, you don't want them to enter thei ### Settings 1. Go to the "Identity Providers" Settings of the organization -2. Configure the needed identity provider: Read this [guide](../integrate/identity-providers/introduction.md) if you don't know how +2. Configure the needed identity provider: Read this [guide](../integrate/identity-providers) if you don't know how 3. Go to the "Login Behavior and Security" settings of the organization 4. Disable "Username Password Allowed" and enable "External IDP allowed" in the Advanced Section diff --git a/docs/sidebars.js b/docs/sidebars.js index b967f0183f..732e5a8f23 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -141,9 +141,16 @@ module.exports = { { type: "category", label: "Configure Identity Providers", + link: { + type: "generated-index", + title: "Let users login with their preferred identity provider", + slug: "/guides/integrate/identity-providers", + description: + "In the following guides you will learn how to configure and setup your preferred external identity provider in ZITADEL.", + + }, collapsed: true, items: [ - "guides/integrate/identity-providers/introduction", "guides/integrate/identity-providers/google", "guides/integrate/identity-providers/azure-ad", "guides/integrate/identity-providers/github", @@ -186,6 +193,14 @@ module.exports = { { type: "category", label: "Services", + link: { + type: "generated-index", + title: "Integrate ZITADEL with your favorite services", + slug: "/guides/integrate/services", + description: + "With the guides in this section you will learn how to integrate ZITADEL with your services.", + + }, collapsed: true, items: [ "guides/integrate/services/gitlab-self-hosted", @@ -200,6 +215,14 @@ module.exports = { { type: "category", label: "Tools", + link: { + type: "generated-index", + title: "Integrate ZITADEL with your tools", + slug: "/guides/integrate/tools", + description: + "With the guides in this section you will learn how to integrate ZITADEL with your favorite tools.", + + }, collapsed: true, items: [ "guides/integrate/authenticated-mongodb-charts", @@ -234,6 +257,7 @@ module.exports = { "concepts/structure/users", "concepts/structure/managers", "concepts/structure/policies", + "concepts/features/identity-brokering", "concepts/structure/jwt_idp", "concepts/features/actions", "concepts/features/selfservice", @@ -472,4 +496,4 @@ module.exports = { ], }, ], -}; +}; \ No newline at end of file From 5d6399da24044fc77c4d200037429b080bae1a57 Mon Sep 17 00:00:00 2001 From: Silvan Date: Fri, 21 Apr 2023 08:58:04 +0200 Subject: [PATCH 06/23] fix(projection): implement GoStringer for postgres (#5716) --- internal/domain/device_auth.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/domain/device_auth.go b/internal/domain/device_auth.go index 79f30250f0..da076663aa 100644 --- a/internal/domain/device_auth.go +++ b/internal/domain/device_auth.go @@ -1,6 +1,7 @@ package domain import ( + "strconv" "time" "github.com/zitadel/zitadel/internal/eventstore/v1/models" @@ -55,6 +56,10 @@ func (s DeviceAuthState) Denied() bool { return s >= DeviceAuthStateDenied } +func (s DeviceAuthState) GoString() string { + return strconv.Itoa(int(s)) +} + // DeviceAuthCanceled is a subset of DeviceAuthState, allowed to // be used in the deviceauth.CanceledEvent. // The string type is used to make the eventstore more readable From ebc140a2348693610f83fc41e6438254fcb66393 Mon Sep 17 00:00:00 2001 From: mffap Date: Fri, 21 Apr 2023 15:21:05 +0200 Subject: [PATCH 07/23] docs(legal): merge rate limits (#5719) * formatting title configuration * merge policy and metrics * raising limits, editorial * Update docs/docs/legal/rate-limit-policy.md Co-authored-by: Elio Bischof * Apply suggestions from code review Co-authored-by: Elio Bischof --------- Co-authored-by: Elio Bischof --- .../solution-scenarios/configurations.mdx | 6 +++--- docs/docs/legal/rate-limit-policy.md | 20 ++++++++++++++++--- docs/sidebars.js | 7 +++---- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/docs/guides/solution-scenarios/configurations.mdx b/docs/docs/guides/solution-scenarios/configurations.mdx index 60953f61ee..2940398a85 100644 --- a/docs/docs/guides/solution-scenarios/configurations.mdx +++ b/docs/docs/guides/solution-scenarios/configurations.mdx @@ -27,9 +27,9 @@ More about the [scopes](/apis/openidoauth/scopes#reserved-scopes) If you have an application that runs a dedicated domain for each customer you need to instruct ZITADEL to allow redirection for each domain specifically to safeguard against phishing attacks. -Example: -MyApplication: customer-a.app.com -ZITADEL Login: login.app.com +Example: +MyApplication: `customer-a.app.com` +ZITADEL Login: `login.app.com` In the OIDC Authorization request you always have to send the redirect URI to where you like to be redirected after login. To handle this scenario it is possible to register multiple URIs on each application in ZITADEL, the only criteria is that the requested URI has to match one of the registered URIs. diff --git a/docs/docs/legal/rate-limit-policy.md b/docs/docs/legal/rate-limit-policy.md index d3e3047a4a..8cae76e99a 100644 --- a/docs/docs/legal/rate-limit-policy.md +++ b/docs/docs/legal/rate-limit-policy.md @@ -12,18 +12,32 @@ To ensure the availability of our Services and to avoid slow or failed requests ## How is the rate limit implemented -ZITADEL Clouds rate limit is built around a `IP` oriented model. Please be aware that we also utilize a service for DDoS mitigation. +ZITADEL Clouds rate limit is built around a `IP` oriented model. +Please be aware that we also utilize a service for DDoS mitigation. So if you simply change your `IP` address and run the same request again and again you might be get blocked at some point. If you are blocked you will receive a `http status 429`. -:::tip +:::tip Implement exponential backoff You should consider to implement [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) into your application to prevent a blocking loop. ::: +:::info Raising limits +We understand that there are certain scenarios where your users access ZITADEL from shared IP Addresses. +For example if you use a corporate proxy or Network Address Translation NAT. +Please [get in touch](https://zitadel.com/contact) with us to discuss your requirements and we'll find a solution. +::: + ## What rate limits do apply -For ZITADEL Cloud, we have a rate limiting rule for login paths (login, register and reset features) and for API paths each. Learn more about [the exact rules](/apis/ratelimits). +For ZITADEL Cloud, we have a rate limiting rule for login paths (login, register and reset features) and for API paths each. + +Rate limits are implemented with the following rules: + +| Path | Description | Rate Limiting | One Minute Banning | +|--------------------------|----------------------------------------|--------------------------------------|----------------------------------------| +| /ui/login* | Global Login, Register and Reset Limit | 10 requests per second over a minute | 15 requests per second over 3 minutes | +| All other paths | All gRPC- and REST APIs as well as the ZITADEL Customer Portal | 10 requests per second over a minute | 10 requests per second over 3 minutes | ## Load Testing diff --git a/docs/sidebars.js b/docs/sidebars.js index 732e5a8f23..df769ae28c 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -420,10 +420,9 @@ module.exports = { items: ["apis/observability/metrics", "apis/observability/health"], }, { - type: "category", - label: "Rate Limits", - collapsed: false, - items: ["apis/ratelimits/ratelimits", "legal/rate-limit-policy"], + type: 'link', + label: 'Rate Limits (Cloud)', // The link label + href: '/legal/rate-limit-policy', // The internal path }, ], selfHosting: [ From 0431cd15f96983b55297dce537bd877aec7a6f4d Mon Sep 17 00:00:00 2001 From: mffap Date: Fri, 21 Apr 2023 16:54:32 +0200 Subject: [PATCH 08/23] docs(scenarios): domain discovery (#5688) * formatting title configuration * color generated boxes * structure * move saas * overview * add integration overview (fixes broken link on main page) * instance settings * user journeys * fix broken link to saas * instance considerations * orgs * organizations update * instance settings: domain settings * heading * verification and conclusion * fix diagram * default org behavior from review --- docs/docs/apis/actions/objects.md | 2 +- .../manage/console/instance-settings.mdx | 17 ++- .../guides/manage/console/organizations.mdx | 17 ++- .../solution-scenarios/configurations.mdx | 2 +- .../solution-scenarios/domain-discovery.mdx | 127 ++++++++++++++++++ .../solution-scenarios/introduction.mdx | 34 ----- .../solution-scenarios}/saas.md | 0 docs/sidebars.js | 19 ++- docs/src/css/custom.css | 1 + .../solution-scenarios/domain-discovery.png | Bin 0 -> 328341 bytes 10 files changed, 176 insertions(+), 43 deletions(-) create mode 100644 docs/docs/guides/solution-scenarios/domain-discovery.mdx delete mode 100644 docs/docs/guides/solution-scenarios/introduction.mdx rename docs/docs/{concepts/usecases => guides/solution-scenarios}/saas.md (100%) create mode 100644 docs/static/img/guides/solution-scenarios/domain-discovery.png diff --git a/docs/docs/apis/actions/objects.md b/docs/docs/apis/actions/objects.md index 55751b13ff..dd8a9b648d 100644 --- a/docs/docs/apis/actions/objects.md +++ b/docs/docs/apis/actions/objects.md @@ -194,7 +194,7 @@ This object represents a list of user grant stored in ZITADEL. - `grants` Array of - `id` *string* - `projectGrantId` *string* - The id of the [project grant](../../concepts/usecases/saas#project-grant) + The id of the [project grant](/docs/guides/solution-scenarios/saas#project-grant) - `state` *Number*

- `creationDate` *Date* diff --git a/docs/docs/guides/manage/console/instance-settings.mdx b/docs/docs/guides/manage/console/instance-settings.mdx index 5a66e68b62..584d095a5f 100644 --- a/docs/docs/guides/manage/console/instance-settings.mdx +++ b/docs/docs/guides/manage/console/instance-settings.mdx @@ -175,13 +175,22 @@ If an account is locked, the administrator has to unlock it in the ZITADEL conso ## Domain settings -In the domain policy you have two different settings. -One is the "user_login_must_be_domain", by setting this all the users within an organisation will be suffixed with the domain of the organisation. +### Add organization domain as suffix to loginnames + +If you enable this setting, all loginnames will be suffixed with the organization domain. If this settings is disabled, you have to ensure that usernames are unique over all organizations. + +### Validate Org domains + +If this is enabled all created domains on an organization must be verified per dns/acme challenge. -The second is "validate_org_domains" if this is set to true all created domains on an organisation must be verified per acme challenge. More about how to verify a domain [here](/guides/manage/console/organizations#domain-verification-and-primary-domain). If it is set to false, all registered domain will automatically be created as verified and the users will be able to use the domain for login. +### SMTP Sender Address matches Instance Domain + +If enabled, the SMTP server address must match the instance's primary domain. +With that you can ensure that users receive notifications from the same domain that is used for login. + ### Use email as username To be able to use the email as username you have to disable the attribute "User Loginname must contain orgdomain" on your domain settings. @@ -190,6 +199,8 @@ All usernames will then be globally unique within your instance. You can either set this attribute on your whole ZITADEL instance or just on some specific organizations. +Please refer to the [configuration guide](/docs/guides/solution-scenarios/configurations#use-email-to-login) for more information. + ## Privacy Policy and TOS With this setting you are able to configure your privacy policy, terms of service, help links and help/support email address. diff --git a/docs/docs/guides/manage/console/organizations.mdx b/docs/docs/guides/manage/console/organizations.mdx index 32b6ee4c45..b359c3ca2e 100644 --- a/docs/docs/guides/manage/console/organizations.mdx +++ b/docs/docs/guides/manage/console/organizations.mdx @@ -67,6 +67,10 @@ Please note that domain verification also removes the logonname from all users, ## Verify your domain name +:::info +You can also disable domain verification with DNS challenge in the [instance settings](/docs/guides/manage/console/instance-settings#domain-settings). +::: + 1. Browse to your organization 2. Click **Add Domain** 3. To start the domain verification click the domain name and a dialog will appear, where you can choose between DNS or HTTP challenge methods. @@ -75,7 +79,9 @@ Please note that domain verification also removes the logonname from all users, ![Verify Domain](/img/console_verify_domain.gif) -> **_Please note:_** Do not delete the verification code, as ZITADEL will re-check the ownership of your domain from time to time +:::caution +Do not delete the verification code, as ZITADEL will re-check the ownership of your domain from time to time +::: ## Organization Settings @@ -97,3 +103,12 @@ Those settings are the same as on your instance. If you need custom branding on a organization (for example in a B2B scenario, where organizations are allowed to use their custom design), navigate back to the home page, choose your organization in the header above, navigate to the organization settings and set the custom design here. The behaviour of the login page, applyling custom design, is then defined on your projects detail page. Read more about it [here](./projects#branding) + +## Default organization + +On the instance settings page ($YOUR_DOMAIN//ui/console/orgs) you can set an organization as default organization. +Click the "..." on the right hand side of the table and select "Set as default organization". + +The current default organization is marked by a label "Default". + +When no organization was selected (eg, with the auth request or through [Domain Discovery](/docs/guides/solution-scenarios/domain-discovery)), then all users are allowed to login and users can self-register to this default organization. diff --git a/docs/docs/guides/solution-scenarios/configurations.mdx b/docs/docs/guides/solution-scenarios/configurations.mdx index 2940398a85..d7d047d288 100644 --- a/docs/docs/guides/solution-scenarios/configurations.mdx +++ b/docs/docs/guides/solution-scenarios/configurations.mdx @@ -1,6 +1,6 @@ --- title: How to configure ZITADEL for your scenario -sidebar_label: FAQ Configurations +sidebar_label: Common configurations --- Each customer does have different needs and use-cases. In ZITADEL you are able to configure your settings depending on your needs. diff --git a/docs/docs/guides/solution-scenarios/domain-discovery.mdx b/docs/docs/guides/solution-scenarios/domain-discovery.mdx new file mode 100644 index 0000000000..25bf28c9a8 --- /dev/null +++ b/docs/docs/guides/solution-scenarios/domain-discovery.mdx @@ -0,0 +1,127 @@ +--- +title: Domain Discovery +--- + +This guide should explain how domain discovery works and how to configure it in ZITADEL. + +## Overview + +Domain discovery is typically used in [B2B](./b2b) or [SaaS](./saas) scenarios where you have users from different organizations and you want to route them according to their login methods, which could be a user name or, depending on your configuration, also an [email / phone number](configurations#use-email-to-login). + +![Overview Domain Discovery](/img/guides/solution-scenarios/domain-discovery.png) + +In the example there is a service provider with a ZITADEL instance running on a [custom domain](/docs/guides/manage/cloud/instances#add-custom-domain) on `login.mycompany.com`. +By default all users login on the organization **CIAM** with their preferred social login provider. + +Users of the two business customers **Alpha** and **Beta** should login according to their organization login and access policy settings. +In case of Alpha users will login via an external identity provider (eg, [AzureAD](/docs/guides/integrate/identity-providers/azure-ad)). +Beta users must only login with username/password and MFA instead. + +For this scenario you need to route the user `alice@alpha.com` to the **Alpha Organization** and `bob@beta.com` to the **Beta Organization** respectively. + +Follow this guide to configure your ZITADEL instance for this scenario. + +## Instance + +### Default Login Page + +You will use the instance default settings for the login for the organization **CIAM**. +When opening `login.mycompany.com` then the login policy of the instance will be applied. +This means that you have to configure the [Login and Access](/docs/guides/manage/console/instance-settings#login-behaviour-and-access) Policy and [Identity Providers](/docs/guides/manage/console/instance-settings#identity-providers) for the **CIAM** users on the instance itself. + +:::info +You can also configure these settings on the default organization (see below) and send the scope `urn:zitadel:iam:org:id:{id}` with every [auth request](/docs/apis/openidoauth/authrequest#organization-policies-and-branding). +::: + +### Default Organization + +Set **CIAM** as [default organization](/docs/guides/manage/console/organizations#default-organization). +You will find the overview of all organizations under the "Organizations" tab on the Instance Settings. + +The default organization will hold all unmatched users, ie. all users that are not specifically in the organizations **Alpha** or **Beta** in the example. + +### Enable Domain Discovery + +In the [Login Behavior and Security Settings](/docs/guides/manage/console/instance-settings#login-behaviour-and-access) enable "Domain discovery allowed" + +### Configure login with email + +Follow this [configuration guide](/docs/guides/solution-scenarios/configurations#use-email-to-login) to allow users to login with their email address. + +### Other considerations + +You can also have multiple custom domains pointing to the same instance as described in this [configuration guide](/docs/guides/solution-scenarios/configurations#custom-application-domain-per-organization). In our example you could also use `alpha.mycompany.com` to show the login page of your instance. + +The domain of your email notification can be changed by [setting up your SMTP](/docs/guides/manage/console/instance-settings#smtp). + +## Organization + +### Alpha organization + +Users of **Alpha** should only be allowed to authenticate with their company's identity provider. + +In the organization settings under Login Behavior and Access make sure the following settings are applied: + +- **Username Password allowed**: Disabled +- **Register allowed**: Disabled - we will configure this on the external identity provider +- **External IDP allowed**: Enabled + +Now you can configure an [external identity provider](/docs/guides/manage/console/instance-settings#identity-providers). + +:::info +Given you have only one external identity provider configured, when a user tries to login on that organization, then the user will be automatically redirected to the external identity provider. +In case multiple providers are configured, then the user will be prompted to select an identity provider. +::: + +### Beta organization + +Users of **Beta** must create an account and login with password and 2FA. + +In the organization settings under Login Behavior and Access make sure the following settings are applied: + +- **Username Password allowed**: Enabled +- **Register allowed**: Disabled - you may want [Managers](/docs/concepts/structure/managers) to setup accounts. +- **External IDP allowed**: Disabled + +Make sure to [Force MFA](/docs/guides/manage/console/instance-settings#multifactor-mfa) so that users must setup a second factor for authentication. + +### Verify domains + +Switch to the organization **Alpha** and select the tab "Domains". +Verify the domain alpha.com following the [organization guide](/docs/guides/manage/console/organizations#domain-verification-and-primary-domain). + +Do the same for the **Beta** organization. + +:::info +You can also disable domain verification with acme challenge in the [instance settings](/docs/guides/manage/console/instance-settings#domain-settings). +::: + +## Conclusion + +You should be all setup to try out domain discovery. + +The user journeys for the different users would look as follows: + +- User (Alice, Bob, Chuck) clicks a login button in your application +- Redirected to `login.mycompany.com` (ZITADEL running under a custom domain) + +Chuck + +1. Select Google button +1. Redirect to Google IDP +1. Chuck logs in with Google credentials +1. Redirected back to your application + +Alice + +1. Alice enters alice@alpha.com and clicks next +1. Redirect to AzureAD Tenant (or any other IDP) +1. Alice logs in with her company credentials +1. Redirected back to your application + +Bob + +1. Bob enters bob@beta.com and clicks next +1. Bob will be redirected to a login with the branding of beta.com +1. Bob enters his password and MFA on the login screen +1. Redirected back to your application diff --git a/docs/docs/guides/solution-scenarios/introduction.mdx b/docs/docs/guides/solution-scenarios/introduction.mdx deleted file mode 100644 index bf375a8ea3..0000000000 --- a/docs/docs/guides/solution-scenarios/introduction.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Introduction ---- - -import { - ListElement, - ListWrapper, - ICONTYPE, -} from "../../../src/components/list"; -import Column from "../../../src/components/column"; - -## Solution Scenarios - -Customers of an SaaS Identity and Access Management System usually have all distinct use cases and requirements. -This guide attempts to explain real-world implementations and break them down into **Solution Scenarios** which aim to help you getting started with ZITADEL. - - - - - diff --git a/docs/docs/concepts/usecases/saas.md b/docs/docs/guides/solution-scenarios/saas.md similarity index 100% rename from docs/docs/concepts/usecases/saas.md rename to docs/docs/guides/solution-scenarios/saas.md diff --git a/docs/sidebars.js b/docs/sidebars.js index df769ae28c..6c478cf380 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -126,8 +126,14 @@ module.exports = { { type: "category", label: "Integrate", + link: { + type: "generated-index", + title: "Integrate", + slug: "guides/integrate", + description: + "Integrate your users and application with ZITADEL. In this section you will find resource on how to authenticate your users, configure external identity providers, access the ZITADEL APIs to manage resources, and integrate with third party services and tools.", + }, items: [ - { type: "category", label: "Authenticate Users", @@ -234,12 +240,19 @@ module.exports = { { type: "category", label: "Solution Scenarios", + link: { + type: "generated-index", + title: "Solution Scenarios", + slug: "guides/solution-scenarios/introduction", + description: + "Customers of an SaaS Identity and Access Management System usually have all distinct use cases and requirements. This guide attempts to explain real-world implementations and break them down into Solution Scenarios which aim to help you getting started with ZITADEL.", + }, collapsed: true, items: [ - "guides/solution-scenarios/introduction", "guides/solution-scenarios/b2c", "guides/solution-scenarios/b2b", - "concepts/usecases/saas", + "guides/solution-scenarios/saas", + "guides/solution-scenarios/domain-discovery", "guides/solution-scenarios/configurations", ], }, diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 13dd57f7fc..f98fad11b6 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -291,6 +291,7 @@ h2 { --ifm-color-warning-dark: #4f566b; --ifm-toc-border-color: rgba(135, 149, 161, 0.2); --ifm-table-border-color: rgba(135, 149, 161, 0.2); + --ifm-card-background-color: #1a253c; --card-background: #1a253c; /* #1a1d46; */ --list-background: #1a253c; /* #1a1d46; */ --apiauthbackground: linear-gradient(40deg, #506e6e90 30%, #506e6e90); diff --git a/docs/static/img/guides/solution-scenarios/domain-discovery.png b/docs/static/img/guides/solution-scenarios/domain-discovery.png new file mode 100644 index 0000000000000000000000000000000000000000..b116c0aabe0cfc3dc65f83489876e63972a476c8 GIT binary patch literal 328341 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≈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 Date: Mon, 24 Apr 2023 21:23:38 +1000 Subject: [PATCH 09/23] docs: Fix typo (#5727) Fix typo --- internal/eventstore/repository/sql/crdb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/eventstore/repository/sql/crdb.go b/internal/eventstore/repository/sql/crdb.go index 6400776251..f78f210a6a 100644 --- a/internal/eventstore/repository/sql/crdb.go +++ b/internal/eventstore/repository/sql/crdb.go @@ -20,7 +20,7 @@ import ( const ( //as soon as stored procedures are possible in crdb - // we could move the code to migrations and coll the procedure + // we could move the code to migrations and call the procedure // traking issue: https://github.com/cockroachdb/cockroach/issues/17511 // //previous_data selects the needed data of the latest event of the aggregate From 095ec2167892e34f1675ee2c8df10f61e7d9c1b6 Mon Sep 17 00:00:00 2001 From: Silvan Date: Tue, 25 Apr 2023 09:02:29 +0200 Subject: [PATCH 10/23] feat: user v2alpha email API (#5708) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(proto): update versions * change protoc plugin * some cleanups * define api for setting emails in new api * implement user.SetEmail * move SetEmail buisiness logic into command * resuse newCryptoCode * command: add ChangeEmail unit tests Not complete, was not able to mock the generator. * Revert "resuse newCryptoCode" This reverts commit c89e90ae35ae924a3f706a0a7394f933910c2e65. * undo change to crypto code generators * command: use a generator so we can test properly * command: reorganise ChangeEmail improve test coverage * implement VerifyEmail including unit tests * add URL template tests * proto: change context to object * remove old auth option * remove old auth option * fix linting errors run gci on modified files * add permission checks and fix some errors * comments * comments --------- Co-authored-by: Livio Spring Co-authored-by: Tim Möhlmann --- build/grpc/Dockerfile | 6 +- build/zitadel/Dockerfile | 1 - build/zitadel/generate-grpc.sh | 46 +- cmd/setup/03.go | 1 + cmd/setup/config_change.go | 4 +- cmd/start/start.go | 3 +- internal/api/authz/authorization.go | 31 +- internal/api/authz/config.go | 6 +- internal/api/authz/permissions.go | 69 +- internal/api/authz/permissions_test.go | 116 +- internal/api/authz/token.go | 10 +- internal/api/grpc/admin/server.go | 2 +- internal/api/grpc/auth/server.go | 2 +- internal/api/grpc/management/server.go | 2 +- internal/api/grpc/object/v2/converter.go | 19 + .../middleware/auth_interceptor_test.go | 2 +- internal/api/grpc/server/server.go | 4 +- internal/api/grpc/system/server.go | 3 +- internal/api/grpc/user/v2/email.go | 65 + internal/api/grpc/user/v2/server.go | 18 +- internal/api/grpc/user/v2/test.go | 55 - .../eventstore/user_membership.go | 10 +- internal/authz/repository/user_membership.go | 2 +- internal/command/command.go | 9 +- internal/command/main_test.go | 13 + internal/command/permission.go | 11 + internal/command/user_human.go | 2 +- internal/command/user_human_email.go | 5 +- internal/command/user_human_email_model.go | 3 +- internal/command/user_v2_email.go | 208 +++ internal/command/user_v2_email_test.go | 1315 +++++++++++++++++ internal/domain/human_email.go | 36 +- internal/domain/human_email_test.go | 60 + .../notification/handlers/usernotifier.go | 6 +- .../types/email_verification_code.go | 16 +- .../types/email_verification_code_test.go | 107 ++ .../auth_method_mapping.go.tmpl | 16 + internal/protoc/protoc-gen-auth/main.go | 97 ++ .../protoc/protoc-gen-authoption/README.md | 37 - .../protoc/protoc-gen-authoption/generate.go | 4 - internal/protoc/protoc-gen-authoption/main.go | 15 - .../templates/auth_method_mapping.go.tmpl | 33 - internal/repository/user/human_email.go | 27 +- internal/static/i18n/de.yaml | 1 + internal/static/i18n/en.yaml | 1 + internal/static/i18n/es.yaml | 1 + internal/static/i18n/fr.yaml | 1 + internal/static/i18n/it.yaml | 1 + internal/static/i18n/ja.yaml | 1 + internal/static/i18n/pl.yaml | 1 + internal/static/i18n/zh.yaml | 1 + proto/zitadel/admin.proto | 2 +- proto/zitadel/management.proto | 2 +- proto/zitadel/object/v2alpha/object.proto | 40 + proto/zitadel/user/v2alpha/email.proto | 27 + proto/zitadel/user/v2alpha/user_service.proto | 119 +- tools/go.mod | 33 +- tools/go.sum | 1260 +++++++++++++++- 58 files changed, 3589 insertions(+), 399 deletions(-) create mode 100644 internal/api/grpc/object/v2/converter.go create mode 100644 internal/api/grpc/user/v2/email.go delete mode 100644 internal/api/grpc/user/v2/test.go create mode 100644 internal/command/permission.go create mode 100644 internal/command/user_v2_email.go create mode 100644 internal/command/user_v2_email_test.go create mode 100644 internal/notification/types/email_verification_code_test.go create mode 100644 internal/protoc/protoc-gen-auth/auth_method_mapping.go.tmpl create mode 100644 internal/protoc/protoc-gen-auth/main.go delete mode 100644 internal/protoc/protoc-gen-authoption/README.md delete mode 100644 internal/protoc/protoc-gen-authoption/generate.go delete mode 100644 internal/protoc/protoc-gen-authoption/main.go delete mode 100644 internal/protoc/protoc-gen-authoption/templates/auth_method_mapping.go.tmpl create mode 100644 proto/zitadel/object/v2alpha/object.proto create mode 100644 proto/zitadel/user/v2alpha/email.proto diff --git a/build/grpc/Dockerfile b/build/grpc/Dockerfile index aa1727ef8c..d6b86dd01d 100644 --- a/build/grpc/Dockerfile +++ b/build/grpc/Dockerfile @@ -16,11 +16,11 @@ ENV PROTOC_ARCH x86_64 ## protoc and protoc-gen-grpc-web for later use ####################### FROM ${BUILDARCH}-base -ARG PROTOC_VERSION=3.18.0 +ARG PROTOC_VERSION=22.3 ARG PROTOC_ZIP=protoc-${PROTOC_VERSION}-linux-${PROTOC_ARCH}.zip ARG GRPC_WEB_VERSION=1.3.0 -ARG GATEWAY_VERSION=2.15.1 -ARG VALIDATOR_VERSION=0.6.2 +ARG GATEWAY_VERSION=2.15.2 +ARG VALIDATOR_VERSION=0.10.1 # no arm specific version available and x86 works fine at the moment: ARG GRPC_WEB=protoc-gen-grpc-web-${GRPC_WEB_VERSION}-linux-x86_64 diff --git a/build/zitadel/Dockerfile b/build/zitadel/Dockerfile index 1ed0e34d7b..7c0f7bdcad 100644 --- a/build/zitadel/Dockerfile +++ b/build/zitadel/Dockerfile @@ -73,7 +73,6 @@ COPY --from=go-stub /go/src/github.com/zitadel/zitadel/openapi/statik/statik.go COPY --from=go-stub /go/src/github.com/zitadel/zitadel/pkg/grpc pkg/grpc COPY --from=go-stub /go/src/github.com/zitadel/zitadel/openapi/v2/zitadel openapi/v2/zitadel COPY --from=go-stub /go/src/github.com/zitadel/zitadel/openapi/statik/statik.go openapi/statik/statik.go -COPY --from=go-stub /go/src/github.com/zitadel/zitadel/internal/protoc/protoc-gen-authoption/templates.gen.go internal/protoc/protoc-gen-authoption/templates.gen.go COPY --from=go-stub /go/src/github.com/zitadel/zitadel/internal/protoc/protoc-gen-authoption/authoption/options.pb.go internal/protoc/protoc-gen-authoption/authoption/options.pb.go COPY --from=go-stub /go/src/github.com/zitadel/zitadel/docs/apis/proto docs/docs/apis/proto COPY --from=go-stub /go/src/github.com/zitadel/zitadel/docs/apis/assets docs/docs/apis/assets diff --git a/build/zitadel/generate-grpc.sh b/build/zitadel/generate-grpc.sh index 02d1fa86b1..6f85200da3 100755 --- a/build/zitadel/generate-grpc.sh +++ b/build/zitadel/generate-grpc.sh @@ -15,17 +15,11 @@ protoc \ -I=/proto/include/ \ --go_out $GOPATH/src \ --go-grpc_out $GOPATH/src \ + --validate_out=lang=go:${GOPATH}/src \ $(find ${PROTO_PATH} -iname *.proto) -# generate authoptions code from templates -go-bindata \ - -pkg main \ - -prefix internal/protoc/protoc-gen-authoption \ - -o ${ZITADEL_PATH}/internal/protoc/protoc-gen-authoption/templates.gen.go \ - ${ZITADEL_PATH}/internal/protoc/protoc-gen-authoption/templates - # install authoption proto compiler -go install ${ZITADEL_PATH}/internal/protoc/protoc-gen-authoption +go install ${ZITADEL_PATH}/internal/protoc/protoc-gen-auth # output folder for openapi v2 mkdir -p ${OPENAPI_PATH} @@ -39,28 +33,20 @@ protoc \ --grpc-gateway_opt logtostderr=true \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ - --authoption_out ${GRPC_PATH}/system \ + --auth_out ${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/system.proto -# authoptions are generated into the wrong folder -mv ${ZITADEL_PATH}/pkg/grpc/system/zitadel/* ${ZITADEL_PATH}/pkg/grpc/system -rm -r ${ZITADEL_PATH}/pkg/grpc/system/zitadel - protoc \ -I=/proto/include \ --grpc-gateway_out ${GOPATH}/src \ --grpc-gateway_opt logtostderr=true \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ - --authoption_out ${GRPC_PATH}/admin \ + --auth_out ${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/admin.proto -# authoptions are generated into the wrong folder -mv ${ZITADEL_PATH}/pkg/grpc/admin/zitadel/* ${ZITADEL_PATH}/pkg/grpc/admin -rm -r ${ZITADEL_PATH}/pkg/grpc/admin/zitadel - protoc \ -I=/proto/include \ --grpc-gateway_out ${GOPATH}/src \ @@ -69,14 +55,10 @@ protoc \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ --openapiv2_opt allow_delete_body=true \ - --authoption_out ${GRPC_PATH}/management \ + --auth_out ${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/management.proto -# authoptions are generated into the wrong folder -mv ${ZITADEL_PATH}/pkg/grpc/management/zitadel/* ${ZITADEL_PATH}/pkg/grpc/management -rm -r ${ZITADEL_PATH}/pkg/grpc/management/zitadel - protoc \ -I=/proto/include \ --grpc-gateway_out ${GOPATH}/src \ @@ -85,14 +67,10 @@ protoc \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ --openapiv2_opt allow_delete_body=true \ - --authoption_out=${GRPC_PATH}/auth \ + --auth_out=${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/auth.proto -# authoptions are generated into the wrong folder -mv ${ZITADEL_PATH}/pkg/grpc/auth/zitadel/* ${ZITADEL_PATH}/pkg/grpc/auth -rm -r ${ZITADEL_PATH}/pkg/grpc/auth/zitadel - protoc \ -I=/proto/include \ --grpc-gateway_out ${GOPATH}/src \ @@ -101,14 +79,10 @@ protoc \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ --openapiv2_opt allow_delete_body=true \ - --authoption_out=${GRPC_PATH}/user \ + --auth_out=${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/user/v2alpha/user_service.proto -# authoptions are generated into the wrong folder -cp -r ${ZITADEL_PATH}/pkg/grpc/user/zitadel/* ${ZITADEL_PATH}/pkg/grpc -rm -r ${ZITADEL_PATH}/pkg/grpc/user/zitadel - protoc \ -I=/proto/include \ --grpc-gateway_out ${GOPATH}/src \ @@ -117,12 +91,8 @@ protoc \ --openapiv2_out ${OPENAPI_PATH} \ --openapiv2_opt logtostderr=true \ --openapiv2_opt allow_delete_body=true \ - --authoption_out=${GRPC_PATH}/session \ + --auth_out=${GOPATH}/src \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/session/v2alpha/session_service.proto -# authoptions are generated into the wrong folder -cp -r ${ZITADEL_PATH}/pkg/grpc/session/zitadel/* ${ZITADEL_PATH}/pkg/grpc -rm -r ${ZITADEL_PATH}/pkg/grpc/session/zitadel - echo "done generating grpc" diff --git a/cmd/setup/03.go b/cmd/setup/03.go index 3630ac85f6..9774ab7b7b 100644 --- a/cmd/setup/03.go +++ b/cmd/setup/03.go @@ -76,6 +76,7 @@ func (mig *FirstInstance) Execute(ctx context.Context) error { nil, nil, nil, + nil, ) if err != nil { diff --git a/cmd/setup/config_change.go b/cmd/setup/config_change.go index 71836c11a4..f112dd8c7b 100644 --- a/cmd/setup/config_change.go +++ b/cmd/setup/config_change.go @@ -33,7 +33,8 @@ func (mig *externalConfigChange) Check() bool { } func (mig *externalConfigChange) Execute(ctx context.Context) error { - cmd, err := command.StartCommands(mig.es, + cmd, err := command.StartCommands( + mig.es, systemdefaults.SystemDefaults{}, nil, nil, @@ -50,6 +51,7 @@ func (mig *externalConfigChange) Execute(ctx context.Context) error { nil, nil, nil, + nil, ) if err != nil { diff --git a/cmd/start/start.go b/cmd/start/start.go index c3ba766fea..90362d61e9 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -146,6 +146,7 @@ func startZitadel(config *Config, masterKey string) error { keys.OIDC, keys.SAML, &http.Client{}, + authZRepo, ) if err != nil { return fmt.Errorf("cannot start commands: %w", err) @@ -248,7 +249,7 @@ func startAPIs( if err := apis.RegisterServer(ctx, auth.CreateServer(commands, queries, authRepo, config.SystemDefaults, keys.User, config.ExternalSecure, config.AuditLogRetention)); err != nil { return err } - if err := apis.RegisterService(ctx, user.CreateServer(commands, queries)); err != nil { + if err := apis.RegisterService(ctx, user.CreateServer(commands, queries, keys.User)); err != nil { return err } if err := apis.RegisterService(ctx, session.CreateServer(commands, queries)); err != nil { diff --git a/internal/api/authz/authorization.go b/internal/api/authz/authorization.go index c3c6d55d4b..0df781f4b0 100644 --- a/internal/api/authz/authorization.go +++ b/internal/api/authz/authorization.go @@ -14,11 +14,11 @@ const ( authenticated = "authenticated" ) -func CheckUserAuthorization(ctx context.Context, req interface{}, token, orgID string, verifier *TokenVerifier, authConfig Config, requiredAuthOption Option, method string) (ctxSetter func(context.Context) context.Context, err error) { +func CheckUserAuthorization(ctx context.Context, req interface{}, token, orgIDHeader string, verifier *TokenVerifier, authConfig Config, requiredAuthOption Option, method string) (ctxSetter func(context.Context) context.Context, err error) { ctx, span := tracing.NewServerInterceptorSpan(ctx) defer func() { span.EndWithError(err) }() - ctxData, err := VerifyTokenAndCreateCtxData(ctx, token, orgID, verifier, method) + ctxData, err := VerifyTokenAndCreateCtxData(ctx, token, orgIDHeader, verifier, method) if err != nil { return nil, err } @@ -29,7 +29,7 @@ func CheckUserAuthorization(ctx context.Context, req interface{}, token, orgID s }, nil } - requestedPermissions, allPermissions, err := getUserMethodPermissions(ctx, verifier, requiredAuthOption.Permission, authConfig, ctxData) + requestedPermissions, allPermissions, err := getUserPermissions(ctx, verifier, requiredAuthOption.Permission, authConfig.RolePermissionMappings, ctxData, ctxData.OrgID) if err != nil { return nil, err } @@ -110,18 +110,6 @@ func HasGlobalPermission(perms []string) bool { return false } -func HasGlobalExplicitPermission(perms []string, permToCheck string) bool { - for _, perm := range perms { - p, ctxID := SplitPermission(perm) - if p == permToCheck { - if ctxID == "" { - return true - } - } - } - return false -} - func GetAllPermissionCtxIDs(perms []string) []string { ctxIDs := make([]string, 0) for _, perm := range perms { @@ -132,16 +120,3 @@ func GetAllPermissionCtxIDs(perms []string) []string { } return ctxIDs } - -func GetExplicitPermissionCtxIDs(perms []string, searchPerm string) []string { - ctxIDs := make([]string, 0) - for _, perm := range perms { - p, ctxID := SplitPermission(perm) - if p == searchPerm { - if ctxID != "" { - ctxIDs = append(ctxIDs, ctxID) - } - } - } - return ctxIDs -} diff --git a/internal/api/authz/config.go b/internal/api/authz/config.go index d9b79ee19c..865349d953 100644 --- a/internal/api/authz/config.go +++ b/internal/api/authz/config.go @@ -14,11 +14,11 @@ type MethodMapping map[string]Option type Option struct { Permission string CheckParam string - Feature string + AllowSelf bool } -func (a *Config) getPermissionsFromRole(role string) []string { - for _, roleMap := range a.RolePermissionMappings { +func getPermissionsFromRole(rolePermissionMappings []RoleMapping, role string) []string { + for _, roleMap := range rolePermissionMappings { if roleMap.Role == role { return roleMap.Permissions } diff --git a/internal/api/authz/permissions.go b/internal/api/authz/permissions.go index 74ffa80c79..b392ca7958 100644 --- a/internal/api/authz/permissions.go +++ b/internal/api/authz/permissions.go @@ -7,7 +7,28 @@ import ( "github.com/zitadel/zitadel/internal/telemetry/tracing" ) -func getUserMethodPermissions(ctx context.Context, t *TokenVerifier, requiredPerm string, authConfig Config, ctxData CtxData) (requestedPermissions, allPermissions []string, err error) { +func CheckPermission(ctx context.Context, resolver MembershipsResolver, roleMappings []RoleMapping, permission, orgID, resourceID string, allowSelf bool) (err error) { + ctxData := GetCtxData(ctx) + if allowSelf && ctxData.UserID == resourceID { + return nil + } + requestedPermissions, _, err := getUserPermissions(ctx, resolver, permission, roleMappings, ctxData, orgID) + if err != nil { + return err + } + + _, userPermissionSpan := tracing.NewNamedSpan(ctx, "checkUserPermissions") + err = checkUserResourcePermissions(requestedPermissions, resourceID) + userPermissionSpan.EndWithError(err) + if err != nil { + return err + } + return nil +} + +// getUserPermissions retrieves the memberships of the authenticated user (on instance and provided organisation level), +// and maps them to permissions. It will return the requested permission(s) and all other granted permissions separately. +func getUserPermissions(ctx context.Context, resolver MembershipsResolver, requiredPerm string, roleMappings []RoleMapping, ctxData CtxData, orgID string) (requestedPermissions, allPermissions []string, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -16,13 +37,13 @@ func getUserMethodPermissions(ctx context.Context, t *TokenVerifier, requiredPer } ctx = context.WithValue(ctx, dataKey, ctxData) - memberships, err := t.SearchMyMemberships(ctx) + memberships, err := resolver.SearchMyMemberships(ctx, orgID) if err != nil { return nil, nil, err } if len(memberships) == 0 { err = retry(func() error { - memberships, err = t.SearchMyMemberships(ctx) + memberships, err = resolver.SearchMyMemberships(ctx, orgID) if err != nil { return err } @@ -35,24 +56,56 @@ func getUserMethodPermissions(ctx context.Context, t *TokenVerifier, requiredPer return nil, nil, nil } } - requestedPermissions, allPermissions = mapMembershipsToPermissions(requiredPerm, memberships, authConfig) + requestedPermissions, allPermissions = mapMembershipsToPermissions(requiredPerm, memberships, roleMappings) return requestedPermissions, allPermissions, nil } -func mapMembershipsToPermissions(requiredPerm string, memberships []*Membership, authConfig Config) (requestPermissions, allPermissions []string) { +// checkUserResourcePermissions checks that if a user i granted either the requested permission globally (project.write) +// or the specific resource (project.write:123) +func checkUserResourcePermissions(userPerms []string, resourceID string) error { + if len(userPerms) == 0 { + return errors.ThrowPermissionDenied(nil, "AUTH-AWfge", "No matching permissions found") + } + + if resourceID == "" { + return nil + } + + if HasGlobalPermission(userPerms) { + return nil + } + + if hasContextResourcePermission(userPerms, resourceID) { + return nil + } + + return errors.ThrowPermissionDenied(nil, "AUTH-Swrgg2", "No matching permissions found") +} + +func hasContextResourcePermission(permissions []string, resourceID string) bool { + for _, perm := range permissions { + _, ctxID := SplitPermission(perm) + if resourceID == ctxID { + return true + } + } + return false +} + +func mapMembershipsToPermissions(requiredPerm string, memberships []*Membership, roleMappings []RoleMapping) (requestPermissions, allPermissions []string) { requestPermissions = make([]string, 0) allPermissions = make([]string, 0) for _, membership := range memberships { - requestPermissions, allPermissions = mapMembershipToPerm(requiredPerm, membership, authConfig, requestPermissions, allPermissions) + requestPermissions, allPermissions = mapMembershipToPerm(requiredPerm, membership, roleMappings, requestPermissions, allPermissions) } return requestPermissions, allPermissions } -func mapMembershipToPerm(requiredPerm string, membership *Membership, authConfig Config, requestPermissions, allPermissions []string) ([]string, []string) { +func mapMembershipToPerm(requiredPerm string, membership *Membership, roleMappings []RoleMapping, requestPermissions, allPermissions []string) ([]string, []string) { roleNames, roleContextID := roleWithContext(membership) for _, roleName := range roleNames { - perms := authConfig.getPermissionsFromRole(roleName) + perms := getPermissionsFromRole(roleMappings, roleName) for _, p := range perms { permWithCtx := addRoleContextIDToPerm(p, roleContextID) diff --git a/internal/api/authz/permissions_test.go b/internal/api/authz/permissions_test.go index 1a1b97d6f8..ea217e1b85 100644 --- a/internal/api/authz/permissions_test.go +++ b/internal/api/authz/permissions_test.go @@ -18,7 +18,7 @@ type testVerifier struct { func (v *testVerifier) VerifyAccessToken(ctx context.Context, token, clientID, projectID string) (string, string, string, string, string, error) { return "userID", "agentID", "clientID", "de", "orgID", nil } -func (v *testVerifier) SearchMyMemberships(ctx context.Context) ([]*Membership, error) { +func (v *testVerifier) SearchMyMemberships(ctx context.Context, orgID string) ([]*Membership, error) { return v.memberships, nil } @@ -46,7 +46,7 @@ func equalStringArray(a, b []string) bool { return true } -func Test_GetUserMethodPermissions(t *testing.T) { +func Test_GetUserPermissions(t *testing.T) { type args struct { ctxData CtxData verifier *TokenVerifier @@ -139,7 +139,7 @@ func Test_GetUserMethodPermissions(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - _, perms, err := getUserMethodPermissions(context.Background(), tt.args.verifier, tt.args.requiredPerm, tt.args.authConfig, tt.args.ctxData) + _, perms, err := getUserPermissions(context.Background(), tt.args.verifier, tt.args.requiredPerm, tt.args.authConfig.RolePermissionMappings, tt.args.ctxData, tt.args.ctxData.OrgID) if tt.wantErr && err == nil { t.Errorf("got wrong result, should get err: actual: %v ", err) @@ -295,7 +295,7 @@ func Test_MapMembershipToPermissions(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - requestPerms, allPerms := mapMembershipsToPermissions(tt.args.requiredPerm, tt.args.membership, tt.args.authConfig) + requestPerms, allPerms := mapMembershipsToPermissions(tt.args.requiredPerm, tt.args.membership, tt.args.authConfig.RolePermissionMappings) if !equalStringArray(requestPerms, tt.requestPerms) { t.Errorf("got wrong requestPerms, expecting: %v, actual: %v ", tt.requestPerms, requestPerms) } @@ -435,7 +435,7 @@ func Test_MapMembershipToPerm(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - requestPerms, allPerms := mapMembershipToPerm(tt.args.requiredPerm, tt.args.membership, tt.args.authConfig, tt.args.requestPerms, tt.args.allPerms) + requestPerms, allPerms := mapMembershipToPerm(tt.args.requiredPerm, tt.args.membership, tt.args.authConfig.RolePermissionMappings, tt.args.requestPerms, tt.args.allPerms) if !equalStringArray(requestPerms, tt.requestPerms) { t.Errorf("got wrong requestPerms, expecting: %v, actual: %v ", tt.requestPerms, requestPerms) } @@ -519,3 +519,109 @@ func Test_ExistisPerm(t *testing.T) { }) } } + +func Test_CheckUserResourcePermissions(t *testing.T) { + type args struct { + perms []string + resourceID string + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "no permissions", + args: args{ + perms: []string{}, + resourceID: "", + }, + wantErr: true, + }, + { + name: "has permission and no context requested", + args: args{ + perms: []string{"project.read"}, + resourceID: "", + }, + wantErr: false, + }, + { + name: "context requested and has global permission", + args: args{ + perms: []string{"project.read", "project.read:1"}, + resourceID: "Test", + }, + wantErr: false, + }, + { + name: "context requested and has specific permission", + args: args{ + perms: []string{"project.read:Test"}, + resourceID: "Test", + }, + wantErr: false, + }, + { + name: "context requested and has no permission", + args: args{ + perms: []string{"project.read:Test"}, + resourceID: "Hodor", + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := checkUserResourcePermissions(tt.args.perms, tt.args.resourceID) + if tt.wantErr && err == nil { + t.Errorf("got wrong result, should get err: actual: %v ", err) + } + + if !tt.wantErr && err != nil { + t.Errorf("shouldn't get err: %v ", err) + } + + if tt.wantErr && !caos_errs.IsPermissionDenied(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func Test_HasContextResourcePermission(t *testing.T) { + type args struct { + perms []string + resourceID string + } + tests := []struct { + name string + args args + result bool + }{ + { + name: "existing context permission", + args: args{ + perms: []string{"test:wrong", "test:right"}, + resourceID: "right", + }, + result: true, + }, + { + name: "not existing context permission", + args: args{ + perms: []string{"test:wrong", "test:wrong2"}, + resourceID: "test", + }, + result: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := hasContextResourcePermission(tt.args.perms, tt.args.resourceID) + if result != tt.result { + t.Errorf("got wrong result, expecting: %v, actual: %v ", tt.result, result) + } + }) + } +} diff --git a/internal/api/authz/token.go b/internal/api/authz/token.go index a7ea46a685..a8a9b3afb1 100644 --- a/internal/api/authz/token.go +++ b/internal/api/authz/token.go @@ -27,10 +27,14 @@ type TokenVerifier struct { systemJWTProfile op.JWTProfileVerifier } +type MembershipsResolver interface { + SearchMyMemberships(ctx context.Context, orgID string) ([]*Membership, error) +} + type authZRepo interface { VerifyAccessToken(ctx context.Context, token, verifierClientID, projectID string) (userID, agentID, clientID, prefLang, resourceOwner string, err error) VerifierClientID(ctx context.Context, name string) (clientID, projectID string, err error) - SearchMyMemberships(ctx context.Context) ([]*Membership, error) + SearchMyMemberships(ctx context.Context, orgID string) ([]*Membership, error) ProjectIDAndOriginsByClientID(ctx context.Context, clientID string) (projectID string, origins []string, err error) ExistsOrg(ctx context.Context, orgID string) error } @@ -127,10 +131,10 @@ func (v *TokenVerifier) RegisterServer(appName, methodPrefix string, mappings Me } } -func (v *TokenVerifier) SearchMyMemberships(ctx context.Context) (_ []*Membership, err error) { +func (v *TokenVerifier) SearchMyMemberships(ctx context.Context, orgID string) (_ []*Membership, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() - return v.authZRepo.SearchMyMemberships(ctx) + return v.authZRepo.SearchMyMemberships(ctx, orgID) } func (v *TokenVerifier) ProjectIDAndOriginsByClientID(ctx context.Context, clientID string) (_ string, _ []string, err error) { diff --git a/internal/api/grpc/admin/server.go b/internal/api/grpc/admin/server.go index 267fad2f45..d25bd4b3d4 100644 --- a/internal/api/grpc/admin/server.go +++ b/internal/api/grpc/admin/server.go @@ -71,7 +71,7 @@ func (s *Server) AppName() string { } func (s *Server) MethodPrefix() string { - return admin.AdminService_MethodPrefix + return admin.AdminService_ServiceDesc.ServiceName } func (s *Server) AuthMethods() authz.MethodMapping { diff --git a/internal/api/grpc/auth/server.go b/internal/api/grpc/auth/server.go index ff7d7ae7b6..16fb66022f 100644 --- a/internal/api/grpc/auth/server.go +++ b/internal/api/grpc/auth/server.go @@ -69,7 +69,7 @@ func (s *Server) AppName() string { } func (s *Server) MethodPrefix() string { - return auth.AuthService_MethodPrefix + return auth.AuthService_ServiceDesc.ServiceName } func (s *Server) AuthMethods() authz.MethodMapping { diff --git a/internal/api/grpc/management/server.go b/internal/api/grpc/management/server.go index 732f44ea29..12413e1bc8 100644 --- a/internal/api/grpc/management/server.go +++ b/internal/api/grpc/management/server.go @@ -63,7 +63,7 @@ func (s *Server) AppName() string { } func (s *Server) MethodPrefix() string { - return management.ManagementService_MethodPrefix + return management.ManagementService_ServiceDesc.ServiceName } func (s *Server) AuthMethods() authz.MethodMapping { diff --git a/internal/api/grpc/object/v2/converter.go b/internal/api/grpc/object/v2/converter.go new file mode 100644 index 0000000000..eca168f70c --- /dev/null +++ b/internal/api/grpc/object/v2/converter.go @@ -0,0 +1,19 @@ +package object + +import ( + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/zitadel/zitadel/internal/domain" + object "github.com/zitadel/zitadel/pkg/grpc/object/v2alpha" +) + +func DomainToDetailsPb(objectDetail *domain.ObjectDetails) *object.Details { + details := &object.Details{ + Sequence: objectDetail.Sequence, + ResourceOwner: objectDetail.ResourceOwner, + } + if !objectDetail.EventDate.IsZero() { + details.ChangeDate = timestamppb.New(objectDetail.EventDate) + } + return details +} diff --git a/internal/api/grpc/server/middleware/auth_interceptor_test.go b/internal/api/grpc/server/middleware/auth_interceptor_test.go index abe50606f9..c041d9ca47 100644 --- a/internal/api/grpc/server/middleware/auth_interceptor_test.go +++ b/internal/api/grpc/server/middleware/auth_interceptor_test.go @@ -24,7 +24,7 @@ type verifierMock struct{} func (v *verifierMock) VerifyAccessToken(ctx context.Context, token, clientID, projectID string) (string, string, string, string, string, error) { return "", "", "", "", "", nil } -func (v *verifierMock) SearchMyMemberships(ctx context.Context) ([]*authz.Membership, error) { +func (v *verifierMock) SearchMyMemberships(ctx context.Context, orgID string) ([]*authz.Membership, error) { return nil, nil } diff --git a/internal/api/grpc/server/server.go b/internal/api/grpc/server/server.go index 71eef0afa6..9252778036 100644 --- a/internal/api/grpc/server/server.go +++ b/internal/api/grpc/server/server.go @@ -50,13 +50,13 @@ func CreateServer( middleware.MetricsHandler(metricTypes, grpc_api.Probes...), middleware.NoCacheInterceptor(), middleware.ErrorHandler(), - middleware.InstanceInterceptor(queries, hostHeaderName, system_pb.SystemService_MethodPrefix, healthpb.Health_ServiceDesc.ServiceName), + middleware.InstanceInterceptor(queries, hostHeaderName, system_pb.SystemService_ServiceDesc.ServiceName, healthpb.Health_ServiceDesc.ServiceName), middleware.AccessStorageInterceptor(accessSvc), middleware.AuthorizationInterceptor(verifier, authConfig), middleware.TranslationHandler(), middleware.ValidationHandler(), middleware.ServiceHandler(), - middleware.QuotaExhaustedInterceptor(accessSvc, system_pb.SystemService_MethodPrefix), + middleware.QuotaExhaustedInterceptor(accessSvc, system_pb.SystemService_ServiceDesc.ServiceName), ), ), } diff --git a/internal/api/grpc/system/server.go b/internal/api/grpc/system/server.go index a954cfce43..dd947c950f 100644 --- a/internal/api/grpc/system/server.go +++ b/internal/api/grpc/system/server.go @@ -4,7 +4,6 @@ import ( "google.golang.org/grpc" "github.com/zitadel/zitadel/internal/admin/repository" - "github.com/zitadel/zitadel/internal/admin/repository/eventsourcing" "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/api/grpc/server" @@ -60,7 +59,7 @@ func (s *Server) AppName() string { } func (s *Server) MethodPrefix() string { - return system.SystemService_MethodPrefix + return system.SystemService_ServiceDesc.ServiceName } func (s *Server) AuthMethods() authz.MethodMapping { diff --git a/internal/api/grpc/user/v2/email.go b/internal/api/grpc/user/v2/email.go new file mode 100644 index 0000000000..94530167cd --- /dev/null +++ b/internal/api/grpc/user/v2/email.go @@ -0,0 +1,65 @@ +package user + +import ( + "context" + + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + object "github.com/zitadel/zitadel/pkg/grpc/object/v2alpha" + user "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" +) + +func (s *Server) SetEmail(ctx context.Context, req *user.SetEmailRequest) (resp *user.SetEmailResponse, err error) { + resourceOwner := "" // TODO: check if still needed + var email *domain.Email + + switch v := req.GetVerification().(type) { + case *user.SetEmailRequest_SendCode: + email, err = s.command.ChangeUserEmailURLTemplate(ctx, req.GetUserId(), resourceOwner, req.GetEmail(), s.userCodeAlg, v.SendCode.GetUrlTemplate()) + case *user.SetEmailRequest_ReturnCode: + email, err = s.command.ChangeUserEmailReturnCode(ctx, req.GetUserId(), resourceOwner, req.GetEmail(), s.userCodeAlg) + case *user.SetEmailRequest_IsVerified: + if v.IsVerified { + email, err = s.command.ChangeUserEmailVerified(ctx, req.GetUserId(), resourceOwner, req.GetEmail()) + } else { + email, err = s.command.ChangeUserEmail(ctx, req.GetUserId(), resourceOwner, req.GetEmail(), s.userCodeAlg) + } + case nil: + email, err = s.command.ChangeUserEmail(ctx, req.GetUserId(), resourceOwner, req.GetEmail(), s.userCodeAlg) + default: + err = caos_errs.ThrowUnimplementedf(nil, "USERv2-Ahng0", "verification oneOf %T in method SetEmail not implemented", v) + } + if err != nil { + return nil, err + } + + return &user.SetEmailResponse{ + Details: &object.Details{ + Sequence: email.Sequence, + ChangeDate: timestamppb.New(email.ChangeDate), + ResourceOwner: email.ResourceOwner, + }, + VerificationCode: email.PlainCode, + }, nil +} + +func (s *Server) VerifyEmail(ctx context.Context, req *user.VerifyEmailRequest) (*user.VerifyEmailResponse, error) { + details, err := s.command.VerifyUserEmail(ctx, + req.GetUserId(), + "", // TODO: check if still needed + req.GetVerificationCode(), + s.userCodeAlg, + ) + if err != nil { + return nil, err + } + return &user.VerifyEmailResponse{ + Details: &object.Details{ + Sequence: details.Sequence, + ChangeDate: timestamppb.New(details.EventDate), + ResourceOwner: details.ResourceOwner, + }, + }, nil +} diff --git a/internal/api/grpc/user/v2/server.go b/internal/api/grpc/user/v2/server.go index 6a7a96d31d..d81d51ff23 100644 --- a/internal/api/grpc/user/v2/server.go +++ b/internal/api/grpc/user/v2/server.go @@ -6,27 +6,27 @@ import ( "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/api/grpc/server" "github.com/zitadel/zitadel/internal/command" + "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/query" - "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" + user "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" ) var _ user.UserServiceServer = (*Server)(nil) type Server struct { user.UnimplementedUserServiceServer - command *command.Commands - query *query.Queries + command *command.Commands + query *query.Queries + userCodeAlg crypto.EncryptionAlgorithm } type Config struct{} -func CreateServer( - command *command.Commands, - query *query.Queries, -) *Server { +func CreateServer(command *command.Commands, query *query.Queries, userCodeAlg crypto.EncryptionAlgorithm) *Server { return &Server{ - command: command, - query: query, + command: command, + query: query, + userCodeAlg: userCodeAlg, } } diff --git a/internal/api/grpc/user/v2/test.go b/internal/api/grpc/user/v2/test.go deleted file mode 100644 index 8b5bc38654..0000000000 --- a/internal/api/grpc/user/v2/test.go +++ /dev/null @@ -1,55 +0,0 @@ -package user - -import ( - "context" - - "github.com/zitadel/zitadel/internal/api/authz" - "github.com/zitadel/zitadel/internal/errors" - "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" -) - -func (s *Server) TestGet(ctx context.Context, req *user.TestGetRequest) (*user.TestGetResponse, error) { - return &user.TestGetResponse{ - Ctx: req.Ctx.String(), - }, nil -} - -func (s *Server) TestPost(ctx context.Context, req *user.TestPostRequest) (*user.TestPostResponse, error) { - return &user.TestPostResponse{ - Ctx: req.Ctx.String(), - }, nil -} - -func (s *Server) TestAuth(ctx context.Context, req *user.TestAuthRequest) (*user.TestAuthResponse, error) { - reqCtx, err := authDemo(ctx, req.Ctx) - if err != nil { - return nil, err - } - return &user.TestAuthResponse{ - User: &user.User{Id: authz.GetCtxData(ctx).UserID}, - Ctx: reqCtx, - }, nil -} - -func authDemo(ctx context.Context, reqCtx *user.Context) (*user.Context, error) { - ro := authz.GetCtxData(ctx).ResourceOwner - if reqCtx == nil { - return &user.Context{Ctx: &user.Context_OrgId{OrgId: ro}}, nil - } - switch c := reqCtx.Ctx.(type) { - case *user.Context_OrgId: - if c.OrgId == ro { - return reqCtx, nil - } - return nil, errors.ThrowPermissionDenied(nil, "USER-dg4g", "Errors.User.NotAllowedOrg") - case *user.Context_OrgDomain: - if c.OrgDomain == "forbidden.com" { - return nil, errors.ThrowPermissionDenied(nil, "USER-SDg4g", "Errors.User.NotAllowedOrg") - } - return reqCtx, nil - case *user.Context_Instance: - return reqCtx, nil - default: - return reqCtx, nil - } -} diff --git a/internal/authz/repository/eventsourcing/eventstore/user_membership.go b/internal/authz/repository/eventsourcing/eventstore/user_membership.go index b7e95b603a..ae9cea03de 100644 --- a/internal/authz/repository/eventsourcing/eventstore/user_membership.go +++ b/internal/authz/repository/eventsourcing/eventstore/user_membership.go @@ -12,17 +12,17 @@ type UserMembershipRepo struct { Queries *query.Queries } -func (repo *UserMembershipRepo) SearchMyMemberships(ctx context.Context) (_ []*authz.Membership, err error) { +func (repo *UserMembershipRepo) SearchMyMemberships(ctx context.Context, orgID string) (_ []*authz.Membership, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() - memberships, err := repo.searchUserMemberships(ctx) + memberships, err := repo.searchUserMemberships(ctx, orgID) if err != nil { return nil, err } return userMembershipsToMemberships(memberships), nil } -func (repo *UserMembershipRepo) searchUserMemberships(ctx context.Context) (_ []*query.Membership, err error) { +func (repo *UserMembershipRepo) searchUserMemberships(ctx context.Context, orgID string) (_ []*query.Membership, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() ctxData := authz.GetCtxData(ctx) @@ -30,11 +30,11 @@ func (repo *UserMembershipRepo) searchUserMemberships(ctx context.Context) (_ [] if err != nil { return nil, err } - orgIDsQuery, err := query.NewMembershipResourceOwnersSearchQuery(ctxData.OrgID, authz.GetInstance(ctx).InstanceID()) + orgIDsQuery, err := query.NewMembershipResourceOwnersSearchQuery(orgID, authz.GetInstance(ctx).InstanceID()) if err != nil { return nil, err } - grantedIDQuery, err := query.NewMembershipGrantedOrgIDSearchQuery(ctxData.OrgID) + grantedIDQuery, err := query.NewMembershipGrantedOrgIDSearchQuery(orgID) if err != nil { return nil, err } diff --git a/internal/authz/repository/user_membership.go b/internal/authz/repository/user_membership.go index 105a51ba5e..a1b1fc78be 100644 --- a/internal/authz/repository/user_membership.go +++ b/internal/authz/repository/user_membership.go @@ -7,5 +7,5 @@ import ( ) type UserMembershipRepository interface { - SearchMyMemberships(ctx context.Context) ([]*authz.Membership, error) + SearchMyMemberships(ctx context.Context, orgID string) ([]*authz.Membership, error) } diff --git a/internal/command/command.go b/internal/command/command.go index 485bf563cf..4499b84b51 100644 --- a/internal/command/command.go +++ b/internal/command/command.go @@ -29,6 +29,8 @@ import ( type Commands struct { httpClient *http.Client + checkPermission permissionCheck + eventstore *eventstore.Eventstore static static.Storage idGenerator id.Generator @@ -59,7 +61,8 @@ type Commands struct { certificateLifetime time.Duration } -func StartCommands(es *eventstore.Eventstore, +func StartCommands( + es *eventstore.Eventstore, defaults sd.SystemDefaults, zitadelRoles []authz.RoleMapping, staticStore static.Storage, @@ -76,6 +79,7 @@ func StartCommands(es *eventstore.Eventstore, oidcEncryption, samlEncryption crypto.EncryptionAlgorithm, httpClient *http.Client, + membershipsResolver authz.MembershipsResolver, ) (repo *Commands, err error) { if externalDomain == "" { return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Df21s", "no external domain specified") @@ -102,6 +106,9 @@ func StartCommands(es *eventstore.Eventstore, certificateAlgorithm: samlEncryption, webauthnConfig: webAuthN, httpClient: httpClient, + checkPermission: func(ctx context.Context, permission, orgID, resourceID string, allowSelf bool) (err error) { + return authz.CheckPermission(ctx, membershipsResolver, zitadelRoles, permission, orgID, resourceID, allowSelf) + }, } instance_repo.RegisterEventMappers(repo.eventstore) diff --git a/internal/command/main_test.go b/internal/command/main_test.go index 237f98488a..2f516133f4 100644 --- a/internal/command/main_test.go +++ b/internal/command/main_test.go @@ -10,6 +10,7 @@ import ( "golang.org/x/text/language" "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/eventstore/repository" "github.com/zitadel/zitadel/internal/eventstore/repository/mock" @@ -248,3 +249,15 @@ func (m *mockInstance) RequestedHost() string { func (m *mockInstance) SecurityPolicyAllowedOrigins() []string { return nil } + +func newMockPermissionCheckAllowed() permissionCheck { + return func(ctx context.Context, permission, orgID, resourceID string, allowSelf bool) (err error) { + return nil + } +} + +func newMockPermissionCheckNotAllowed() permissionCheck { + return func(ctx context.Context, permission, orgID, resourceID string, allowSelf bool) (err error) { + return errors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied") + } +} diff --git a/internal/command/permission.go b/internal/command/permission.go new file mode 100644 index 0000000000..138df0a44a --- /dev/null +++ b/internal/command/permission.go @@ -0,0 +1,11 @@ +package command + +import ( + "context" +) + +type permissionCheck func(ctx context.Context, permission, orgID, resourceID string, allowSelf bool) (err error) + +const ( + permissionUserWrite = "user.write" +) diff --git a/internal/command/user_human.go b/internal/command/user_human.go index 3d55ccf53e..3d84eeb12b 100644 --- a/internal/command/user_human.go +++ b/internal/command/user_human.go @@ -507,7 +507,7 @@ func (c *Commands) createHuman(ctx context.Context, orgID string, human *domain. if human.Email != nil && human.EmailAddress != "" && human.IsEmailVerified { events = append(events, user.NewHumanEmailVerifiedEvent(ctx, userAgg)) } else { - emailCode, err := domain.NewEmailCode(emailCodeGenerator) + emailCode, _, err := domain.NewEmailCode(emailCodeGenerator) if err != nil { return nil, nil, err } diff --git a/internal/command/user_human_email.go b/internal/command/user_human_email.go index 22fbf7b464..66a4982863 100644 --- a/internal/command/user_human_email.go +++ b/internal/command/user_human_email.go @@ -4,6 +4,7 @@ import ( "context" "github.com/zitadel/logging" + "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" caos_errs "github.com/zitadel/zitadel/internal/errors" @@ -41,7 +42,7 @@ func (c *Commands) ChangeHumanEmail(ctx context.Context, email *domain.Email, em if email.IsEmailVerified { events = append(events, user.NewHumanEmailVerifiedEvent(ctx, userAgg)) } else { - emailCode, err := domain.NewEmailCode(emailCodeGenerator) + emailCode, _, err := domain.NewEmailCode(emailCodeGenerator) if err != nil { return nil, err } @@ -113,7 +114,7 @@ func (c *Commands) CreateHumanEmailVerificationCode(ctx context.Context, userID, return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M9ds", "Errors.User.Email.AlreadyVerified") } userAgg := UserAggregateFromWriteModel(&existingEmail.WriteModel) - emailCode, err := domain.NewEmailCode(emailCodeGenerator) + emailCode, _, err := domain.NewEmailCode(emailCodeGenerator) if err != nil { return nil, err } diff --git a/internal/command/user_human_email_model.go b/internal/command/user_human_email_model.go index f332477496..d05881a79a 100644 --- a/internal/command/user_human_email_model.go +++ b/internal/command/user_human_email_model.go @@ -4,10 +4,9 @@ import ( "context" "time" - "github.com/zitadel/zitadel/internal/eventstore" - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/repository/user" ) diff --git a/internal/command/user_v2_email.go b/internal/command/user_v2_email.go new file mode 100644 index 0000000000..d636b21a71 --- /dev/null +++ b/internal/command/user_v2_email.go @@ -0,0 +1,208 @@ +package command + +import ( + "context" + "io" + + "github.com/zitadel/logging" + + "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/repository/user" +) + +// ChangeUserEmail sets a user's email address, generates a code +// and triggers a notification e-mail with the default confirmation URL format. +func (c *Commands) ChangeUserEmail(ctx context.Context, userID, resourceOwner, email string, alg crypto.EncryptionAlgorithm) (*domain.Email, error) { + return c.changeUserEmailWithCode(ctx, userID, resourceOwner, email, alg, false, "") +} + +// ChangeUserEmailURLTemplate sets a user's email address, generates a code +// and triggers a notification e-mail with the confirmation URL rendered from the passed urlTmpl. +// urlTmpl must be a valid [tmpl.Template]. +func (c *Commands) ChangeUserEmailURLTemplate(ctx context.Context, userID, resourceOwner, email string, alg crypto.EncryptionAlgorithm, urlTmpl string) (*domain.Email, error) { + if err := domain.RenderConfirmURLTemplate(io.Discard, urlTmpl, userID, "code", "orgID"); err != nil { + return nil, err + } + return c.changeUserEmailWithCode(ctx, userID, resourceOwner, email, alg, false, urlTmpl) +} + +// ChangeUserEmailReturnCode sets a user's email address, generates a code and does not send a notification email. +// The generated plain text code will be set in the returned Email object. +func (c *Commands) ChangeUserEmailReturnCode(ctx context.Context, userID, resourceOwner, email string, alg crypto.EncryptionAlgorithm) (*domain.Email, error) { + return c.changeUserEmailWithCode(ctx, userID, resourceOwner, email, alg, true, "") +} + +// ChangeUserEmailVerified sets a user's email address and marks it is verified. +// No code is generated and no confirmation e-mail is send. +func (c *Commands) ChangeUserEmailVerified(ctx context.Context, userID, resourceOwner, email string) (*domain.Email, error) { + cmd, err := c.NewUserEmailEvents(ctx, userID, resourceOwner) + if err != nil { + return nil, err + } + if err = c.checkPermission(ctx, permissionUserWrite, cmd.aggregate.ResourceOwner, userID, false); err != nil { + return nil, err + } + if err = cmd.Change(ctx, domain.EmailAddress(email)); err != nil { + return nil, err + } + cmd.SetVerified(ctx) + return cmd.Push(ctx) +} + +func (c *Commands) changeUserEmailWithCode(ctx context.Context, userID, resourceOwner, email string, alg crypto.EncryptionAlgorithm, returnCode bool, urlTmpl string) (*domain.Email, error) { + config, err := secretGeneratorConfig(ctx, c.eventstore.Filter, domain.SecretGeneratorTypeVerifyEmailCode) + if err != nil { + return nil, err + } + gen := crypto.NewEncryptionGenerator(*config, alg) + return c.changeUserEmailWithGenerator(ctx, userID, resourceOwner, email, gen, returnCode, urlTmpl) +} + +// changeUserEmailWithGenerator set a user's email address. +// returnCode controls if the plain text version of the code will be set in the return object. +// When the plain text code is returned, no notification e-mail will be send to the user. +// urlTmpl allows changing the target URL that is used by the e-mail and should be a validated Go template, if used. +func (c *Commands) changeUserEmailWithGenerator(ctx context.Context, userID, resourceOwner, email string, gen crypto.Generator, returnCode bool, urlTmpl string) (*domain.Email, error) { + cmd, err := c.NewUserEmailEvents(ctx, userID, resourceOwner) + if err != nil { + return nil, err + } + if err = c.checkPermission(ctx, permissionUserWrite, cmd.aggregate.ResourceOwner, userID, true); err != nil { + return nil, err + } + if err = cmd.Change(ctx, domain.EmailAddress(email)); err != nil { + return nil, err + } + if err = cmd.AddGeneratedCode(ctx, gen, urlTmpl, returnCode); err != nil { + return nil, err + } + return cmd.Push(ctx) +} + +func (c *Commands) VerifyUserEmail(ctx context.Context, userID, resourceOwner, code string, alg crypto.EncryptionAlgorithm) (*domain.ObjectDetails, error) { + config, err := secretGeneratorConfig(ctx, c.eventstore.Filter, domain.SecretGeneratorTypeVerifyEmailCode) + if err != nil { + return nil, err + } + gen := crypto.NewEncryptionGenerator(*config, alg) + return c.verifyUserEmailWithGenerator(ctx, userID, resourceOwner, code, gen) +} + +func (c *Commands) verifyUserEmailWithGenerator(ctx context.Context, userID, resourceOwner, code string, gen crypto.Generator) (*domain.ObjectDetails, error) { + cmd, err := c.NewUserEmailEvents(ctx, userID, resourceOwner) + if err != nil { + return nil, err + } + err = cmd.VerifyCode(ctx, code, gen) + if err != nil { + return nil, err + } + if _, err = cmd.Push(ctx); err != nil { + return nil, err + } + return writeModelToObjectDetails(&cmd.model.WriteModel), nil +} + +// UserEmailEvents allows step-by-step additions of events, +// operating on the Human Email Model. +type UserEmailEvents struct { + eventstore *eventstore.Eventstore + aggregate *eventstore.Aggregate + events []eventstore.Command + model *HumanEmailWriteModel + + plainCode *string +} + +// NewUserEmailEvents constructs a UserEmailEvents with a Human Email Write Model, +// filtered by userID and resourceOwner. +// If a model cannot be found, or it's state is invalid and error is returned. +func (c *Commands) NewUserEmailEvents(ctx context.Context, userID, resourceOwner string) (*UserEmailEvents, error) { + if userID == "" { + return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing") + } + + model, err := c.emailWriteModel(ctx, userID, resourceOwner) + if err != nil { + return nil, err + } + if model.UserState == domain.UserStateUnspecified || model.UserState == domain.UserStateDeleted { + return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound") + } + if model.UserState == domain.UserStateInitial { + return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised") + } + return &UserEmailEvents{ + eventstore: c.eventstore, + aggregate: UserAggregateFromWriteModel(&model.WriteModel), + model: model, + }, nil +} + +// Change sets a new email address. +// The generated event unsets any previously generated code and verified flag. +func (c *UserEmailEvents) Change(ctx context.Context, email domain.EmailAddress) error { + if err := email.Validate(); err != nil { + return err + } + event, hasChanged := c.model.NewChangedEvent(ctx, c.aggregate, email) + if !hasChanged { + return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged") + } + c.events = append(c.events, event) + return nil +} + +// SetVerified sets the email address to verified. +func (c *UserEmailEvents) SetVerified(ctx context.Context) { + c.events = append(c.events, user.NewHumanEmailVerifiedEvent(ctx, c.aggregate)) +} + +// AddGeneratedCode generates a new encrypted code and sets it to the email address. +// When returnCode a plain text of the code will be returned from Push. +func (c *UserEmailEvents) AddGeneratedCode(ctx context.Context, gen crypto.Generator, urlTmpl string, returnCode bool) error { + value, plain, err := crypto.NewCode(gen) + if err != nil { + return err + } + + c.events = append(c.events, user.NewHumanEmailCodeAddedEventV2(ctx, c.aggregate, value, gen.Expiry(), urlTmpl, returnCode)) + if returnCode { + c.plainCode = &plain + } + return nil +} + +func (c *UserEmailEvents) VerifyCode(ctx context.Context, code string, gen crypto.Generator) error { + if code == "" { + return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty") + } + + err := crypto.VerifyCode(c.model.CodeCreationDate, c.model.CodeExpiry, c.model.Code, code, gen) + if err == nil { + c.events = append(c.events, user.NewHumanEmailVerifiedEvent(ctx, c.aggregate)) + return nil + } + _, err = c.eventstore.Push(ctx, user.NewHumanEmailVerificationFailedEvent(ctx, c.aggregate)) + logging.WithFields("id", "COMMAND-Zoo6b", "userID", c.aggregate.ID).OnError(err).Error("NewHumanEmailVerificationFailedEvent push failed") + return caos_errs.ThrowInvalidArgument(err, "COMMAND-eis9R", "Errors.User.Code.Invalid") +} + +// Push all events to the eventstore and Reduce them into the Model. +func (c *UserEmailEvents) Push(ctx context.Context) (*domain.Email, error) { + pushedEvents, err := c.eventstore.Push(ctx, c.events...) + if err != nil { + return nil, err + } + err = AppendAndReduce(c.model, pushedEvents...) + if err != nil { + return nil, err + } + email := writeModelToEmail(c.model) + email.PlainCode = c.plainCode + + return email, nil +} diff --git a/internal/command/user_v2_email_test.go b/internal/command/user_v2_email_test.go new file mode 100644 index 0000000000..9989229efd --- /dev/null +++ b/internal/command/user_v2_email_test.go @@ -0,0 +1,1315 @@ +package command + +import ( + "context" + "testing" + "time" + + "github.com/golang/mock/gomock" + "github.com/muhlemmer/gu" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "golang.org/x/text/language" + + "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/eventstore/repository" + "github.com/zitadel/zitadel/internal/eventstore/v1/models" + "github.com/zitadel/zitadel/internal/repository/instance" + "github.com/zitadel/zitadel/internal/repository/user" +) + +func TestCommands_ChangeUserEmail(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + checkPermission permissionCheck + } + type args struct { + userID string + resourceOwner string + email string + } + tests := []struct { + name string + fields fields + args args + wantErr error + }{ + { + name: "missing permission", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "", + }, + wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"), + }, + { + name: "missing email", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"), + }, + { + name: "not changed", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + }, + wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + checkPermission: tt.fields.checkPermission, + } + _, err := c.ChangeUserEmail(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.email, crypto.CreateMockEncryptionAlg(gomock.NewController(t))) + require.ErrorIs(t, err, tt.wantErr) + // successful cases are tested in TestCommands_changeUserEmailWithGenerator + }) + } +} + +func TestCommands_ChangeUserEmailURLTemplate(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + checkPermission permissionCheck + } + type args struct { + userID string + resourceOwner string + email string + urlTmpl string + } + tests := []struct { + name string + fields fields + args args + wantErr error + }{ + { + name: "invalid template", + fields: fields{ + eventstore: eventstoreExpect(t), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + urlTmpl: "{{", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "USERv2-ooD8p", "Errors.User.Email.InvalidURLTemplate"), + }, + { + name: "permission missing", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", + }, + wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"), + }, + { + name: "not changed", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", + }, + wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + checkPermission: tt.fields.checkPermission, + } + _, err := c.ChangeUserEmailURLTemplate(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.email, crypto.CreateMockEncryptionAlg(gomock.NewController(t)), tt.args.urlTmpl) + require.ErrorIs(t, err, tt.wantErr) + // successful cases are tested in TestCommands_changeUserEmailWithGenerator + }) + } +} + +func TestCommands_ChangeUserEmailReturnCode(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + checkPermission permissionCheck + } + type args struct { + userID string + resourceOwner string + email string + } + tests := []struct { + name string + fields fields + args args + wantErr error + }{ + { + name: "missing permission", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + }, + wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"), + }, + { + name: "missing email", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + checkPermission: tt.fields.checkPermission, + } + _, err := c.ChangeUserEmailReturnCode(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.email, crypto.CreateMockEncryptionAlg(gomock.NewController(t))) + require.ErrorIs(t, err, tt.wantErr) + // successful cases are tested in TestCommands_changeUserEmailWithGenerator + }) + } +} + +func TestCommands_ChangeUserEmailVerified(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + checkPermission permissionCheck + } + type args struct { + userID string + resourceOwner string + email string + } + tests := []struct { + name string + fields fields + args args + want *domain.Email + wantErr error + }{ + { + name: "missing userID", + fields: fields{ + eventstore: eventstoreExpect(t), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "", + resourceOwner: "org1", + email: "email@test.ch", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"), + }, + { + name: "missing permission", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + }, + wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"), + }, + { + name: "missing email", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"), + }, + { + name: "email changed", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailChangedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "email-changed@test.ch", + ), + ), + eventFromEventPusher( + user.NewHumanEmailVerifiedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + ), + ), + }, + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + }, + want: &domain.Email{ + ObjectRoot: models.ObjectRoot{ + AggregateID: "user1", + ResourceOwner: "org1", + }, + EmailAddress: "email-changed@test.ch", + IsEmailVerified: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + checkPermission: tt.fields.checkPermission, + } + got, err := c.ChangeUserEmailVerified(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.email) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, got, tt.want) + }) + } +} + +func TestCommands_changeUserEmailWithGenerator(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + checkPermission permissionCheck + } + type args struct { + userID string + resourceOwner string + email string + returnCode bool + urlTmpl string + } + tests := []struct { + name string + fields fields + args args + want *domain.Email + wantErr error + }{ + { + name: "missing user", + fields: fields{ + eventstore: eventstoreExpect(t), + }, + args: args{ + userID: "", + resourceOwner: "org1", + email: "email@test.ch", + returnCode: false, + urlTmpl: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"), + }, + { + name: "missing permission", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckNotAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + returnCode: false, + urlTmpl: "", + }, + wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"), + }, + { + name: "missing email", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "", + returnCode: false, + urlTmpl: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"), + }, + { + name: "not changed", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email@test.ch", + returnCode: false, + urlTmpl: "", + }, + wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"), + }, + { + name: "email changed", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailChangedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "email-changed@test.ch", + ), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "", false, + ), + ), + }, + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + returnCode: false, + urlTmpl: "", + }, + want: &domain.Email{ + ObjectRoot: models.ObjectRoot{ + AggregateID: "user1", + ResourceOwner: "org1", + }, + EmailAddress: "email-changed@test.ch", + IsEmailVerified: false, + }, + }, + { + name: "email changed, return code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailChangedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "email-changed@test.ch", + ), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "", true, + ), + ), + }, + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + returnCode: true, + urlTmpl: "", + }, + want: &domain.Email{ + ObjectRoot: models.ObjectRoot{ + AggregateID: "user1", + ResourceOwner: "org1", + }, + EmailAddress: "email-changed@test.ch", + IsEmailVerified: false, + PlainCode: gu.Ptr("a"), + }, + }, + { + name: "email changed, URL template", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailChangedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "email-changed@test.ch", + ), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", false, + ), + ), + }, + ), + ), + checkPermission: newMockPermissionCheckAllowed(), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + email: "email-changed@test.ch", + returnCode: false, + urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", + }, + want: &domain.Email{ + ObjectRoot: models.ObjectRoot{ + AggregateID: "user1", + ResourceOwner: "org1", + }, + EmailAddress: "email-changed@test.ch", + IsEmailVerified: false, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + checkPermission: tt.fields.checkPermission, + } + got, err := c.changeUserEmailWithGenerator(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.email, GetMockSecretGenerator(t), tt.args.returnCode, tt.args.urlTmpl) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, got, tt.want) + }) + } +} + +func TestCommands_VerifyUserEmail(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + userID string + resourceOwner string + code string + } + tests := []struct { + name string + fields fields + args args + wantErr error + }{ + { + name: "missing userID", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + ), + }, + args: args{ + userID: "", + resourceOwner: "org1", + code: "a", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"), + }, + { + name: "missing code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + code: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"), + }, + { + name: "wrong code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent(context.Background(), + &instance.NewAggregate("inst1").Aggregate, + domain.SecretGeneratorTypeVerifyEmailCode, + 12, time.Minute, true, true, true, true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "", false, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailVerificationFailedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + ), + ), + }, + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + code: "wrong", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + _, err := c.VerifyUserEmail(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.code, crypto.CreateMockEncryptionAlg(gomock.NewController(t))) + require.ErrorIs(t, err, tt.wantErr) + // successful cases are tested in TestCommands_verifyUserEmailWithGenerator + }) + } +} + +func TestCommands_verifyUserEmailWithGenerator(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + userID string + resourceOwner string + code string + } + tests := []struct { + name string + fields fields + args args + want *domain.ObjectDetails + wantErr error + }{ + { + name: "missing userID", + fields: fields{ + eventstore: eventstoreExpect(t), + }, + args: args{ + userID: "", + resourceOwner: "org1", + code: "a", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"), + }, + { + name: "missing code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + code: "", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"), + }, + { + name: "good code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "", false, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailVerificationFailedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + ), + ), + }, + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + code: "wrong", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"), + }, + { + name: "wrong code", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + eventFromEventPusherWithCreationDateNow( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("a"), + }, + time.Hour*1, + "", false, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + user.NewHumanEmailVerifiedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + ), + ), + }, + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + code: "a", + }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + got, err := c.verifyUserEmailWithGenerator(context.Background(), tt.args.userID, tt.args.resourceOwner, tt.args.code, GetMockSecretGenerator(t)) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, got, tt.want) + }) + } +} + +func TestCommands_NewUserEmailEvents(t *testing.T) { + type fields struct { + eventstore *eventstore.Eventstore + } + type args struct { + userID string + resourceOwner string + } + tests := []struct { + name string + fields fields + args args + wantErr error + }{ + { + name: "missing userID", + fields: fields{ + eventstore: eventstoreExpect(t), + }, + args: args{ + userID: "", + resourceOwner: "org1", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"), + }, + { + name: "not found", + fields: fields{ + eventstore: eventstoreExpect(t, expectFilter()), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + }, + wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound"), + }, + { + name: "user not initialized", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "username", + "firstname", + "lastname", + "nickname", + "displayname", + language.German, + domain.GenderUnspecified, + "email@test.ch", + true, + ), + ), + eventFromEventPusher( + user.NewHumanInitialCodeAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + nil, time.Hour*1, + ), + ), + ), + ), + }, + args: args{ + userID: "user1", + resourceOwner: "org1", + }, + wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &Commands{ + eventstore: tt.fields.eventstore, + } + _, err := c.NewUserEmailEvents(context.Background(), tt.args.userID, tt.args.resourceOwner) + require.ErrorIs(t, err, tt.wantErr) + // successful cases are tested in TestCommands_changeUserEmailWithGenerator + }) + } +} diff --git a/internal/domain/human_email.go b/internal/domain/human_email.go index 18bf0440d0..578c9fe220 100644 --- a/internal/domain/human_email.go +++ b/internal/domain/human_email.go @@ -1,12 +1,15 @@ package domain import ( + "io" "regexp" "strings" + "text/template" "time" "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/errors" + caos_errs "github.com/zitadel/zitadel/internal/errors" es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models" ) @@ -35,6 +38,8 @@ type Email struct { EmailAddress EmailAddress IsEmailVerified bool + // PlainCode is set by the command and can be used to return it to the caller (API) + PlainCode *string } type EmailCode struct { @@ -51,13 +56,36 @@ func (e *Email) Validate() error { return e.EmailAddress.Validate() } -func NewEmailCode(emailGenerator crypto.Generator) (*EmailCode, error) { - emailCodeCrypto, _, err := crypto.NewCode(emailGenerator) +func NewEmailCode(emailGenerator crypto.Generator) (*EmailCode, string, error) { + emailCodeCrypto, code, err := crypto.NewCode(emailGenerator) if err != nil { - return nil, err + return nil, "", err } return &EmailCode{ Code: emailCodeCrypto, Expiry: emailGenerator.Expiry(), - }, nil + }, code, nil +} + +type ConfirmURLData struct { + UserID string + Code string + OrgID string +} + +// RenderConfirmURLTemplate parses and renders tmplStr. +// userID, code and orgID are passed into the [ConfirmURLData]. +// "%s%s?userID=%s&code=%s&orgID=%s" +func RenderConfirmURLTemplate(w io.Writer, tmplStr, userID, code, orgID string) error { + tmpl, err := template.New("").Parse(tmplStr) + if err != nil { + return caos_errs.ThrowInvalidArgument(err, "USERv2-ooD8p", "Errors.User.Email.InvalidURLTemplate") + } + + data := &ConfirmURLData{userID, code, orgID} + if err = tmpl.Execute(w, data); err != nil { + return caos_errs.ThrowInvalidArgument(err, "USERv2-ohSi5", "Errors.User.Email.InvalidURLTemplate") + } + + return nil } diff --git a/internal/domain/human_email_test.go b/internal/domain/human_email_test.go index c516ade47d..f77ba6d5c2 100644 --- a/internal/domain/human_email_test.go +++ b/internal/domain/human_email_test.go @@ -1,7 +1,13 @@ package domain import ( + "strings" "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + caos_errs "github.com/zitadel/zitadel/internal/errors" ) func TestEmailValid(t *testing.T) { @@ -72,3 +78,57 @@ func TestEmailValid(t *testing.T) { }) } } + +func TestRenderConfirmURLTemplate(t *testing.T) { + type args struct { + tmplStr string + userID string + code string + orgID string + } + tests := []struct { + name string + args args + want string + wantErr error + }{ + { + name: "invalid template", + args: args{ + tmplStr: "{{", + userID: "user1", + code: "123", + orgID: "org1", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "USERv2-ooD8p", "Errors.User.Email.InvalidURLTemplate"), + }, + { + name: "execution error", + args: args{ + tmplStr: "{{.Foo}}", + userID: "user1", + code: "123", + orgID: "org1", + }, + wantErr: caos_errs.ThrowInvalidArgument(nil, "USERv2-ohSi5", "Errors.User.Email.InvalidURLTemplate"), + }, + { + name: "success", + args: args{ + tmplStr: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", + userID: "user1", + code: "123", + orgID: "org1", + }, + want: "https://example.com/email/verify?userID=user1&code=123&orgID=org1", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var w strings.Builder + err := RenderConfirmURLTemplate(&w, tt.args.tmplStr, tt.args.userID, tt.args.code, tt.args.orgID) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, tt.want, w.String()) + }) + } +} diff --git a/internal/notification/handlers/usernotifier.go b/internal/notification/handlers/usernotifier.go index 542e9287bc..9a779c6cdc 100644 --- a/internal/notification/handlers/usernotifier.go +++ b/internal/notification/handlers/usernotifier.go @@ -182,6 +182,10 @@ func (u *userNotifier) reduceEmailCodeAdded(event eventstore.Event) (*handler.St if !ok { return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SWf3g", "reduce.wrong.event.type %s", user.HumanEmailCodeAddedType) } + if e.CodeReturned { + return crdb.NewNoOpStatement(e), nil + } + ctx := HandlerContext(event.Aggregate()) alreadyHandled, err := u.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, user.UserV1EmailCodeAddedType, user.UserV1EmailCodeSentType, @@ -232,7 +236,7 @@ func (u *userNotifier) reduceEmailCodeAdded(event eventstore.Event) (*handler.St e, u.metricSuccessfulDeliveriesEmail, u.metricFailedDeliveriesEmail, - ).SendEmailVerificationCode(notifyUser, origin, code) + ).SendEmailVerificationCode(notifyUser, origin, code, e.URLTemplate) if err != nil { return nil, err } diff --git a/internal/notification/types/email_verification_code.go b/internal/notification/types/email_verification_code.go index 5f4ab071fb..112da75ddf 100644 --- a/internal/notification/types/email_verification_code.go +++ b/internal/notification/types/email_verification_code.go @@ -1,13 +1,25 @@ package types import ( + "strings" + "github.com/zitadel/zitadel/internal/api/ui/login" "github.com/zitadel/zitadel/internal/domain" "github.com/zitadel/zitadel/internal/query" ) -func (notify Notify) SendEmailVerificationCode(user *query.NotifyUser, origin, code string) error { - url := login.MailVerificationLink(origin, user.ID, code, user.ResourceOwner) +func (notify Notify) SendEmailVerificationCode(user *query.NotifyUser, origin, code string, urlTmpl string) error { + var url string + if urlTmpl == "" { + url = login.MailVerificationLink(origin, user.ID, code, user.ResourceOwner) + } else { + var buf strings.Builder + if err := domain.RenderConfirmURLTemplate(&buf, urlTmpl, user.ID, code, user.ResourceOwner); err != nil { + return err + } + url = buf.String() + } + args := make(map[string]interface{}) args["Code"] = code return notify(url, args, domain.VerifyEmailMessageType, true) diff --git a/internal/notification/types/email_verification_code_test.go b/internal/notification/types/email_verification_code_test.go new file mode 100644 index 0000000000..0e1975fbc3 --- /dev/null +++ b/internal/notification/types/email_verification_code_test.go @@ -0,0 +1,107 @@ +package types + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/zitadel/zitadel/internal/domain" + caos_errs "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/query" +) + +func TestNotify_SendEmailVerificationCode(t *testing.T) { + type res struct { + url string + args map[string]interface{} + messageType string + allowUnverifiedNotificationChannel bool + } + notify := func(dst *res) Notify { + return func( + url string, + args map[string]interface{}, + messageType string, + allowUnverifiedNotificationChannel bool, + ) error { + dst.url = url + dst.args = args + dst.messageType = messageType + dst.allowUnverifiedNotificationChannel = allowUnverifiedNotificationChannel + return nil + } + } + + type args struct { + user *query.NotifyUser + origin string + code string + urlTmpl string + } + tests := []struct { + name string + args args + want *res + wantErr error + }{ + { + name: "default URL", + args: args{ + user: &query.NotifyUser{ + ID: "user1", + ResourceOwner: "org1", + }, + origin: "https://example.com", + code: "123", + urlTmpl: "", + }, + want: &res{ + url: "https://example.com/ui/login/mail/verification?userID=user1&code=123&orgID=org1", + args: map[string]interface{}{"Code": "123"}, + messageType: domain.VerifyEmailMessageType, + allowUnverifiedNotificationChannel: true, + }, + }, + { + name: "template error", + args: args{ + user: &query.NotifyUser{ + ID: "user1", + ResourceOwner: "org1", + }, + origin: "https://example.com", + code: "123", + urlTmpl: "{{", + }, + want: &res{}, + wantErr: caos_errs.ThrowInvalidArgument(nil, "USERv2-ooD8p", "Errors.User.Email.InvalidURLTemplate"), + }, + { + name: "template success", + args: args{ + user: &query.NotifyUser{ + ID: "user1", + ResourceOwner: "org1", + }, + origin: "https://example.com", + code: "123", + urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}", + }, + want: &res{ + url: "https://example.com/email/verify?userID=user1&code=123&orgID=org1", + args: map[string]interface{}{"Code": "123"}, + messageType: domain.VerifyEmailMessageType, + allowUnverifiedNotificationChannel: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := new(res) + err := notify(got).SendEmailVerificationCode(tt.args.user, tt.args.origin, tt.args.code, tt.args.urlTmpl) + require.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, tt.want, got) + }) + } +} diff --git a/internal/protoc/protoc-gen-auth/auth_method_mapping.go.tmpl b/internal/protoc/protoc-gen-auth/auth_method_mapping.go.tmpl new file mode 100644 index 0000000000..fc47ff49e8 --- /dev/null +++ b/internal/protoc/protoc-gen-auth/auth_method_mapping.go.tmpl @@ -0,0 +1,16 @@ +// Code generated by protoc-gen-auth. DO NOT EDIT. + +package {{.GoPackageName}} + +import ( + "github.com/zitadel/zitadel/internal/api/authz" +) + +var {{.ServiceName}}_AuthMethods = authz.MethodMapping { + {{ range $m := .AuthOptions}} + {{$.ServiceName}}_{{$m.Name}}_FullMethodName: authz.Option{ + Permission: "{{$m.Permission}}", + CheckParam: "{{$m.CheckFieldName}}", + }, + {{ end}} +} diff --git a/internal/protoc/protoc-gen-auth/main.go b/internal/protoc/protoc-gen-auth/main.go new file mode 100644 index 0000000000..b0e78c6990 --- /dev/null +++ b/internal/protoc/protoc-gen-auth/main.go @@ -0,0 +1,97 @@ +package main + +import ( + "bytes" + _ "embed" + "fmt" + "io" + "os" + "text/template" + + "google.golang.org/protobuf/compiler/protogen" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/descriptorpb" + "google.golang.org/protobuf/types/pluginpb" + + "github.com/zitadel/zitadel/internal/protoc/protoc-gen-authoption/authoption" +) + +var ( + //go:embed auth_method_mapping.go.tmpl + authTemplate []byte +) + +type authMethods struct { + GoPackageName string + ProtoPackageName string + ServiceName string + AuthOptions []authOption +} + +type authOption struct { + Name string + Permission string + CheckFieldName string +} + +func main() { + + input, _ := io.ReadAll(os.Stdin) + var req pluginpb.CodeGeneratorRequest + err := proto.Unmarshal(input, &req) + if err != nil { + panic(err) + } + + opts := protogen.Options{} + plugin, err := opts.New(&req) + if err != nil { + panic(err) + } + plugin.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL) + + authTemp := loadTemplate(authTemplate) + + for _, file := range plugin.Files { + + var buf bytes.Buffer + + var methods authMethods + for _, service := range file.Services { + methods.ServiceName = service.GoName + methods.GoPackageName = string(file.GoPackageName) + methods.ProtoPackageName = *file.Proto.Package + for _, method := range service.Methods { + if options := method.Desc.Options().(*descriptorpb.MethodOptions); options != nil { + ext := proto.GetExtension(options, authoption.E_AuthOption).(*authoption.AuthOption) + if ext != nil { + methods.AuthOptions = append(methods.AuthOptions, authOption{Name: string(method.Desc.Name()), Permission: ext.Permission, CheckFieldName: ext.CheckFieldName}) + } + } + } + } + if len(methods.AuthOptions) > 0 { + authTemp.Execute(&buf, &methods) + + filename := file.GeneratedFilenamePrefix + ".pb.authoptions.go" + file := plugin.NewGeneratedFile(filename, ".") + + file.Write(buf.Bytes()) + } + } + + // Generate a response from our plugin and marshall as protobuf + stdout := plugin.Response() + out, err := proto.Marshal(stdout) + if err != nil { + panic(err) + } + + // Write the response to stdout, to be picked up by protoc + fmt.Fprintf(os.Stdout, string(out)) +} + +func loadTemplate(templateData []byte) *template.Template { + return template.Must(template.New(""). + Parse(string(templateData))) +} diff --git a/internal/protoc/protoc-gen-authoption/README.md b/internal/protoc/protoc-gen-authoption/README.md deleted file mode 100644 index 793c575692..0000000000 --- a/internal/protoc/protoc-gen-authoption/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# protoc-gen-authoption - -Proto options to annotate auth methods in protos - -## Generate protos/templates -protos: `go generate authoption/generate.go` -templates/install: `go generate generate.go` - -## Usage -``` -// proto file -import "authoption/options.proto"; - -service MyService { - - rpc Hello(Hello) returns (google.protobuf.Empty) { - option (google.api.http) = { - get: "/hello" - }; - - option (caos.zitadel.utils.v1.auth_option) = { - zitadel_permission: "hello.read" - zitadel_check_param: "id" - }; - } - - message Hello { - string id = 1; - } -} -``` -Caos Auth Option is used for granting groups -On each zitadel role is specified which auth methods are allowed to call - -Get protoc-get-authoption: ``go get github.com/zitadel/zitadel/internal/protoc/protoc-gen-authoption`` - -Protc-Flag: ``--authoption_out=.`` \ No newline at end of file diff --git a/internal/protoc/protoc-gen-authoption/generate.go b/internal/protoc/protoc-gen-authoption/generate.go deleted file mode 100644 index 3278b63e6f..0000000000 --- a/internal/protoc/protoc-gen-authoption/generate.go +++ /dev/null @@ -1,4 +0,0 @@ -package main - -//go:generate go-bindata -pkg main -o templates.gen.go templates -//go:generate go install diff --git a/internal/protoc/protoc-gen-authoption/main.go b/internal/protoc/protoc-gen-authoption/main.go deleted file mode 100644 index 5e4cbd683e..0000000000 --- a/internal/protoc/protoc-gen-authoption/main.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - base "github.com/zitadel/zitadel/internal/protoc/protoc-base" - "github.com/zitadel/zitadel/internal/protoc/protoc-gen-authoption/authoption" -) - -const ( - fileName = "%v.pb.authoptions.go" -) - -func main() { - base.RegisterExtension(authoption.E_AuthOption) - base.RunWithBaseTemplate(fileName, base.LoadTemplate(templatesAuth_method_mappingGoTmplBytes())) -} diff --git a/internal/protoc/protoc-gen-authoption/templates/auth_method_mapping.go.tmpl b/internal/protoc/protoc-gen-authoption/templates/auth_method_mapping.go.tmpl deleted file mode 100644 index bd6fe3b881..0000000000 --- a/internal/protoc/protoc-gen-authoption/templates/auth_method_mapping.go.tmpl +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by protoc-gen-authmethod. DO NOT EDIT. - -package {{.File.GoPkg.Name}} - - -import ( - "google.golang.org/grpc" - - "github.com/zitadel/zitadel/internal/api/authz" - "github.com/zitadel/zitadel/internal/api/grpc/server/middleware" -) - -{{ range $s := .File.Services }} - -/** - * {{$s.Name}} - */ - -const {{$s.Name}}_MethodPrefix = "{{$.File.Package}}.{{$s.Name}}" - -var {{$s.Name}}_AuthMethods = authz.MethodMapping { - {{ range $m := $s.Method}} - {{ $mAuthOpt := option $m.Options "zitadel.v1.auth_option" }} - {{ if and $mAuthOpt $mAuthOpt.Permission }} - "/{{$.File.Package}}.{{$s.Name}}/{{.Name}}": authz.Option{ - Permission: "{{$mAuthOpt.Permission}}", - CheckParam: "{{$mAuthOpt.CheckFieldName}}", - }, - {{end}} - {{ end}} -} - -{{ end }} diff --git a/internal/repository/user/human_email.go b/internal/repository/user/human_email.go index 5732a7cac0..a6a5b8a18e 100644 --- a/internal/repository/user/human_email.go +++ b/internal/repository/user/human_email.go @@ -19,6 +19,7 @@ const ( HumanEmailVerificationFailedType = emailEventPrefix + "verification.failed" HumanEmailCodeAddedType = emailEventPrefix + "code.added" HumanEmailCodeSentType = emailEventPrefix + "code.sent" + HumanEmailConfirmURLAddedType = emailEventPrefix + "confirm_url.added" ) type HumanEmailChangedEvent struct { @@ -121,8 +122,10 @@ func HumanEmailVerificationFailedEventMapper(event *repository.Event) (eventstor type HumanEmailCodeAddedEvent struct { eventstore.BaseEvent `json:"-"` - Code *crypto.CryptoValue `json:"code,omitempty"` - Expiry time.Duration `json:"expiry,omitempty"` + Code *crypto.CryptoValue `json:"code,omitempty"` + Expiry time.Duration `json:"expiry,omitempty"` + URLTemplate string `json:"url_template,omitempty"` + CodeReturned bool `json:"code_returned,omitempty"` } func (e *HumanEmailCodeAddedEvent) Data() interface{} { @@ -137,15 +140,29 @@ func NewHumanEmailCodeAddedEvent( ctx context.Context, aggregate *eventstore.Aggregate, code *crypto.CryptoValue, - expiry time.Duration) *HumanEmailCodeAddedEvent { + expiry time.Duration, +) *HumanEmailCodeAddedEvent { + return NewHumanEmailCodeAddedEventV2(ctx, aggregate, code, expiry, "", false) +} + +func NewHumanEmailCodeAddedEventV2( + ctx context.Context, + aggregate *eventstore.Aggregate, + code *crypto.CryptoValue, + expiry time.Duration, + urlTemplate string, + codeReturned bool, +) *HumanEmailCodeAddedEvent { return &HumanEmailCodeAddedEvent{ BaseEvent: *eventstore.NewBaseEventForPush( ctx, aggregate, HumanEmailCodeAddedType, ), - Code: code, - Expiry: expiry, + Code: code, + Expiry: expiry, + URLTemplate: urlTemplate, + CodeReturned: codeReturned, } } diff --git a/internal/static/i18n/de.yaml b/internal/static/i18n/de.yaml index ebd123f1c4..9cf6f96f40 100644 --- a/internal/static/i18n/de.yaml +++ b/internal/static/i18n/de.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: Email wurde nicht geändert Empty: Email ist leer IDMissing: Email ID fehlt + InvalidURLTemplate: URL Template ist ungültig Phone: NotFound: Telefonnummer nicht gefunden Invalid: Telefonnummer ist ungültig diff --git a/internal/static/i18n/en.yaml b/internal/static/i18n/en.yaml index 6049ea0ed3..c5d3c36b2c 100644 --- a/internal/static/i18n/en.yaml +++ b/internal/static/i18n/en.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: Email not changed Empty: Email is empty IDMissing: Email ID is missing + InvalidURLTemplate: URL Template is invalid Phone: NotFound: Phone not found Invalid: Phone is invalid diff --git a/internal/static/i18n/es.yaml b/internal/static/i18n/es.yaml index 7ac109b3d6..63ffb3981c 100644 --- a/internal/static/i18n/es.yaml +++ b/internal/static/i18n/es.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: El email no ha cambiado Empty: El email no está vacío IDMissing: Falta el ID del email + InvalidURLTemplate: La plantilla URL no es válida Phone: NotFound: Teléfono no encontrado Invalid: El teléfono no es válido diff --git a/internal/static/i18n/fr.yaml b/internal/static/i18n/fr.yaml index 77043e07a5..184cd83f06 100644 --- a/internal/static/i18n/fr.yaml +++ b/internal/static/i18n/fr.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: L'adresse électronique n'a pas changé Empty: Email est vide IDMissing: Email ID manquant + InvalidURLTemplate: Le modèle d'URL n'est pas valide Phone: Notfound: Téléphone non trouvé Invalid: Le téléphone n'est pas valide diff --git a/internal/static/i18n/it.yaml b/internal/static/i18n/it.yaml index 426d0f4537..1f9056cf5f 100644 --- a/internal/static/i18n/it.yaml +++ b/internal/static/i18n/it.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: Email non cambiata Empty: Email è vuota IDMissing: Email ID mancante + InvalidURLTemplate: Il modello di URL non è valido Phone: NotFound: Telefono non trovato Invalid: Il telefono non è valido diff --git a/internal/static/i18n/ja.yaml b/internal/static/i18n/ja.yaml index 7c07972e1b..8f347b02d1 100644 --- a/internal/static/i18n/ja.yaml +++ b/internal/static/i18n/ja.yaml @@ -76,6 +76,7 @@ Errors: Invalid: 無効なメールアドレスです AlreadyVerified: メールアドレスはすでに検証済みです NotChanged: メールアドレスが変更されていません + InvalidURLTemplate: URLテンプレートが無効です Phone: NotFound: 電話番号が見つかりません Invalid: 無効な電話番号です diff --git a/internal/static/i18n/pl.yaml b/internal/static/i18n/pl.yaml index 4f69639a7a..0ef614bff8 100644 --- a/internal/static/i18n/pl.yaml +++ b/internal/static/i18n/pl.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: Adres e-mail nie zmieniony Empty: Adres e-mail jest pusty IDMissing: Adres e-mail ID brakuje + InvalidURLTemplate: Szablon URL jest nieprawidłowy Phone: NotFound: Numer telefonu nie znaleziony Invalid: Numer telefonu jest nieprawidłowy diff --git a/internal/static/i18n/zh.yaml b/internal/static/i18n/zh.yaml index 96b731f6bf..31c679ea21 100644 --- a/internal/static/i18n/zh.yaml +++ b/internal/static/i18n/zh.yaml @@ -81,6 +81,7 @@ Errors: NotChanged: 电子邮件未更改 Empty: 电子邮件是空的 IDMissing: 电子邮件ID丢失 + InvalidURLTemplate: URL模板无效 Phone: NotFound: 手机号码未找到 Invalid: 手机号码无效 diff --git a/proto/zitadel/admin.proto b/proto/zitadel/admin.proto index da7ccb4e48..1424d7cd29 100644 --- a/proto/zitadel/admin.proto +++ b/proto/zitadel/admin.proto @@ -2801,7 +2801,7 @@ service AdminService { rpc ResetCustomPasswordResetMessageTextToDefault(ResetCustomPasswordResetMessageTextToDefaultRequest) returns (ResetCustomPasswordResetMessageTextToDefaultResponse) { option (google.api.http) = { - delete: "/text/message/verifyemail/{language}" + delete: "/text/message/passwordreset/{language}" }; option (zitadel.v1.auth_option) = { diff --git a/proto/zitadel/management.proto b/proto/zitadel/management.proto index 1c92cffd83..cf055e4a55 100644 --- a/proto/zitadel/management.proto +++ b/proto/zitadel/management.proto @@ -5588,7 +5588,7 @@ service ManagementService { rpc ResetCustomPasswordResetMessageTextToDefault(ResetCustomPasswordResetMessageTextToDefaultRequest) returns (ResetCustomPasswordResetMessageTextToDefaultResponse) { option (google.api.http) = { - delete: "/text/message/verifyemail/{language}" + delete: "/text/message/passwordreset/{language}" }; option (zitadel.v1.auth_option) = { diff --git a/proto/zitadel/object/v2alpha/object.proto b/proto/zitadel/object/v2alpha/object.proto new file mode 100644 index 0000000000..c11b122575 --- /dev/null +++ b/proto/zitadel/object/v2alpha/object.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package zitadel.object.v2alpha; + +option go_package = "github.com/zitadel/zitadel/pkg/grpc/object/v2alpha;object"; + +import "google/protobuf/timestamp.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; + +message OrgContext { + oneof ctx { + string org_id = 1; + string org_domain = 2; + } +} + +message Details { + //sequence represents the order of events. It's always counting + // + // on read: the sequence of the last event reduced by the projection + // + // on manipulation: the timestamp of the event(s) added by the manipulation + uint64 sequence = 1 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"2\""; + } + ]; + //change_date is the timestamp when the object was changed + // + // on read: the timestamp of the last event reduced by the projection + // + // on manipulation: the timestamp of the event(s) added by the manipulation + google.protobuf.Timestamp change_date = 2; + //resource_owner is the organization or instance_id an object belongs to + string resource_owner = 3 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"69629023906488334\""; + } + ]; +} diff --git a/proto/zitadel/user/v2alpha/email.proto b/proto/zitadel/user/v2alpha/email.proto new file mode 100644 index 0000000000..daa744fe14 --- /dev/null +++ b/proto/zitadel/user/v2alpha/email.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; + +package zitadel.user.v2alpha; + +option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha;user"; + +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +import "validate/validate.proto"; + + +message SendEmailVerificationCode { + optional string url_template = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}\""; + description: "\"Optionally set a url_template, which will be used in the verification mail sent by ZITADEL to guide the user to your verification page. If no template is set, the default ZITADEL url will be used.\"" + } + ]; +} + +message ReturnEmailVerificationCode {} + diff --git a/proto/zitadel/user/v2alpha/user_service.proto b/proto/zitadel/user/v2alpha/user_service.proto index f16bb8ecfa..a9a1f26d49 100644 --- a/proto/zitadel/user/v2alpha/user_service.proto +++ b/proto/zitadel/user/v2alpha/user_service.proto @@ -3,39 +3,32 @@ syntax = "proto3"; package zitadel.user.v2alpha; import "zitadel/options.proto"; -import "zitadel/user/v2alpha/user.proto"; +import "zitadel/object/v2alpha/object.proto"; +import "zitadel/user/v2alpha/email.proto"; import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha;user"; service UserService { - // TestGet simply demonstrates how the context (org, instance) could be handled in a GET request // - // - // this request is subject to change and currently used for demonstration only - rpc TestGet (TestGetRequest) returns (TestGetResponse) { + rpc SetEmail (SetEmailRequest) returns (SetEmailResponse) { option (google.api.http) = { - get: "/v2alpha/users/test" - }; - } - - // TestPOST simply demonstrates how the context (org, instance) could be handled in a POST request - // - // this request is subject to change and currently used for demonstration only - rpc TestPost (TestPostRequest) returns (TestPostResponse) { - option (google.api.http) = { - post: "/v2alpha/users/test" + post: "/v2alpha/users/{user_id}/email" body: "*" }; + + option (zitadel.v1.auth_option) = { + permission: "authenticated" + }; } - // TestAuth demonstrates how the context (org, instance) could be handled in combination of the authorized context - // - // this request is subject to change and currently used for demonstration only - rpc TestAuth (TestAuthRequest) returns (TestAuthResponse) { + rpc VerifyEmail (VerifyEmailRequest) returns (VerifyEmailResponse) { option (google.api.http) = { - get: "/v2alpha/users/test_auth" + post: "/v2alpha/users/{user_id}/email/_verify" + body: "*" }; option (zitadel.v1.auth_option) = { @@ -44,35 +37,61 @@ service UserService { } } -message TestGetRequest{ - Context ctx = 1; -} - -message TestGetResponse{ - string ctx = 1; -} - -message TestPostRequest{ - Context ctx = 1; -} - -message TestPostResponse{ - string ctx = 1; -} - -message TestAuthRequest{ - Context ctx = 1; -} - -message TestAuthResponse{ - User user = 1; - Context ctx = 2; -} - -message Context { - oneof ctx { - bool instance = 1; - string org_id = 2; - string org_domain = 3; +message SetEmailRequest{ + string user_id = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"69629026806489455\""; + } + ]; + string email = 2 [ + (validate.rules).string = {min_len: 1, max_len: 200, email: true}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"mini@mouse.com\""; + } + ]; + // if no verification is specified, an email is sent with the default url + oneof verification { + SendEmailVerificationCode send_code = 3; + ReturnEmailVerificationCode return_code = 4; + bool is_verified = 5 [(validate.rules).bool.const = true]; } } + +message SetEmailResponse{ + zitadel.object.v2alpha.Details details = 1; + // in case the verification was set to return_code, the code will be returned + optional string verification_code = 2; +} + +message VerifyEmailRequest{ + string user_id = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"69629026806489455\""; + } + ]; + string verification_code = 2 [ + (validate.rules).string = {min_len: 1, max_len: 20}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 20; + example: "\"SKJd342k\""; + description: "\"the verification code generated during the set email request\""; + } + ]; +} + +message VerifyEmailResponse{ + zitadel.object.v2alpha.Details details = 1; +} diff --git a/tools/go.mod b/tools/go.mod index 604ee5704d..b2135488f2 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -3,17 +3,28 @@ module github.com/zitadel/zitadel/tools go 1.15 require ( - github.com/envoyproxy/protoc-gen-validate v0.6.1 + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/sprig v2.22.0+incompatible // indirect + github.com/envoyproxy/protoc-gen-validate v0.10.1 github.com/go-bindata/go-bindata/v3 v3.1.3 - github.com/golang/mock v1.4.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 - github.com/iancoleman/strcase v0.1.3 // indirect - github.com/kisielk/errcheck v1.5.0 // indirect - github.com/lyft/protoc-gen-star v0.5.2 // indirect - github.com/pseudomuto/protoc-gen-doc v1.4.1 + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.1.1 // indirect + github.com/golang/mock v1.6.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 + github.com/huandu/xstrings v1.4.0 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/kisielk/errcheck v1.6.3 // indirect + github.com/lyft/protoc-gen-star/v2 v2.0.3 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mwitkow/go-proto-validators v0.3.2 // indirect + github.com/pseudomuto/protoc-gen-doc v1.5.1 + github.com/pseudomuto/protokit v0.2.1 // indirect github.com/rakyll/statik v0.1.7 - github.com/spf13/afero v1.5.1 // indirect - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 - google.golang.org/protobuf v1.26.0 - gopkg.in/yaml.v2 v2.4.0 // indirect + github.com/spf13/afero v1.9.5 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/tools v0.8.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 + google.golang.org/protobuf v1.30.0 ) diff --git a/tools/go.sum b/tools/go.sum index e087e3f397..98976a176f 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -3,6 +3,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -13,62 +14,681 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.15.0+incompatible h1:0gSxPGWS9PAr7U2NsQ2YQg6juRDINkUyuvbb4b2Xm8w= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aokoli/goutils v1.0.1 h1:7fpzNGoJ3VA8qcrm++XEE1QUe0mIwNeLa02Nwq7RDkg= github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.1 h1:4CF52PCseTFt4bE+Yk3dIpdVi7XWuPVMhPtm4FaIJPM= -github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-bindata/go-bindata/v3 v3.1.3 h1:F0nVttLC3ws0ojc7p60veTurcOm//D4QBODNM7EGrCI= github.com/go-bindata/go-bindata/v3 v3.1.3/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= +github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -78,8 +698,11 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -95,10 +718,15 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -106,11 +734,20 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -118,93 +755,201 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 h1:HlJcTiqGHvaWDG7/s85d68Kw7G7FqMz+9LlcyVauOAw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0/go.mod h1:gRq9gZWcIFvz68EgWqy2qQpRbmtn5j2qLZ4zHjqiLpg= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 h1:gDLXvp5S9izjldquuoAhDzccbskOL6tDC5jMSyx3zxE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2/go.mod h1:7pdNwVWBBHGiCxa9lAszqCJMbfTISJ7oMftp8+UGV08= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/huandu/xstrings v1.0.0 h1:pO2K/gKgKaat5LdpAhxhluX2GPQMaI3W5FUz/I/UnWk= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/iancoleman/strcase v0.1.3 h1:dJBk1m2/qjL1twPLf68JND55vvivMupZ4wIzE8CTdBw= -github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= +github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.4 h1:mKkfHkZWD8dC7WxKx3N9WCF0Y+dLau45704YQmY6H94= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= +github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= -github.com/lyft/protoc-gen-star v0.5.2 h1:ICQPpOr4uO46eme1Y5Jj0fnJkc9/upQ9xxt0+2AmUDQ= -github.com/lyft/protoc-gen-star v0.5.2/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= -github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007 h1:28i1IjGcx8AofiB4N3q5Yls55VEaitzuEPkFJEVgGkA= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3 h1:/3+/2sWyXeMLzKd1bX+ixWKgEMsULrIivpDsuaF441o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.3.2 h1:qRlmpTzm2pstMKKzTdvwPCF5QfBNURSlAgN/R+qbKos= +github.com/mwitkow/go-proto-validators v0.3.2/go.mod h1:ej0Qp0qMgHN/KtDyUt+Q1/tA7a5VarXUOUxD+oeD30w= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/pseudomuto/protoc-gen-doc v1.4.1 h1:aNTZq0dy0Pq2ag2v7bhNKFNgBBA8wMCoJSChhd7RciE= -github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg= -github.com/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqXnvAufg061w= +github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/pseudomuto/protokit v0.2.1 h1:kCYpE3thoR6Esm0CUvd5xbrDTOZPvQPTDeyXpZfrJdk= +github.com/pseudomuto/protokit v0.2.1/go.mod h1:gt7N5Rz2flBzYafvaxyIxMZC0TTF5jDZfRnw25hAAyo= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.5.1 h1:VHu76Lk0LSP1x254maIu2bplkWpfBWI+B+6fdoZprcg= -github.com/spf13/afero v1.5.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -214,8 +959,10 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -223,8 +970,19 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -250,23 +1008,84 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -280,6 +1099,7 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -291,20 +1111,94 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -317,6 +1211,7 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -339,18 +1234,49 @@ golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d h1:W07d4xkoAUSNOkOzdzXCdFGxT7o2rW4q8M34tB2i//k= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -367,14 +1293,57 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180427144745-86e600f69ee4/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -397,14 +1366,117 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea h1:N98SvVh7Hdle2lgUVFuIkf0B3u29CUakMUQa7Hwz8Wc= -google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -417,11 +1489,37 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -433,18 +1531,24 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -452,6 +1556,42 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From 13f6b4686a7745f4b3f2cfe8c9767a76fbb85c40 Mon Sep 17 00:00:00 2001 From: Silvan Date: Tue, 25 Apr 2023 10:12:53 +0200 Subject: [PATCH 11/23] fix(setup): smaller transactions (#5742) --- cmd/setup/10.go | 48 ++++++++++++++++++++++---------------------- cmd/setup/10.sql | 2 -- cmd/setup/config.go | 20 +++++++++--------- cmd/setup/setup.go | 4 ++-- cmd/setup/steps.yaml | 2 ++ 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/cmd/setup/10.go b/cmd/setup/10.go index 77db7c6c5e..4efccc6537 100644 --- a/cmd/setup/10.go +++ b/cmd/setup/10.go @@ -2,8 +2,11 @@ package setup import ( "context" + "database/sql" _ "embed" + "time" + "github.com/cockroachdb/cockroach-go/v2/crdb" "github.com/zitadel/logging" "github.com/zitadel/zitadel/internal/database" @@ -15,35 +18,32 @@ var ( ) type CorrectCreationDate struct { - dbClient *database.DB + dbClient *database.DB + FailAfter time.Duration } func (mig *CorrectCreationDate) Execute(ctx context.Context) (err error) { - tx, err := mig.dbClient.Begin() - if err != nil { - return err - } - if mig.dbClient.Type() == "cockroach" { - if _, err := tx.Exec("SET experimental_enable_temp_tables=on"); err != nil { - return err - } - } - defer func() { - if err != nil { - logging.OnError(tx.Rollback()).Debug("rollback failed") - return - } - err = tx.Commit() - }() + ctx, cancel := context.WithTimeout(ctx, mig.FailAfter) + defer cancel() + for { - res, err := tx.ExecContext(ctx, correctCreationDate10) - if err != nil { - return err - } - affected, _ := res.RowsAffected() - logging.WithFields("count", affected).Info("creation dates changed") - if affected == 0 { + var affected int64 + err = crdb.ExecuteTx(ctx, mig.dbClient.DB, nil, func(tx *sql.Tx) error { + if mig.dbClient.Type() == "cockroach" { + if _, err := tx.Exec("SET experimental_enable_temp_tables=on"); err != nil { + return err + } + } + res, err := tx.ExecContext(ctx, correctCreationDate10) + if err != nil { + return err + } + affected, _ = res.RowsAffected() + logging.WithFields("count", affected).Info("creation dates changed") return nil + }) + if affected == 0 || err != nil { + return err } } } diff --git a/cmd/setup/10.sql b/cmd/setup/10.sql index 27853f55a7..591d0b3d88 100644 --- a/cmd/setup/10.sql +++ b/cmd/setup/10.sql @@ -5,8 +5,6 @@ CREATE temporary TABLE IF NOT EXISTS wrong_events ( , next_cd TIMESTAMPTZ ); -TRUNCATE wrong_events; - INSERT INTO wrong_events ( SELECT * FROM ( SELECT diff --git a/cmd/setup/config.go b/cmd/setup/config.go index eb55ba492a..dc75d54048 100644 --- a/cmd/setup/config.go +++ b/cmd/setup/config.go @@ -56,16 +56,16 @@ func MustNewConfig(v *viper.Viper) *Config { } type Steps struct { - s1ProjectionTable *ProjectionTable - s2AssetsTable *AssetTable - FirstInstance *FirstInstance - s4EventstoreIndexes *EventstoreIndexesNew - s5LastFailed *LastFailed - s6OwnerRemoveColumns *OwnerRemoveColumns - s7LogstoreTables *LogstoreTables - s8AuthTokens *AuthTokenIndexes - s9EventstoreIndexes2 *EventstoreIndexesNew - s10EventstoreCreationDate *CorrectCreationDate + s1ProjectionTable *ProjectionTable + s2AssetsTable *AssetTable + FirstInstance *FirstInstance + s4EventstoreIndexes *EventstoreIndexesNew + s5LastFailed *LastFailed + s6OwnerRemoveColumns *OwnerRemoveColumns + s7LogstoreTables *LogstoreTables + s8AuthTokens *AuthTokenIndexes + s9EventstoreIndexes2 *EventstoreIndexesNew + CorrectCreationDate *CorrectCreationDate } type encryptionKeyConfig struct { diff --git a/cmd/setup/setup.go b/cmd/setup/setup.go index a7deef0071..e90ad85f94 100644 --- a/cmd/setup/setup.go +++ b/cmd/setup/setup.go @@ -88,7 +88,7 @@ func Setup(config *Config, steps *Steps, masterKey string) { steps.s7LogstoreTables = &LogstoreTables{dbClient: dbClient.DB, username: config.Database.Username(), dbType: config.Database.Type()} steps.s8AuthTokens = &AuthTokenIndexes{dbClient: dbClient} steps.s9EventstoreIndexes2 = New09(dbClient) - steps.s10EventstoreCreationDate = &CorrectCreationDate{dbClient: dbClient} + steps.CorrectCreationDate.dbClient = dbClient err = projection.Create(ctx, dbClient, eventstoreClient, config.Projections, nil, nil) logging.OnError(err).Fatal("unable to start projections") @@ -124,7 +124,7 @@ func Setup(config *Config, steps *Steps, masterKey string) { logging.OnError(err).Fatal("unable to migrate step 8") err = migration.Migrate(ctx, eventstoreClient, steps.s9EventstoreIndexes2) logging.OnError(err).Fatal("unable to migrate step 9") - err = migration.Migrate(ctx, eventstoreClient, steps.s10EventstoreCreationDate) + err = migration.Migrate(ctx, eventstoreClient, steps.CorrectCreationDate) logging.OnError(err).Fatal("unable to migrate step 10") for _, repeatableStep := range repeatableSteps { diff --git a/cmd/setup/steps.yaml b/cmd/setup/steps.yaml index c362f80e84..f5cb4b0c2a 100644 --- a/cmd/setup/steps.yaml +++ b/cmd/setup/steps.yaml @@ -30,3 +30,5 @@ FirstInstance: MachineKey: ExpirationDate: Type: +CorrectCreationDate: + FailAfter: 5m From 79c528a2b6ba4a816f23ba3c2477c460a8566a54 Mon Sep 17 00:00:00 2001 From: Miguel Cabrerizo <30386061+doncicuto@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:53:54 +0200 Subject: [PATCH 12/23] fix: cnsl-redirect-uris ngModel & formGroup issue (#5731) Co-authored-by: Max Peintner --- .../pages/projects/apps/app-create/app-create.component.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/console/src/app/pages/projects/apps/app-create/app-create.component.html b/console/src/app/pages/projects/apps/app-create/app-create.component.html index 7bd4729e67..5e50ecb383 100644 --- a/console/src/app/pages/projects/apps/app-create/app-create.component.html +++ b/console/src/app/pages/projects/apps/app-create/app-create.component.html @@ -437,6 +437,7 @@ class="redirect-section" [disabled]="false" [(ngModel)]="redirectUris" + [ngModelOptions]="{ standalone: true }" [getValues]="requestRedirectValuesSubject$" title="{{ 'APP.OIDC.REDIRECT' | translate }}" [isNative]="appType?.value.oidcAppType === OIDCAppType.OIDC_APP_TYPE_NATIVE" @@ -447,6 +448,7 @@ class="redirect-section" [disabled]="false" [(ngModel)]="postLogoutUrisList" + [ngModelOptions]="{ standalone: true }" title="{{ 'APP.OIDC.POSTLOGOUTREDIRECT' | translate }}" [getValues]="requestRedirectValuesSubject$" [isNative]="appType?.value.oidcAppType === OIDCAppType.OIDC_APP_TYPE_NATIVE" From c12c2f09a4399ed06fa55a1bfb976aeb0553c887 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Tue, 25 Apr 2023 19:20:59 +0200 Subject: [PATCH 13/23] fix: switch log level of failed locks to debug (#5746) --- internal/api/oidc/key.go | 2 +- internal/api/saml/certificate.go | 2 +- internal/eventstore/handler/handler_projection.go | 4 ++-- internal/eventstore/v1/spooler/spooler.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/api/oidc/key.go b/internal/api/oidc/key.go index 3b4f73c83f..237af7db49 100644 --- a/internal/api/oidc/key.go +++ b/internal/api/oidc/key.go @@ -176,7 +176,7 @@ func (o *OPStorage) lockAndGenerateSigningKeyPair(ctx context.Context, algorithm if errors.IsErrorAlreadyExists(err) { return nil } - logging.OnError(err).Warn("initial lock failed") + logging.OnError(err).Debug("initial lock failed") return err } diff --git a/internal/api/saml/certificate.go b/internal/api/saml/certificate.go index 8d34aeb4cf..9e85e50982 100644 --- a/internal/api/saml/certificate.go +++ b/internal/api/saml/certificate.go @@ -123,7 +123,7 @@ func (p *Storage) lockAndGenerateCertificateAndKey(ctx context.Context, usage do if errors.IsErrorAlreadyExists(err) { return nil } - logging.OnError(err).Warn("initial lock failed") + logging.OnError(err).Debug("initial lock failed") return err } diff --git a/internal/eventstore/handler/handler_projection.go b/internal/eventstore/handler/handler_projection.go index 2b4160586f..808da1dbb8 100644 --- a/internal/eventstore/handler/handler_projection.go +++ b/internal/eventstore/handler/handler_projection.go @@ -223,7 +223,7 @@ func (h *ProjectionHandler) schedule(ctx context.Context) { errs := h.lock(lockCtx, h.requeueAfter, "system") if err, ok := <-errs; err != nil || !ok { cancelLock() - logging.WithFields("projection", h.ProjectionName).OnError(err).Warn("initial lock failed for first schedule") + logging.WithFields("projection", h.ProjectionName).OnError(err).Debug("initial lock failed for first schedule") h.triggerProjection.Reset(h.requeueAfter) continue } @@ -253,7 +253,7 @@ func (h *ProjectionHandler) schedule(ctx context.Context) { //wait until projection is locked if err, ok := <-errs; err != nil || !ok { cancelInstanceLock() - logging.WithFields("projection", h.ProjectionName).OnError(err).Warn("initial lock failed") + logging.WithFields("projection", h.ProjectionName).OnError(err).Debug("initial lock failed") failed = true continue } diff --git a/internal/eventstore/v1/spooler/spooler.go b/internal/eventstore/v1/spooler/spooler.go index 24e72ce5fd..c6cc15d3a4 100644 --- a/internal/eventstore/v1/spooler/spooler.go +++ b/internal/eventstore/v1/spooler/spooler.go @@ -126,7 +126,7 @@ func (s *spooledHandler) load(workerID string) { var err error s.succeededOnce, err = s.hasSucceededOnce(ctx) if err != nil { - logging.WithFields("view", s.ViewModel()).OnError(err).Warn("initial lock failed for first schedule") + logging.WithFields("view", s.ViewModel()).OnError(err).Debug("initial lock failed for first schedule") errs <- err return } From 923f691d77ce047cc01a7600e280b6aa0f979de7 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Tue, 25 Apr 2023 20:15:32 +0200 Subject: [PATCH 14/23] fix: use singleton meter provider (#5725) --- internal/telemetry/metrics/otel/open_telemetry.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/internal/telemetry/metrics/otel/open_telemetry.go b/internal/telemetry/metrics/otel/open_telemetry.go index 4a18c6171c..e249f00d88 100644 --- a/internal/telemetry/metrics/otel/open_telemetry.go +++ b/internal/telemetry/metrics/otel/open_telemetry.go @@ -18,7 +18,7 @@ import ( ) type Metrics struct { - Exporter *prometheus.Exporter + Provider metric.MeterProvider Meter metric.Meter Counters sync.Map UpDownSumObserver sync.Map @@ -34,12 +34,13 @@ func NewMetrics(meterName string) (metrics.Metrics, error) { if err != nil { return &Metrics{}, err } + meterProvider := sdk_metric.NewMeterProvider( + sdk_metric.WithReader(exporter), + sdk_metric.WithResource(resource), + ) return &Metrics{ - Exporter: exporter, - Meter: sdk_metric.NewMeterProvider( - sdk_metric.WithReader(exporter), - sdk_metric.WithResource(resource), - ).Meter(meterName), + Provider: meterProvider, + Meter: meterProvider.Meter(meterName), }, nil } @@ -48,7 +49,7 @@ func (m *Metrics) GetExporter() http.Handler { } func (m *Metrics) GetMetricsProvider() metric.MeterProvider { - return sdk_metric.NewMeterProvider(sdk_metric.WithReader(m.Exporter)) + return m.Provider } func (m *Metrics) RegisterCounter(name, description string) error { From 19f2f83b6111698a907ec8959622e31fbb9a76a7 Mon Sep 17 00:00:00 2001 From: bitfactory-sem-denbroeder <92806503+bitfactory-sem-denbroeder@users.noreply.github.com> Date: Wed, 26 Apr 2023 07:17:23 +0200 Subject: [PATCH 15/23] feat: add otp name and make it configurable (#5631) * feat: add otp name and make it configurable * feat: use pre-existing otp env var * feat: use requested domain if otp issuer is empty * cleanup --------- Co-authored-by: Sem den Broeder Co-authored-by: Elio Bischof Co-authored-by: Livio Spring --- cmd/defaults.yaml | 2 ++ internal/command/user_human_otp.go | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cmd/defaults.yaml b/cmd/defaults.yaml index 1afc617c5a..85d6c0ab15 100644 --- a/cmd/defaults.yaml +++ b/cmd/defaults.yaml @@ -321,6 +321,8 @@ SystemDefaults: ApplicationKeySize: 2048 Multifactors: OTP: + # If this is empty, the issuer is the requested domain + # This is helpful in scenarios with multiple ZITADEL environments or virtual instances Issuer: "ZITADEL" DomainVerification: VerificationGenerator: diff --git a/internal/command/user_human_otp.go b/internal/command/user_human_otp.go index 02dbdae552..96db142f75 100644 --- a/internal/command/user_human_otp.go +++ b/internal/command/user_human_otp.go @@ -5,6 +5,7 @@ import ( "github.com/zitadel/logging" + "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" caos_errs "github.com/zitadel/zitadel/internal/errors" @@ -71,11 +72,14 @@ func (c *Commands) AddHumanOTP(ctx context.Context, userID, resourceowner string if accountName == "" { accountName = string(human.EmailAddress) } - key, secret, err := domain.NewOTPKey(c.multifactors.OTP.Issuer, accountName, c.multifactors.OTP.CryptoMFA) + issuer := c.multifactors.OTP.Issuer + if issuer == "" { + issuer = authz.GetInstance(ctx).RequestedDomain() + } + key, secret, err := domain.NewOTPKey(issuer, accountName, c.multifactors.OTP.CryptoMFA) if err != nil { return nil, err } - _, err = c.eventstore.Push(ctx, user.NewHumanOTPAddedEvent(ctx, userAgg, secret)) if err != nil { return nil, err From e4a4b7cfbe532d302be8d922359864bb004daeb2 Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Wed, 26 Apr 2023 07:47:57 +0200 Subject: [PATCH 16/23] feat(api): add user creation to user service (#5745) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(proto): update versions * change protoc plugin * some cleanups * define api for setting emails in new api * implement user.SetEmail * move SetEmail buisiness logic into command * resuse newCryptoCode * command: add ChangeEmail unit tests Not complete, was not able to mock the generator. * Revert "resuse newCryptoCode" This reverts commit c89e90ae35ae924a3f706a0a7394f933910c2e65. * undo change to crypto code generators * command: use a generator so we can test properly * command: reorganise ChangeEmail improve test coverage * implement VerifyEmail including unit tests * add URL template tests * begin user creation * change protos * implement metadata and move context * merge commands * proto: change context to object * remove old auth option * remove old auth option * fix linting errors run gci on modified files * add permission checks and fix some errors * comments * comments * update email requests * rename proto requests * cleanup and docs * simplify * simplify * fix setup * remove unused proto messages / fields --------- Co-authored-by: adlerhurst Co-authored-by: Tim Möhlmann --- docs/docusaurus.config.js | 7 + docs/sidebars.js | 16 +- internal/api/grpc/management/user.go | 11 +- .../server/middleware/auth_interceptor.go | 7 + internal/api/grpc/user/v2/email.go | 2 +- internal/api/grpc/user/v2/user.go | 107 ++++ internal/api/grpc/user/v2/user_test.go | 80 +++ internal/command/command.go | 2 + internal/command/crypto.go | 23 +- internal/command/email.go | 9 +- internal/command/instance.go | 3 +- internal/command/org.go | 2 +- internal/command/phone.go | 3 +- internal/command/user.go | 2 +- internal/command/user_human.go | 289 ++++++---- internal/command/user_human_test.go | 521 ++++++++++++++---- internal/domain/human.go | 5 - .../notification/handlers/usernotifier.go | 1 - pkg/grpc/user/v2alpha/user.go | 5 + proto/zitadel/object/v2alpha/object.proto | 6 +- proto/zitadel/user/v2alpha/email.proto | 17 + proto/zitadel/user/v2alpha/password.proto | 53 ++ proto/zitadel/user/v2alpha/user.proto | 81 +++ proto/zitadel/user/v2alpha/user_service.proto | 149 +++++ 24 files changed, 1175 insertions(+), 226 deletions(-) create mode 100644 internal/api/grpc/user/v2/user.go create mode 100644 internal/api/grpc/user/v2/user_test.go create mode 100644 pkg/grpc/user/v2alpha/user.go create mode 100644 proto/zitadel/user/v2alpha/password.proto diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 43cfb96a2c..a660dae88d 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -259,6 +259,13 @@ module.exports = { sidebarOptions: { groupPathsBy: "tag", }, + }, + user: { + specPath: ".artifacts/openapi/zitadel/user/v2alpha/user_service.swagger.json", + outputDir: "docs/apis/user_service", + sidebarOptions: { + groupPathsBy: "tag", + }, } } }, diff --git a/docs/sidebars.js b/docs/sidebars.js index 6c478cf380..82def05fd0 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -374,6 +374,20 @@ module.exports = { }, items: require("./docs/apis/system/sidebar.js"), }, + { + type: "category", + label: "User Lifecycle (Alpha)", + link: { + type: "generated-index", + title: "User Service API (Alpha)", + slug: "/apis/user_service", + description: + "This API is intended to manage users in a ZITADEL instance.\n"+ + "\n"+ + "This project is in alpha state. It can AND will continue breaking until the services provide the same functionality as the current login.", + }, + items: require("./docs/apis/user_service/sidebar.js"), + }, { type: "category", label: "Assets", @@ -508,4 +522,4 @@ module.exports = { ], }, ], -}; \ No newline at end of file +}; diff --git a/internal/api/grpc/management/user.go b/internal/api/grpc/management/user.go index 58092dc739..4c81243fb6 100644 --- a/internal/api/grpc/management/user.go +++ b/internal/api/grpc/management/user.go @@ -210,17 +210,14 @@ func (s *Server) BulkRemoveUserMetadata(ctx context.Context, req *mgmt_pb.BulkRe } func (s *Server) AddHumanUser(ctx context.Context, req *mgmt_pb.AddHumanUserRequest) (*mgmt_pb.AddHumanUserResponse, error) { - details, err := s.command.AddHuman(ctx, authz.GetCtxData(ctx).OrgID, AddHumanUserRequestToAddHuman(req)) + human := AddHumanUserRequestToAddHuman(req) + err := s.command.AddHuman(ctx, authz.GetCtxData(ctx).OrgID, human, true) if err != nil { return nil, err } return &mgmt_pb.AddHumanUserResponse{ - UserId: details.ID, - Details: obj_grpc.AddToDetailsPb( - details.Sequence, - details.EventDate, - details.ResourceOwner, - ), + UserId: human.ID, + Details: obj_grpc.DomainToAddDetailsPb(human.Details), }, nil } diff --git a/internal/api/grpc/server/middleware/auth_interceptor.go b/internal/api/grpc/server/middleware/auth_interceptor.go index e1c6e6e02d..f02a822d86 100644 --- a/internal/api/grpc/server/middleware/auth_interceptor.go +++ b/internal/api/grpc/server/middleware/auth_interceptor.go @@ -34,6 +34,9 @@ func authorize(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, } orgID := grpc_util.GetHeader(authCtx, http.ZitadelOrgID) + if o, ok := req.(AuthContext); ok { + orgID = o.AuthContext() + } ctxSetter, err := authz.CheckUserAuthorization(authCtx, req, authToken, orgID, verifier, authConfig, authOpt, info.FullMethod) if err != nil { @@ -42,3 +45,7 @@ func authorize(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, span.End() return handler(ctxSetter(ctx), req) } + +type AuthContext interface { + AuthContext() string +} diff --git a/internal/api/grpc/user/v2/email.go b/internal/api/grpc/user/v2/email.go index 94530167cd..95928e2e61 100644 --- a/internal/api/grpc/user/v2/email.go +++ b/internal/api/grpc/user/v2/email.go @@ -12,7 +12,7 @@ import ( ) func (s *Server) SetEmail(ctx context.Context, req *user.SetEmailRequest) (resp *user.SetEmailResponse, err error) { - resourceOwner := "" // TODO: check if still needed + var resourceOwner string // TODO: check if still needed var email *domain.Email switch v := req.GetVerification().(type) { diff --git a/internal/api/grpc/user/v2/user.go b/internal/api/grpc/user/v2/user.go new file mode 100644 index 0000000000..a058e7e750 --- /dev/null +++ b/internal/api/grpc/user/v2/user.go @@ -0,0 +1,107 @@ +package user + +import ( + "context" + "io" + + "golang.org/x/text/language" + + "github.com/zitadel/zitadel/internal/api/grpc/object/v2" + "github.com/zitadel/zitadel/internal/command" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" +) + +func (s *Server) AddHumanUser(ctx context.Context, req *user.AddHumanUserRequest) (_ *user.AddHumanUserResponse, err error) { + human, err := addUserRequestToAddHuman(req) + if err != nil { + return nil, err + } + err = s.command.AddHuman(ctx, req.GetOrganisation().GetOrgId(), human, false) + if err != nil { + return nil, err + } + return &user.AddHumanUserResponse{ + UserId: human.ID, + Details: object.DomainToDetailsPb(human.Details), + EmailCode: human.EmailCode, + }, nil +} + +func addUserRequestToAddHuman(req *user.AddHumanUserRequest) (*command.AddHuman, error) { + username := req.GetUsername() + if username == "" { + username = req.GetEmail().GetEmail() + } + var urlTemplate string + if req.GetEmail().GetSendCode() != nil { + urlTemplate = req.GetEmail().GetSendCode().GetUrlTemplate() + // test the template execution so the async notification will not fail because of it and the user won't realize + if err := domain.RenderConfirmURLTemplate(io.Discard, urlTemplate, req.GetUserId(), "code", "orgID"); err != nil { + return nil, err + } + } + bcryptedPassword, err := hashedPasswordToCommand(req.GetHashedPassword()) + if err != nil { + return nil, err + } + passwordChangeRequired := req.GetPassword().GetChangeRequired() || req.GetHashedPassword().GetChangeRequired() + metadata := make([]*command.AddMetadataEntry, len(req.Metadata)) + for i, metadataEntry := range req.Metadata { + metadata[i] = &command.AddMetadataEntry{ + Key: metadataEntry.GetKey(), + Value: metadataEntry.GetValue(), + } + } + return &command.AddHuman{ + ID: req.GetUserId(), + Username: username, + FirstName: req.GetProfile().GetFirstName(), + LastName: req.GetProfile().GetLastName(), + NickName: req.GetProfile().GetNickName(), + DisplayName: req.GetProfile().GetDisplayName(), + Email: command.Email{ + Address: domain.EmailAddress(req.GetEmail().GetEmail()), + Verified: req.GetEmail().GetIsVerified(), + ReturnCode: req.GetEmail().GetReturnCode() != nil, + URLTemplate: urlTemplate, + }, + PreferredLanguage: language.Make(req.GetProfile().GetPreferredLanguage()), + Gender: genderToDomain(req.GetProfile().GetGender()), + Phone: command.Phone{}, // TODO: add as soon as possible + Password: req.GetPassword().GetPassword(), + BcryptedPassword: bcryptedPassword, + PasswordChangeRequired: passwordChangeRequired, + Passwordless: false, + ExternalIDP: false, + Register: false, + Metadata: metadata, + }, nil +} + +func genderToDomain(gender user.Gender) domain.Gender { + switch gender { + case user.Gender_GENDER_UNSPECIFIED: + return domain.GenderUnspecified + case user.Gender_GENDER_FEMALE: + return domain.GenderFemale + case user.Gender_GENDER_MALE: + return domain.GenderMale + case user.Gender_GENDER_DIVERSE: + return domain.GenderDiverse + default: + return domain.GenderUnspecified + } +} + +func hashedPasswordToCommand(hashed *user.HashedPassword) (string, error) { + if hashed == nil { + return "", nil + } + // we currently only handle bcrypt + if hashed.GetAlgorithm() != "bcrypt" { + return "", errors.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.InvalidArgument") + } + return hashed.GetHash(), nil +} diff --git a/internal/api/grpc/user/v2/user_test.go b/internal/api/grpc/user/v2/user_test.go new file mode 100644 index 0000000000..d697e9ae4f --- /dev/null +++ b/internal/api/grpc/user/v2/user_test.go @@ -0,0 +1,80 @@ +package user + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + caos_errs "github.com/zitadel/zitadel/internal/errors" + user "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha" +) + +func Test_hashedPasswordToCommand(t *testing.T) { + type args struct { + hashed *user.HashedPassword + } + type res struct { + want string + err func(error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + "not hashed", + args{ + hashed: nil, + }, + res{ + "", + nil, + }, + }, + { + "hashed, not bcrypt", + args{ + hashed: &user.HashedPassword{ + Hash: "hash", + Algorithm: "custom", + }, + }, + res{ + "", + func(err error) bool { + return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.InvalidArgument")) + }, + }, + }, + { + "hashed, bcrypt", + args{ + hashed: &user.HashedPassword{ + Hash: "hash", + Algorithm: "bcrypt", + }, + }, + res{ + "hash", + nil, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := hashedPasswordToCommand(tt.args.hashed) + if tt.res.err == nil { + require.NoError(t, err) + } + if tt.res.err != nil && !tt.res.err(err) { + t.Errorf("got wrong err: %v ", err) + } + if tt.res.err == nil { + assert.Equal(t, tt.res.want, got) + } + }) + } +} diff --git a/internal/command/command.go b/internal/command/command.go index 4499b84b51..82f2a4c455 100644 --- a/internal/command/command.go +++ b/internal/command/command.go @@ -30,6 +30,7 @@ type Commands struct { httpClient *http.Client checkPermission permissionCheck + newEmailCode func(ctx context.Context, filter preparation.FilterToQueryReducer, codeAlg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) eventstore *eventstore.Eventstore static static.Storage @@ -109,6 +110,7 @@ func StartCommands( checkPermission: func(ctx context.Context, permission, orgID, resourceID string, allowSelf bool) (err error) { return authz.CheckPermission(ctx, membershipsResolver, zitadelRoles, permission, orgID, resourceID, allowSelf) }, + newEmailCode: newEmailCode, } instance_repo.RegisterEventMappers(repo.eventstore) diff --git a/internal/command/crypto.go b/internal/command/crypto.go index 2313e86b62..404b2221f9 100644 --- a/internal/command/crypto.go +++ b/internal/command/crypto.go @@ -10,24 +10,33 @@ import ( "github.com/zitadel/zitadel/internal/errors" ) -func newCryptoCodeWithExpiry(ctx context.Context, filter preparation.FilterToQueryReducer, typ domain.SecretGeneratorType, alg crypto.Crypto) (value *crypto.CryptoValue, expiry time.Duration, err error) { +type CryptoCodeWithExpiry struct { + Crypted *crypto.CryptoValue + Plain string + Expiry time.Duration +} + +func newCryptoCodeWithExpiry(ctx context.Context, filter preparation.FilterToQueryReducer, typ domain.SecretGeneratorType, alg crypto.Crypto) (*CryptoCodeWithExpiry, error) { config, err := secretGeneratorConfig(ctx, filter, typ) if err != nil { - return nil, -1, err + return nil, err } + code := new(CryptoCodeWithExpiry) switch a := alg.(type) { case crypto.HashAlgorithm: - value, _, err = crypto.NewCode(crypto.NewHashGenerator(*config, a)) + code.Crypted, code.Plain, err = crypto.NewCode(crypto.NewHashGenerator(*config, a)) case crypto.EncryptionAlgorithm: - value, _, err = crypto.NewCode(crypto.NewEncryptionGenerator(*config, a)) + code.Crypted, code.Plain, err = crypto.NewCode(crypto.NewEncryptionGenerator(*config, a)) default: - return nil, -1, errors.ThrowInternal(nil, "COMMA-RreV6", "Errors.Internal") + return nil, errors.ThrowInternal(nil, "COMMA-RreV6", "Errors.Internal") } if err != nil { - return nil, -1, err + return nil, err } - return value, config.Expiry, nil + + code.Expiry = config.Expiry + return code, nil } func newCryptoCodeWithPlain(ctx context.Context, filter preparation.FilterToQueryReducer, typ domain.SecretGeneratorType, alg crypto.Crypto) (value *crypto.CryptoValue, plain string, err error) { diff --git a/internal/command/email.go b/internal/command/email.go index 4e2c3d973b..0bfbcd6af6 100644 --- a/internal/command/email.go +++ b/internal/command/email.go @@ -2,7 +2,6 @@ package command import ( "context" - "time" "github.com/zitadel/zitadel/internal/command/preparation" "github.com/zitadel/zitadel/internal/crypto" @@ -12,12 +11,18 @@ import ( type Email struct { Address domain.EmailAddress Verified bool + + // ReturnCode is used if the Verified field is false + ReturnCode bool + + // URLTemplate can be used to specify a custom link to be sent in the mail verification + URLTemplate string } func (e *Email) Validate() error { return e.Address.Validate() } -func newEmailCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (value *crypto.CryptoValue, expiry time.Duration, err error) { +func newEmailCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) { return newCryptoCodeWithExpiry(ctx, filter, domain.SecretGeneratorTypeVerifyEmailCode, alg) } diff --git a/internal/command/instance.go b/internal/command/instance.go index 436b61b2bf..b8e00c1c0a 100644 --- a/internal/command/instance.go +++ b/internal/command/instance.go @@ -333,8 +333,9 @@ func (c *Commands) SetUpInstance(ctx context.Context, setup *InstanceSetup) (str validations = append(validations, prepareAddUserMachineKey(machineKey, c.machineKeySize)) } } else if setup.Org.Human != nil { + setup.Org.Human.ID = userAgg.ID validations = append(validations, - AddHumanCommand(userAgg, setup.Org.Human, c.userPasswordAlg, c.userEncryption), + c.AddHumanCommand(userAgg, setup.Org.Human, c.userPasswordAlg, c.userEncryption, true), ) } diff --git a/internal/command/org.go b/internal/command/org.go index 04f38877d4..71e2c3e185 100644 --- a/internal/command/org.go +++ b/internal/command/org.go @@ -51,7 +51,7 @@ func (c *Commands) setUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID, user var pat *PersonalAccessToken var machineKey *MachineKey if o.Human != nil { - validations = append(validations, AddHumanCommand(userAgg, o.Human, c.userPasswordAlg, c.userEncryption)) + validations = append(validations, c.AddHumanCommand(userAgg, o.Human, c.userPasswordAlg, c.userEncryption, true)) } else if o.Machine != nil { validations = append(validations, AddMachineCommand(userAgg, o.Machine.Machine)) if o.Machine.Pat != nil { diff --git a/internal/command/phone.go b/internal/command/phone.go index 109a60975e..30cabb6fcb 100644 --- a/internal/command/phone.go +++ b/internal/command/phone.go @@ -2,7 +2,6 @@ package command import ( "context" - "time" "github.com/zitadel/zitadel/internal/command/preparation" "github.com/zitadel/zitadel/internal/crypto" @@ -14,6 +13,6 @@ type Phone struct { Verified bool } -func newPhoneCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (value *crypto.CryptoValue, expiry time.Duration, err error) { +func newPhoneCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) { return newCryptoCodeWithExpiry(ctx, filter, domain.SecretGeneratorTypeVerifyPhoneCode, alg) } diff --git a/internal/command/user.go b/internal/command/user.go index 96ca0d1e68..34ba7c521a 100644 --- a/internal/command/user.go +++ b/internal/command/user.go @@ -439,7 +439,7 @@ func ExistsUser(ctx context.Context, filter preparation.FilterToQueryReducer, id return exists, nil } -func newUserInitCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (value *crypto.CryptoValue, expiry time.Duration, err error) { +func newUserInitCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) { return newCryptoCodeWithExpiry(ctx, filter, domain.SecretGeneratorTypeInitCode, alg) } diff --git a/internal/command/user_human.go b/internal/command/user_human.go index 3d84eeb12b..688beaa3ff 100644 --- a/internal/command/user_human.go +++ b/internal/command/user_human.go @@ -27,6 +27,8 @@ func (c *Commands) getHuman(ctx context.Context, userID, resourceowner string) ( } type AddHuman struct { + // ID is optional + ID string // Username is required Username string // FirstName is required @@ -43,63 +45,99 @@ type AddHuman struct { PreferredLanguage language.Tag // Gender is required Gender domain.Gender - //Phone represents an international phone number + // Phone represents an international phone number Phone Phone - //Password is optional + // Password is optional Password string - //BcryptedPassword is optional + // BcryptedPassword is optional BcryptedPassword string - //PasswordChangeRequired is used if the `Password`-field is set + // PasswordChangeRequired is used if the `Password`-field is set PasswordChangeRequired bool Passwordless bool ExternalIDP bool Register bool + Metadata []*AddMetadataEntry + + // Details are set after a successful execution of the command + Details *domain.ObjectDetails + + // EmailCode is set by the command + EmailCode *string } -func (c *Commands) AddHumanWithID(ctx context.Context, resourceOwner string, userID string, human *AddHuman) (*domain.HumanDetails, error) { - existingHuman, err := c.getHumanWriteModelByID(ctx, userID, resourceOwner) - if err != nil { - return nil, err +func (h *AddHuman) Validate() (err error) { + if err := h.Email.Validate(); err != nil { + return err } - if isUserStateExists(existingHuman.UserState) { - return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting") + if h.Username = strings.TrimSpace(h.Username); h.Username == "" { + return errors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument") } - return c.addHumanWithID(ctx, resourceOwner, userID, human) + if h.FirstName = strings.TrimSpace(h.FirstName); h.FirstName == "" { + return errors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty") + } + if h.LastName = strings.TrimSpace(h.LastName); h.LastName == "" { + return errors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty") + } + h.ensureDisplayName() + + if h.Phone.Number != "" { + if h.Phone.Number, err = h.Phone.Number.Normalize(); err != nil { + return err + } + } + + for _, metadataEntry := range h.Metadata { + if err := metadataEntry.Valid(); err != nil { + return err + } + } + return nil } -func (c *Commands) addHumanWithID(ctx context.Context, resourceOwner string, userID string, human *AddHuman) (*domain.HumanDetails, error) { - agg := user.NewAggregate(userID, resourceOwner) - cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, AddHumanCommand(agg, human, c.userPasswordAlg, c.userEncryption)) +type AddMetadataEntry struct { + Key string + Value []byte +} + +func (m *AddMetadataEntry) Valid() error { + if m.Key = strings.TrimSpace(m.Key); m.Key == "" { + return errors.ThrowInvalidArgument(nil, "USER-Drght", "Errors.User.Metadata.KeyEmpty") + } + if len(m.Value) == 0 { + return errors.ThrowInvalidArgument(nil, "USER-Dbgth", "Errors.User.Metadata.ValueEmpty") + } + return nil +} + +func (c *Commands) AddHuman(ctx context.Context, resourceOwner string, human *AddHuman, allowInitMail bool) (err error) { + if resourceOwner == "" { + return errors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal") + } + agg := user.NewAggregate(human.ID, resourceOwner) + cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, + c.AddHumanCommand( + agg, + human, + c.userPasswordAlg, + c.userEncryption, + allowInitMail, + )) if err != nil { - return nil, err + return err } events, err := c.eventstore.Push(ctx, cmds...) if err != nil { - return nil, err + return err + } + human.Details = &domain.ObjectDetails{ + Sequence: events[len(events)-1].Sequence(), + EventDate: events[len(events)-1].CreationDate(), + ResourceOwner: events[len(events)-1].Aggregate().ResourceOwner, } - return &domain.HumanDetails{ - ID: userID, - ObjectDetails: domain.ObjectDetails{ - Sequence: events[len(events)-1].Sequence(), - EventDate: events[len(events)-1].CreationDate(), - ResourceOwner: events[len(events)-1].Aggregate().ResourceOwner, - }, - }, nil -} - -func (c *Commands) AddHuman(ctx context.Context, resourceOwner string, human *AddHuman) (*domain.HumanDetails, error) { - if resourceOwner == "" { - return nil, errors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal") - } - userID, err := c.idGenerator.Next() - if err != nil { - return nil, err - } - - return c.addHumanWithID(ctx, resourceOwner, userID, human) + return nil } type humanCreationCommand interface { @@ -108,30 +146,17 @@ type humanCreationCommand interface { AddPasswordData(secret *crypto.CryptoValue, changeRequired bool) } -func AddHumanCommand(a *user.Aggregate, human *AddHuman, passwordAlg crypto.HashAlgorithm, codeAlg crypto.EncryptionAlgorithm) preparation.Validation { +func (c *Commands) AddHumanCommand(a *user.Aggregate, human *AddHuman, passwordAlg crypto.HashAlgorithm, codeAlg crypto.EncryptionAlgorithm, allowInitMail bool) preparation.Validation { return func() (_ preparation.CreateCommands, err error) { - if err := human.Email.Validate(); err != nil { + if err := human.Validate(); err != nil { return nil, err } - if human.Username = strings.TrimSpace(human.Username); human.Username == "" { - return nil, errors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument") - } - - if human.FirstName = strings.TrimSpace(human.FirstName); human.FirstName == "" { - return nil, errors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty") - } - if human.LastName = strings.TrimSpace(human.LastName); human.LastName == "" { - return nil, errors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty") - } - human.ensureDisplayName() - - if human.Phone.Number != "" { - if human.Phone.Number, err = human.Phone.Number.Normalize(); err != nil { - return nil, err - } - } return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) { + if err := c.addHumanCommandCheckID(ctx, filter, a, human); err != nil { + return nil, err + } + domainPolicy, err := domainPolicyWriteModel(ctx, filter, a.ResourceOwner) if err != nil { return nil, err @@ -176,55 +201,30 @@ func AddHumanCommand(a *user.Aggregate, human *AddHuman, passwordAlg crypto.Hash createCmd.AddPhoneData(human.Phone.Number) } - if human.Password != "" { - if err = humanValidatePassword(ctx, filter, human.Password); err != nil { - return nil, err - } - - secret, err := crypto.Hash([]byte(human.Password), passwordAlg) - if err != nil { - return nil, err - } - createCmd.AddPasswordData(secret, human.PasswordChangeRequired) - } - - if human.BcryptedPassword != "" { - createCmd.AddPasswordData(crypto.FillHash([]byte(human.BcryptedPassword), passwordAlg), human.PasswordChangeRequired) + if err := addHumanCommandPassword(ctx, filter, createCmd, human, passwordAlg); err != nil { + return nil, err } cmds := make([]eventstore.Command, 0, 3) cmds = append(cmds, createCmd) - if human.Email.Verified { - cmds = append(cmds, user.NewHumanEmailVerifiedEvent(ctx, &a.Aggregate)) - } - //add init code if - // email not verified or - // user not registered and password set - if human.shouldAddInitCode() { - value, expiry, err := newUserInitCode(ctx, filter, codeAlg) - if err != nil { - return nil, err - } - cmds = append(cmds, user.NewHumanInitialCodeAddedEvent(ctx, &a.Aggregate, value, expiry)) - } else { - if !human.Email.Verified { - value, expiry, err := newEmailCode(ctx, filter, codeAlg) - if err != nil { - return nil, err - } - cmds = append(cmds, user.NewHumanEmailCodeAddedEvent(ctx, &a.Aggregate, value, expiry)) - } + cmds, err = c.addHumanCommandEmail(ctx, filter, cmds, a, human, codeAlg, allowInitMail) + if err != nil { + return nil, err } - if human.Phone.Verified { - cmds = append(cmds, user.NewHumanPhoneVerifiedEvent(ctx, &a.Aggregate)) - } else if human.Phone.Number != "" { - value, expiry, err := newPhoneCode(ctx, filter, codeAlg) - if err != nil { - return nil, err - } - cmds = append(cmds, user.NewHumanPhoneCodeAddedEvent(ctx, &a.Aggregate, value, expiry)) + cmds, err = c.addHumanCommandPhone(ctx, filter, cmds, a, human, codeAlg) + if err != nil { + return nil, err + } + + for _, metadataEntry := range human.Metadata { + cmds = append(cmds, user.NewMetadataSetEvent( + ctx, + &a.Aggregate, + metadataEntry.Key, + metadataEntry.Value, + )) } return cmds, nil @@ -232,6 +232,87 @@ func AddHumanCommand(a *user.Aggregate, human *AddHuman, passwordAlg crypto.Hash } } +func (c *Commands) addHumanCommandEmail(ctx context.Context, filter preparation.FilterToQueryReducer, cmds []eventstore.Command, a *user.Aggregate, human *AddHuman, codeAlg crypto.EncryptionAlgorithm, allowInitMail bool) ([]eventstore.Command, error) { + if human.Email.Verified { + cmds = append(cmds, user.NewHumanEmailVerifiedEvent(ctx, &a.Aggregate)) + } + + // if allowInitMail, used for v1 api (system, admin, mgmt, auth): + // add init code if + // email not verified or + // user not registered and password set + if allowInitMail && human.shouldAddInitCode() { + initCode, err := newUserInitCode(ctx, filter, codeAlg) + if err != nil { + return nil, err + } + return append(cmds, user.NewHumanInitialCodeAddedEvent(ctx, &a.Aggregate, initCode.Crypted, initCode.Expiry)), nil + } + if !human.Email.Verified { + emailCode, err := c.newEmailCode(ctx, filter, codeAlg) + if err != nil { + return nil, err + } + if human.Email.ReturnCode { + human.EmailCode = &emailCode.Plain + } + return append(cmds, user.NewHumanEmailCodeAddedEventV2(ctx, &a.Aggregate, emailCode.Crypted, emailCode.Expiry, human.Email.URLTemplate, human.Email.ReturnCode)), nil + } + return cmds, nil +} +func (c *Commands) addHumanCommandPhone(ctx context.Context, filter preparation.FilterToQueryReducer, cmds []eventstore.Command, a *user.Aggregate, human *AddHuman, codeAlg crypto.EncryptionAlgorithm) ([]eventstore.Command, error) { + if human.Phone.Number == "" { + return cmds, nil + } + if human.Phone.Verified { + return append(cmds, user.NewHumanPhoneVerifiedEvent(ctx, &a.Aggregate)), nil + } + phoneCode, err := newPhoneCode(ctx, filter, codeAlg) + if err != nil { + return nil, err + } + return append(cmds, user.NewHumanPhoneCodeAddedEvent(ctx, &a.Aggregate, phoneCode.Crypted, phoneCode.Expiry)), nil +} + +func (c *Commands) addHumanCommandCheckID(ctx context.Context, filter preparation.FilterToQueryReducer, a *user.Aggregate, human *AddHuman) (err error) { + if human.ID != "" { + existingHuman, err := humanWriteModelByID(ctx, filter, human.ID, a.ResourceOwner) + if err != nil { + return err + } + if isUserStateExists(existingHuman.UserState) { + return errors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting") + } + return nil + } + human.ID, err = c.idGenerator.Next() + if err != nil { + return err + } + a.ID = human.ID + return nil +} + +func addHumanCommandPassword(ctx context.Context, filter preparation.FilterToQueryReducer, createCmd humanCreationCommand, human *AddHuman, passwordAlg crypto.HashAlgorithm) (err error) { + if human.Password != "" { + if err = humanValidatePassword(ctx, filter, human.Password); err != nil { + return err + } + + secret, err := crypto.Hash([]byte(human.Password), passwordAlg) + if err != nil { + return err + } + createCmd.AddPasswordData(secret, human.PasswordChangeRequired) + return nil + } + + if human.BcryptedPassword != "" { + createCmd.AddPasswordData(crypto.FillHash([]byte(human.BcryptedPassword), passwordAlg), human.PasswordChangeRequired) + } + return nil +} + func userValidateDomain(ctx context.Context, a *user.Aggregate, username string, mustBeDomain bool, filter preparation.FilterToQueryReducer) error { if mustBeDomain { return nil @@ -651,3 +732,17 @@ func (c *Commands) getHumanWriteModelByID(ctx context.Context, userID, resourceo } return humanWriteModel, nil } + +func humanWriteModelByID(ctx context.Context, filter preparation.FilterToQueryReducer, userID, resourceowner string) (*HumanWriteModel, error) { + humanWriteModel := NewHumanWriteModel(userID, resourceowner) + events, err := filter(ctx, humanWriteModel.Query()) + if err != nil { + return nil, err + } + if len(events) == 0 { + return humanWriteModel, nil + } + humanWriteModel.AppendEvents(events...) + err = humanWriteModel.Reduce() + return humanWriteModel, err +} diff --git a/internal/command/user_human_test.go b/internal/command/user_human_test.go index b56ed01c1e..7e408ed9b3 100644 --- a/internal/command/user_human_test.go +++ b/internal/command/user_human_test.go @@ -2,17 +2,19 @@ package command import ( "context" + "errors" "testing" "time" "github.com/golang/mock/gomock" + "github.com/muhlemmer/gu" "github.com/stretchr/testify/assert" "golang.org/x/text/language" "github.com/zitadel/zitadel/internal/command/preparation" "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/errors" + caos_errs "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/eventstore/repository" "github.com/zitadel/zitadel/internal/eventstore/v1/models" @@ -29,16 +31,20 @@ func TestCommandSide_AddHuman(t *testing.T) { idGenerator id.Generator userPasswordAlg crypto.HashAlgorithm codeAlg crypto.EncryptionAlgorithm + newEmailCode func(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) } type args struct { ctx context.Context orgID string human *AddHuman secretGenerator crypto.Generator + allowInitMail bool } type res struct { - want *domain.HumanDetails - err func(error) bool + want *domain.ObjectDetails + wantID string + wantEmailCode string + err func(error) bool } userAgg := user.NewAggregate("user1", "org1") @@ -68,9 +74,67 @@ func TestCommandSide_AddHuman(t *testing.T) { Address: "email@test.ch", }, }, + allowInitMail: true, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal")) + }, + }, + }, + { + name: "user invalid, invalid argument error", + fields: fields{ + eventstore: eventstoreExpect( + t, + ), + }, + args: args{ + ctx: context.Background(), + orgID: "org1", + human: &AddHuman{ + Username: "username", + FirstName: "firstname", + }, + allowInitMail: true, + }, + res: res{ + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty")) + }, + }, + }, + { + name: "with id, already exists, precondition error", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + newAddHumanEvent("password", true, ""), + ), + ), + ), + }, + args: args{ + ctx: context.Background(), + orgID: "org1", + human: &AddHuman{ + ID: "user1", + Username: "username", + FirstName: "firstname", + LastName: "lastname", + Email: Email{ + Address: "email@test.ch", + }, + PreferredLanguage: language.English, + }, + allowInitMail: true, + }, + res: res{ + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting")) + }, }, }, { @@ -95,9 +159,12 @@ func TestCommandSide_AddHuman(t *testing.T) { }, PreferredLanguage: language.English, }, + allowInitMail: true, }, res: res{ - err: errors.IsInternal, + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal")) + }, }, }, { @@ -134,30 +201,13 @@ func TestCommandSide_AddHuman(t *testing.T) { }, PreferredLanguage: language.English, }, + allowInitMail: true, }, res: res{ - err: errors.IsInternal, - }, - }, - { - name: "user invalid, invalid argument error", - fields: fields{ - idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"), - eventstore: eventstoreExpect( - t, - ), - }, - args: args{ - ctx: context.Background(), - orgID: "org1", - human: &AddHuman{ - Username: "username", - FirstName: "firstname", + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal")) }, }, - res: res{ - err: errors.IsErrorInvalidArgument, - }, }, { name: "add human (with initial code), ok", @@ -237,16 +287,15 @@ func TestCommandSide_AddHuman(t *testing.T) { PreferredLanguage: language.English, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - Sequence: 0, - EventDate: time.Time{}, - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + Sequence: 0, + EventDate: time.Time{}, + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -330,14 +379,172 @@ func TestCommandSide_AddHuman(t *testing.T) { PreferredLanguage: language.English, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", + }, + }, + { + name: "add human (with password and email code custom template), ok", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + org.NewDomainPolicyAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + true, + true, + true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + org.NewPasswordComplexityPolicyAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + 1, + false, + false, + false, + false, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + newAddHumanEvent("password", false, ""), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("emailCode"), + }, + 1*time.Hour, + "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}", + false, + ), + ), + }, + uniqueConstraintsFromEventConstraint(user.NewAddUsernameUniqueConstraint("username", "org1", true)), + ), + ), + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"), + userPasswordAlg: crypto.CreateMockHashAlg(gomock.NewController(t)), + codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)), + newEmailCode: mockEmailCode("emailCode", time.Hour), + }, + args: args{ + ctx: context.Background(), + orgID: "org1", + human: &AddHuman{ + Username: "username", + Password: "password", + FirstName: "firstname", + LastName: "lastname", + Email: Email{ + Address: "email@test.ch", + URLTemplate: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}", + }, + PreferredLanguage: language.English, + }, + secretGenerator: GetMockSecretGenerator(t), + allowInitMail: false, + }, + res: res{ + want: &domain.ObjectDetails{ + ResourceOwner: "org1", + }, + wantID: "user1", + }, + }, + { + name: "add human (with password and return email code), ok", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + org.NewDomainPolicyAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + true, + true, + true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + org.NewPasswordComplexityPolicyAddedEvent(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + 1, + false, + false, + false, + false, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + newAddHumanEvent("password", false, ""), + ), + eventFromEventPusher( + user.NewHumanEmailCodeAddedEventV2(context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte("emailCode"), + }, + 1*time.Hour, + "", + true, + ), + ), + }, + uniqueConstraintsFromEventConstraint(user.NewAddUsernameUniqueConstraint("username", "org1", true)), + ), + ), + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"), + userPasswordAlg: crypto.CreateMockHashAlg(gomock.NewController(t)), + codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)), + newEmailCode: mockEmailCode("emailCode", time.Hour), + }, + args: args{ + ctx: context.Background(), + orgID: "org1", + human: &AddHuman{ + Username: "username", + Password: "password", + FirstName: "firstname", + LastName: "lastname", + Email: Email{ + Address: "email@test.ch", + ReturnCode: true, + }, + PreferredLanguage: language.English, + }, + secretGenerator: GetMockSecretGenerator(t), + allowInitMail: false, + }, + res: res{ + want: &domain.ObjectDetails{ + ResourceOwner: "org1", + }, + wantID: "user1", + wantEmailCode: "emailCode", }, }, { @@ -400,14 +607,13 @@ func TestCommandSide_AddHuman(t *testing.T) { PasswordChangeRequired: true, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -470,14 +676,13 @@ func TestCommandSide_AddHuman(t *testing.T) { PasswordChangeRequired: true, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -540,14 +745,13 @@ func TestCommandSide_AddHuman(t *testing.T) { PasswordChangeRequired: true, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -594,9 +798,12 @@ func TestCommandSide_AddHuman(t *testing.T) { PasswordChangeRequired: true, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: func(err error) bool { + return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername")) + }, }, }, { @@ -687,15 +894,14 @@ func TestCommandSide_AddHuman(t *testing.T) { PasswordChangeRequired: true, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -787,14 +993,13 @@ func TestCommandSide_AddHuman(t *testing.T) { PreferredLanguage: language.English, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", - }, + want: &domain.ObjectDetails{ + ResourceOwner: "org1", }, + wantID: "user1", }, }, { @@ -875,14 +1080,104 @@ func TestCommandSide_AddHuman(t *testing.T) { PreferredLanguage: language.English, }, secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, }, res: res{ - want: &domain.HumanDetails{ - ID: "user1", - ObjectDetails: domain.ObjectDetails{ - ResourceOwner: "org1", + want: &domain.ObjectDetails{ + ResourceOwner: "org1", + }, + wantID: "user1", + }, + }, + { + name: "add human with metadata, ok", + fields: fields{ + eventstore: eventstoreExpect( + t, + expectFilter( + eventFromEventPusher( + org.NewDomainPolicyAddedEvent(context.Background(), + &userAgg.Aggregate, + true, + true, + true, + ), + ), + ), + expectFilter( + eventFromEventPusher( + instance.NewSecretGeneratorAddedEvent( + context.Background(), + &instanceAgg.Aggregate, + domain.SecretGeneratorTypeInitCode, + 0, + 1*time.Hour, + true, + true, + true, + true, + ), + ), + ), + expectPush( + []*repository.Event{ + eventFromEventPusher( + newAddHumanEvent("", false, ""), + ), + eventFromEventPusher( + user.NewHumanInitialCodeAddedEvent( + context.Background(), + &userAgg.Aggregate, + &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte(""), + }, + 1*time.Hour, + ), + ), + eventFromEventPusher( + user.NewMetadataSetEvent( + context.Background(), + &userAgg.Aggregate, + "testKey", + []byte("testValue"), + ), + ), + }, + uniqueConstraintsFromEventConstraint(user.NewAddUsernameUniqueConstraint("username", "org1", true)), + ), + ), + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"), + codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)), + }, + args: args{ + ctx: context.Background(), + orgID: "org1", + human: &AddHuman{ + Username: "username", + FirstName: "firstname", + LastName: "lastname", + Email: Email{ + Address: "email@test.ch", + }, + PreferredLanguage: language.English, + Metadata: []*AddMetadataEntry{ + { + Key: "testKey", + Value: []byte("testValue"), + }, }, }, + secretGenerator: GetMockSecretGenerator(t), + allowInitMail: true, + }, + res: res{ + want: &domain.ObjectDetails{ + ResourceOwner: "org1", + }, + wantID: "user1", }, }, } @@ -893,8 +1188,9 @@ func TestCommandSide_AddHuman(t *testing.T) { userPasswordAlg: tt.fields.userPasswordAlg, userEncryption: tt.fields.codeAlg, idGenerator: tt.fields.idGenerator, + newEmailCode: tt.fields.newEmailCode, } - got, err := r.AddHuman(tt.args.ctx, tt.args.orgID, tt.args.human) + err := r.AddHuman(tt.args.ctx, tt.args.orgID, tt.args.human, tt.args.allowInitMail) if tt.res.err == nil { if !assert.NoError(t, err) { t.FailNow() @@ -904,7 +1200,9 @@ func TestCommandSide_AddHuman(t *testing.T) { t.Errorf("got wrong err: %v ", err) } if tt.res.err == nil { - assert.Equal(t, tt.res.want, got) + assert.Equal(t, tt.res.want, tt.args.human.Details) + assert.Equal(t, tt.res.wantID, tt.args.human.ID) + assert.Equal(t, tt.res.wantEmailCode, gu.Value(tt.args.human.EmailCode)) } }) } @@ -958,7 +1256,7 @@ func TestCommandSide_ImportHuman(t *testing.T) { }, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -985,7 +1283,7 @@ func TestCommandSide_ImportHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -1022,7 +1320,7 @@ func TestCommandSide_ImportHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -1065,7 +1363,7 @@ func TestCommandSide_ImportHuman(t *testing.T) { }, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -1869,7 +2167,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -1899,7 +2197,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -1939,7 +2237,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -1987,7 +2285,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -2056,7 +2354,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsPreconditionFailed, + err: caos_errs.IsPreconditionFailed, }, }, { @@ -2125,7 +2423,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -2211,7 +2509,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) { }, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -3147,7 +3445,7 @@ func TestCommandSide_HumanMFASkip(t *testing.T) { userID: "", }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -3164,7 +3462,7 @@ func TestCommandSide_HumanMFASkip(t *testing.T) { userID: "user1", }, res: res{ - err: errors.IsNotFound, + err: caos_errs.IsNotFound, }, }, { @@ -3261,7 +3559,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) { userIDs: []string{"user1"}, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -3277,7 +3575,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) { userIDs: []string{}, }, res: res{ - err: errors.IsErrorInvalidArgument, + err: caos_errs.IsErrorInvalidArgument, }, }, { @@ -3479,18 +3777,23 @@ func newRegisterHumanEvent(username, password string, changeRequired bool, phone } func TestAddHumanCommand(t *testing.T) { + type fields struct { + idGenerator id.Generator + } type args struct { - a *user.Aggregate - human *AddHuman - passwordAlg crypto.HashAlgorithm - filter preparation.FilterToQueryReducer - codeAlg crypto.EncryptionAlgorithm + a *user.Aggregate + human *AddHuman + passwordAlg crypto.HashAlgorithm + filter preparation.FilterToQueryReducer + codeAlg crypto.EncryptionAlgorithm + allowInitMail bool } agg := user.NewAggregate("id", "ro") tests := []struct { - name string - args args - want Want + name string + fields fields + args args + want Want }{ { name: "invalid email", @@ -3503,7 +3806,7 @@ func TestAddHumanCommand(t *testing.T) { }, }, want: Want{ - ValidationErr: errors.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid"), + ValidationErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid"), }, }, { @@ -3519,7 +3822,7 @@ func TestAddHumanCommand(t *testing.T) { }, }, want: Want{ - ValidationErr: errors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty"), + ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty"), }, }, { @@ -3534,11 +3837,14 @@ func TestAddHumanCommand(t *testing.T) { }, }, want: Want{ - ValidationErr: errors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty"), + ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty"), }, }, { name: "invalid password", + fields: fields{ + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"), + }, args: args{ a: agg, human: &AddHuman{ @@ -3578,11 +3884,14 @@ func TestAddHumanCommand(t *testing.T) { Filter(), }, want: Want{ - CreateErr: errors.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength"), + CreateErr: caos_errs.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength"), }, }, { name: "correct", + fields: fields{ + idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"), + }, args: args{ a: agg, human: &AddHuman{ @@ -3654,7 +3963,25 @@ func TestAddHumanCommand(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - AssertValidation(t, context.Background(), AddHumanCommand(tt.args.a, tt.args.human, tt.args.passwordAlg, tt.args.codeAlg), tt.args.filter, tt.want) + c := &Commands{ + idGenerator: tt.fields.idGenerator, + } + AssertValidation(t, context.Background(), c.AddHumanCommand(tt.args.a, tt.args.human, tt.args.passwordAlg, tt.args.codeAlg, tt.args.allowInitMail), tt.args.filter, tt.want) }) } } + +func mockEmailCode(code string, exp time.Duration) func(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) { + return func(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (*CryptoCodeWithExpiry, error) { + return &CryptoCodeWithExpiry{ + Crypted: &crypto.CryptoValue{ + CryptoType: crypto.TypeEncryption, + Algorithm: "enc", + KeyID: "id", + Crypted: []byte(code), + }, + Plain: code, + Expiry: exp, + }, nil + } +} diff --git a/internal/domain/human.go b/internal/domain/human.go index 05e56ace67..619eaf4807 100644 --- a/internal/domain/human.go +++ b/internal/domain/human.go @@ -10,11 +10,6 @@ import ( es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models" ) -type HumanDetails struct { - ID string - ObjectDetails -} - type Human struct { es_models.ObjectRoot diff --git a/internal/notification/handlers/usernotifier.go b/internal/notification/handlers/usernotifier.go index 9a779c6cdc..10b0952cee 100644 --- a/internal/notification/handlers/usernotifier.go +++ b/internal/notification/handlers/usernotifier.go @@ -185,7 +185,6 @@ func (u *userNotifier) reduceEmailCodeAdded(event eventstore.Event) (*handler.St if e.CodeReturned { return crdb.NewNoOpStatement(e), nil } - ctx := HandlerContext(event.Aggregate()) alreadyHandled, err := u.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, user.UserV1EmailCodeAddedType, user.UserV1EmailCodeSentType, diff --git a/pkg/grpc/user/v2alpha/user.go b/pkg/grpc/user/v2alpha/user.go new file mode 100644 index 0000000000..f419594dfb --- /dev/null +++ b/pkg/grpc/user/v2alpha/user.go @@ -0,0 +1,5 @@ +package user + +func (r *AddHumanUserRequest) AuthContext() string { + return r.GetOrganisation().GetOrgId() +} diff --git a/proto/zitadel/object/v2alpha/object.proto b/proto/zitadel/object/v2alpha/object.proto index c11b122575..3a209b6371 100644 --- a/proto/zitadel/object/v2alpha/object.proto +++ b/proto/zitadel/object/v2alpha/object.proto @@ -6,11 +6,11 @@ option go_package = "github.com/zitadel/zitadel/pkg/grpc/object/v2alpha;object"; import "google/protobuf/timestamp.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; +import "validate/validate.proto"; -message OrgContext { - oneof ctx { +message Organisation { + oneof org { string org_id = 1; - string org_domain = 2; } } diff --git a/proto/zitadel/user/v2alpha/email.proto b/proto/zitadel/user/v2alpha/email.proto index daa744fe14..151348b55a 100644 --- a/proto/zitadel/user/v2alpha/email.proto +++ b/proto/zitadel/user/v2alpha/email.proto @@ -9,6 +9,23 @@ import "google/api/field_behavior.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; +message SetHumanEmail { + string email = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200, email: true}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"mini@mouse.com\""; + } + ]; + // if no verification is specified, an email is sent with the default url + oneof verification { + SendEmailVerificationCode send_code = 2; + ReturnEmailVerificationCode return_code = 3; + bool is_verified = 4 [(validate.rules).bool.const = true]; + } +} message SendEmailVerificationCode { optional string url_template = 1 [ diff --git a/proto/zitadel/user/v2alpha/password.proto b/proto/zitadel/user/v2alpha/password.proto new file mode 100644 index 0000000000..eb168f0436 --- /dev/null +++ b/proto/zitadel/user/v2alpha/password.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; + +package zitadel.user.v2alpha; + +option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha;user"; + +import "google/api/field_behavior.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +import "validate/validate.proto"; + +message SetUserPassword { + oneof type { + Password password = 1; + HashedPassword hashed_password = 2; + } +} + +message Password { + string password = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"Secr3tP4ssw0rd!\""; + min_length: 1, + max_length: 200; + } + ]; + bool change_required = 2; +} + +message HashedPassword { + string hash = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"$2a$12$lJ08fqVr8bFJilRVnDT9QeULI7YW.nT3iwUv6dyg0aCrfm3UY8XR2\""; + description: "\"hashed password\""; + min_length: 1, + max_length: 200; + } + ]; + string algorithm = 2 [ + (validate.rules).string = {min_len: 1, max_len: 200, const: "bcrypt"}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"bcrypt\""; + description: "\"algorithm used for the hash. currently only bcrypt is supported\""; + min_length: 1, + max_length: 200; + } + ]; + bool change_required = 3; +} diff --git a/proto/zitadel/user/v2alpha/user.proto b/proto/zitadel/user/v2alpha/user.proto index 9b8426f517..d6312eb3e1 100644 --- a/proto/zitadel/user/v2alpha/user.proto +++ b/proto/zitadel/user/v2alpha/user.proto @@ -4,6 +4,87 @@ package zitadel.user.v2alpha; option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha;user"; +import "google/api/field_behavior.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +import "validate/validate.proto"; + message User { string id = 1; } + +enum Gender { + GENDER_UNSPECIFIED = 0; + GENDER_FEMALE = 1; + GENDER_MALE = 2; + GENDER_DIVERSE = 3; +} + +message SetHumanProfile { + string first_name = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"Minnie\""; + } + ]; + string last_name = 2 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"Mouse\""; + } + ]; + optional string nick_name = 3 [ + (validate.rules).string = {max_len: 200}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 200; + example: "\"Mini\""; + } + ]; + optional string display_name = 4 [ + (validate.rules).string = {max_len: 200}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 200; + example: "\"Minnie Mouse\""; + } + ]; + optional string preferred_language = 5 [ + (validate.rules).string = {max_len: 10}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 10; + example: "\"en\""; + } + ]; + optional zitadel.user.v2alpha.Gender gender = 6 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"GENDER_FEMALE\""; + } + ]; +} + + +message SetMetadataEntry { + string key = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"my-key\""; + min_length: 1, + max_length: 200; + } + ]; + bytes value = 2 [ + (validate.rules).bytes = {min_len: 1, max_len: 500000}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "The value has to be base64 encoded."; + example: "\"VGhpcyBpcyBteSB0ZXN0IHZhbHVl\""; + min_length: 1, + max_length: 500000; + } + ]; +} diff --git a/proto/zitadel/user/v2alpha/user_service.proto b/proto/zitadel/user/v2alpha/user_service.proto index a9a1f26d49..2a4629779e 100644 --- a/proto/zitadel/user/v2alpha/user_service.proto +++ b/proto/zitadel/user/v2alpha/user_service.proto @@ -5,6 +5,8 @@ package zitadel.user.v2alpha; import "zitadel/options.proto"; import "zitadel/object/v2alpha/object.proto"; import "zitadel/user/v2alpha/email.proto"; +import "zitadel/user/v2alpha/password.proto"; +import "zitadel/user/v2alpha/user.proto"; import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -12,8 +14,91 @@ import "validate/validate.proto"; option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2alpha;user"; +option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { + info: { + title: "User Service"; + version: "2.0-alpha"; + description: "This API is intended to manage users in a ZITADEL instance. This project is in alpha state. It can AND will continue breaking until the services provide the same functionality as the current login."; + contact:{ + name: "ZITADEL" + url: "https://zitadel.com" + email: "hi@zitadel.com" + } + license: { + name: "Apache 2.0", + url: "https://github.com/zitadel/zitadel/blob/main/LICENSE"; + }; + }; + schemes: HTTPS; + schemes: HTTP; + + consumes: "application/json"; + consumes: "application/grpc"; + + produces: "application/json"; + produces: "application/grpc"; + + consumes: "application/grpc-web+proto"; + produces: "application/grpc-web+proto"; + + host: "$ZITADEL_DOMAIN"; + base_path: "/"; + + external_docs: { + description: "Detailed information about ZITADEL", + url: "https://zitadel.com/docs" + } + + responses: { + key: "403"; + value: { + description: "Returned when the user does not have permission to access the resource."; + schema: { + json_schema: { + ref: "#/definitions/rpcStatus"; + } + } + } + } + responses: { + key: "404"; + value: { + description: "Returned when the resource does not exist."; + schema: { + json_schema: { + ref: "#/definitions/rpcStatus"; + } + } + } + } +}; + service UserService { + // Create a new human user + rpc AddHumanUser (AddHumanUserRequest) returns (AddHumanUserResponse) { + option (google.api.http) = { + post: "/v2alpha/users/human" + body: "*" + }; + + option (zitadel.v1.auth_option) = { + permission: "user.write" + }; + + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Create a user (Human)"; + description: "Create/import a new user with the type human. The newly created user will get a verification email if either the email address is not marked as verified and you did not request the verification to be returned." + responses: { + key: "200" + value: { + description: "OK"; + } + }; + }; + } + + // Change the email of a user rpc SetEmail (SetEmailRequest) returns (SetEmailResponse) { option (google.api.http) = { post: "/v2alpha/users/{user_id}/email" @@ -23,8 +108,20 @@ service UserService { option (zitadel.v1.auth_option) = { permission: "authenticated" }; + + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Change the user email"; + description: "Change the email address of a user. If the state is set to not verified, a verification code will be generated, which can be either returned or sent to the user by email." + responses: { + key: "200" + value: { + description: "OK"; + } + }; + }; } + // Verify the email with the provided code rpc VerifyEmail (VerifyEmailRequest) returns (VerifyEmailResponse) { option (google.api.http) = { post: "/v2alpha/users/{user_id}/email/_verify" @@ -34,9 +131,61 @@ service UserService { option (zitadel.v1.auth_option) = { permission: "authenticated" }; + + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Verify the email"; + description: "Verify the email with the generated code." + responses: { + key: "200" + value: { + description: "OK"; + } + }; + }; } } +message AddHumanUserRequest{ + // optionally set your own id unique for the user + optional string user_id = 1 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"d654e6ba-70a3-48ef-a95d-37c8d8a7901a\""; + } + ]; + // optionally set a unique username, if none is provided the email will be used + optional string username = 2 [ + (validate.rules).string = {min_len: 1, max_len: 200}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + min_length: 1; + max_length: 200; + example: "\"minnie-mouse\""; + } + ]; + zitadel.object.v2alpha.Organisation organisation = 3; + SetHumanProfile profile = 4 [ + (validate.rules).message.required = true, + (google.api.field_behavior) = REQUIRED + ]; + SetHumanEmail email = 5 [ + (validate.rules).message.required = true, + (google.api.field_behavior) = REQUIRED + ]; + repeated SetMetadataEntry metadata = 6; + oneof password_type { + Password password = 7; + HashedPassword hashed_password = 8; + } +} + +message AddHumanUserResponse { + string user_id = 1; + zitadel.object.v2alpha.Details details = 2; + optional string email_code = 3; +} + message SetEmailRequest{ string user_id = 1 [ (validate.rules).string = {min_len: 1, max_len: 200}, From 6774e7f44471d606cd1e6f5db3a000fd3a5b1cf4 Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Wed, 26 Apr 2023 16:19:32 +0200 Subject: [PATCH 17/23] fix: handle userID and context correctly (#5755) * fix: handle userID and context correctly * fix linting --- internal/api/grpc/user/v2/user.go | 7 ++- internal/command/instance.go | 4 +- internal/command/org.go | 67 ++++++++++--------------- internal/command/user_human.go | 26 +++++----- internal/command/user_human_test.go | 76 +++++++++++++++++++---------- 5 files changed, 95 insertions(+), 85 deletions(-) diff --git a/internal/api/grpc/user/v2/user.go b/internal/api/grpc/user/v2/user.go index a058e7e750..02b7e06282 100644 --- a/internal/api/grpc/user/v2/user.go +++ b/internal/api/grpc/user/v2/user.go @@ -6,6 +6,7 @@ import ( "golang.org/x/text/language" + "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/api/grpc/object/v2" "github.com/zitadel/zitadel/internal/command" "github.com/zitadel/zitadel/internal/domain" @@ -18,7 +19,11 @@ func (s *Server) AddHumanUser(ctx context.Context, req *user.AddHumanUserRequest if err != nil { return nil, err } - err = s.command.AddHuman(ctx, req.GetOrganisation().GetOrgId(), human, false) + orgID := req.GetOrganisation().GetOrgId() + if orgID == "" { + orgID = authz.GetCtxData(ctx).OrgID + } + err = s.command.AddHuman(ctx, orgID, human, false) if err != nil { return nil, err } diff --git a/internal/command/instance.go b/internal/command/instance.go index b8e00c1c0a..415fae3a2a 100644 --- a/internal/command/instance.go +++ b/internal/command/instance.go @@ -333,9 +333,9 @@ func (c *Commands) SetUpInstance(ctx context.Context, setup *InstanceSetup) (str validations = append(validations, prepareAddUserMachineKey(machineKey, c.machineKeySize)) } } else if setup.Org.Human != nil { - setup.Org.Human.ID = userAgg.ID + setup.Org.Human.ID = userID validations = append(validations, - c.AddHumanCommand(userAgg, setup.Org.Human, c.userPasswordAlg, c.userEncryption, true), + c.AddHumanCommand(setup.Org.Human, orgID, c.userPasswordAlg, c.userEncryption, true), ) } diff --git a/internal/command/org.go b/internal/command/org.go index 71e2c3e185..c9fd3dbd4a 100644 --- a/internal/command/org.go +++ b/internal/command/org.go @@ -11,7 +11,7 @@ import ( "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/repository/org" "github.com/zitadel/zitadel/internal/repository/project" - user_repo "github.com/zitadel/zitadel/internal/repository/user" + "github.com/zitadel/zitadel/internal/repository/user" ) type OrgSetup struct { @@ -22,22 +22,13 @@ type OrgSetup struct { Roles []string } -func (c *Commands) SetUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID, userID string, userIDs ...string) (string, *domain.ObjectDetails, error) { - existingOrg, err := c.getOrgWriteModelByID(ctx, orgID) +func (c *Commands) setUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID string, userIDs ...string) (userID string, token string, machineKey *MachineKey, details *domain.ObjectDetails, err error) { + userID, err = c.idGenerator.Next() if err != nil { - return "", nil, err + return "", "", nil, nil, err } - if existingOrg != nil { - return "", nil, errors.ThrowPreconditionFailed(nil, "COMMAND-poaj2", "Errors.Org.AlreadyExisting") - } - - userID, _, _, details, err := c.setUpOrgWithIDs(ctx, o, orgID, userID, userIDs...) - return userID, details, err -} - -func (c *Commands) setUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID, userID string, userIDs ...string) (string, string, *MachineKey, *domain.ObjectDetails, error) { orgAgg := org.NewAggregate(orgID) - userAgg := user_repo.NewAggregate(userID, orgID) + userAgg := user.NewAggregate(userID, orgID) roles := []string{domain.RoleOrgOwner} if len(o.Roles) > 0 { @@ -49,9 +40,9 @@ func (c *Commands) setUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID, user } var pat *PersonalAccessToken - var machineKey *MachineKey if o.Human != nil { - validations = append(validations, c.AddHumanCommand(userAgg, o.Human, c.userPasswordAlg, c.userEncryption, true)) + o.Human.ID = userID + validations = append(validations, c.AddHumanCommand(o.Human, orgID, c.userPasswordAlg, c.userEncryption, true)) } else if o.Machine != nil { validations = append(validations, AddMachineCommand(userAgg, o.Machine.Machine)) if o.Machine.Pat != nil { @@ -89,7 +80,6 @@ func (c *Commands) setUpOrgWithIDs(ctx context.Context, o *OrgSetup, orgID, user return "", "", nil, nil, err } - var token string if pat != nil { token = pat.Token } @@ -107,12 +97,7 @@ func (c *Commands) SetUpOrg(ctx context.Context, o *OrgSetup, userIDs ...string) return "", nil, err } - userID, err := c.idGenerator.Next() - if err != nil { - return "", nil, err - } - - userID, _, _, details, err := c.setUpOrgWithIDs(ctx, o, orgID, userID, userIDs...) + userID, _, _, details, err := c.setUpOrgWithIDs(ctx, o, orgID, userIDs...) return userID, details, err } @@ -365,9 +350,9 @@ func OrgUserIDPLinks(ctx context.Context, filter preparation.FilterToQueryReduce ResourceOwner(orgID). OrderAsc(). AddQuery(). - AggregateTypes(user_repo.AggregateType). + AggregateTypes(user.AggregateType). EventTypes( - user_repo.UserIDPLinkAddedType, user_repo.UserIDPLinkRemovedType, user_repo.UserIDPLinkCascadeRemovedType, + user.UserIDPLinkAddedType, user.UserIDPLinkRemovedType, user.UserIDPLinkCascadeRemovedType, ).Builder()) if err != nil { return nil, err @@ -375,13 +360,13 @@ func OrgUserIDPLinks(ctx context.Context, filter preparation.FilterToQueryReduce links := make([]*domain.UserIDPLink, 0) for _, event := range events { switch eventTyped := event.(type) { - case *user_repo.UserIDPLinkAddedEvent: + case *user.UserIDPLinkAddedEvent: links = append(links, &domain.UserIDPLink{ IDPConfigID: eventTyped.IDPConfigID, ExternalUserID: eventTyped.ExternalUserID, DisplayName: eventTyped.DisplayName, }) - case *user_repo.UserIDPLinkRemovedEvent: + case *user.UserIDPLinkRemovedEvent: for i := range links { if links[i].ExternalUserID == eventTyped.ExternalUserID && links[i].IDPConfigID == eventTyped.IDPConfigID { @@ -392,7 +377,7 @@ func OrgUserIDPLinks(ctx context.Context, filter preparation.FilterToQueryReduce } } - case *user_repo.UserIDPLinkCascadeRemovedEvent: + case *user.UserIDPLinkCascadeRemovedEvent: for i := range links { if links[i].ExternalUserID == eventTyped.ExternalUserID && links[i].IDPConfigID == eventTyped.IDPConfigID { @@ -495,14 +480,14 @@ func OrgUsers(ctx context.Context, filter preparation.FilterToQueryReducer, orgI ResourceOwner(orgID). OrderAsc(). AddQuery(). - AggregateTypes(user_repo.AggregateType). + AggregateTypes(user.AggregateType). EventTypes( - user_repo.HumanAddedType, - user_repo.MachineAddedEventType, - user_repo.HumanRegisteredType, - user_repo.UserDomainClaimedType, - user_repo.UserUserNameChangedType, - user_repo.UserRemovedType, + user.HumanAddedType, + user.MachineAddedEventType, + user.HumanRegisteredType, + user.UserDomainClaimedType, + user.UserUserNameChangedType, + user.UserRemovedType, ).Builder()) if err != nil { return nil, err @@ -511,25 +496,25 @@ func OrgUsers(ctx context.Context, filter preparation.FilterToQueryReducer, orgI users := make([]userIDName, 0) for _, event := range events { switch eventTyped := event.(type) { - case *user_repo.HumanAddedEvent: + case *user.HumanAddedEvent: users = append(users, userIDName{eventTyped.UserName, eventTyped.Aggregate().ID}) - case *user_repo.MachineAddedEvent: + case *user.MachineAddedEvent: users = append(users, userIDName{eventTyped.UserName, eventTyped.Aggregate().ID}) - case *user_repo.HumanRegisteredEvent: + case *user.HumanRegisteredEvent: users = append(users, userIDName{eventTyped.UserName, eventTyped.Aggregate().ID}) - case *user_repo.DomainClaimedEvent: + case *user.DomainClaimedEvent: for i := range users { if users[i].id == eventTyped.Aggregate().ID { users[i].name = eventTyped.UserName } } - case *user_repo.UsernameChangedEvent: + case *user.UsernameChangedEvent: for i := range users { if users[i].id == eventTyped.Aggregate().ID { users[i].name = eventTyped.UserName } } - case *user_repo.UserRemovedEvent: + case *user.UserRemovedEvent: for i := range users { if users[i].id == eventTyped.Aggregate().ID { users[i] = users[len(users)-1] diff --git a/internal/command/user_human.go b/internal/command/user_human.go index 688beaa3ff..0bb075a345 100644 --- a/internal/command/user_human.go +++ b/internal/command/user_human.go @@ -27,7 +27,7 @@ func (c *Commands) getHuman(ctx context.Context, userID, resourceowner string) ( } type AddHuman struct { - // ID is optional + // ID is optional, if empty it will be generated ID string // Username is required Username string @@ -114,11 +114,10 @@ func (c *Commands) AddHuman(ctx context.Context, resourceOwner string, human *Ad if resourceOwner == "" { return errors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal") } - agg := user.NewAggregate(human.ID, resourceOwner) cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, c.AddHumanCommand( - agg, human, + resourceOwner, c.userPasswordAlg, c.userEncryption, allowInitMail, @@ -146,16 +145,17 @@ type humanCreationCommand interface { AddPasswordData(secret *crypto.CryptoValue, changeRequired bool) } -func (c *Commands) AddHumanCommand(a *user.Aggregate, human *AddHuman, passwordAlg crypto.HashAlgorithm, codeAlg crypto.EncryptionAlgorithm, allowInitMail bool) preparation.Validation { +func (c *Commands) AddHumanCommand(human *AddHuman, orgID string, passwordAlg crypto.HashAlgorithm, codeAlg crypto.EncryptionAlgorithm, allowInitMail bool) preparation.Validation { return func() (_ preparation.CreateCommands, err error) { if err := human.Validate(); err != nil { return nil, err } return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) { - if err := c.addHumanCommandCheckID(ctx, filter, a, human); err != nil { + if err := c.addHumanCommandCheckID(ctx, filter, human, orgID); err != nil { return nil, err } + a := user.NewAggregate(human.ID, orgID) domainPolicy, err := domainPolicyWriteModel(ctx, filter, a.ResourceOwner) if err != nil { @@ -274,22 +274,20 @@ func (c *Commands) addHumanCommandPhone(ctx context.Context, filter preparation. return append(cmds, user.NewHumanPhoneCodeAddedEvent(ctx, &a.Aggregate, phoneCode.Crypted, phoneCode.Expiry)), nil } -func (c *Commands) addHumanCommandCheckID(ctx context.Context, filter preparation.FilterToQueryReducer, a *user.Aggregate, human *AddHuman) (err error) { - if human.ID != "" { - existingHuman, err := humanWriteModelByID(ctx, filter, human.ID, a.ResourceOwner) +func (c *Commands) addHumanCommandCheckID(ctx context.Context, filter preparation.FilterToQueryReducer, human *AddHuman, orgID string) (err error) { + if human.ID == "" { + human.ID, err = c.idGenerator.Next() if err != nil { return err } - if isUserStateExists(existingHuman.UserState) { - return errors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting") - } - return nil } - human.ID, err = c.idGenerator.Next() + existingHuman, err := humanWriteModelByID(ctx, filter, human.ID, orgID) if err != nil { return err } - a.ID = human.ID + if isUserStateExists(existingHuman.UserState) { + return errors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting") + } return nil } diff --git a/internal/command/user_human_test.go b/internal/command/user_human_test.go index 7e408ed9b3..bfbe48ad56 100644 --- a/internal/command/user_human_test.go +++ b/internal/command/user_human_test.go @@ -145,6 +145,7 @@ func TestCommandSide_AddHuman(t *testing.T) { t, expectFilter(), expectFilter(), + expectFilter(), ), }, args: args{ @@ -173,6 +174,7 @@ func TestCommandSide_AddHuman(t *testing.T) { idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"), eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -214,6 +216,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -303,6 +306,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -393,6 +397,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -472,6 +477,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -552,6 +558,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -621,6 +628,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -690,6 +698,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -759,6 +768,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -811,6 +821,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -909,6 +920,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -1007,6 +1019,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -1094,6 +1107,7 @@ func TestCommandSide_AddHuman(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter(), expectFilter( eventFromEventPusher( org.NewDomainPolicyAddedEvent(context.Background(), @@ -3781,8 +3795,8 @@ func TestAddHumanCommand(t *testing.T) { idGenerator id.Generator } type args struct { - a *user.Aggregate human *AddHuman + orgID string passwordAlg crypto.HashAlgorithm filter preparation.FilterToQueryReducer codeAlg crypto.EncryptionAlgorithm @@ -3798,12 +3812,12 @@ func TestAddHumanCommand(t *testing.T) { { name: "invalid email", args: args{ - a: agg, human: &AddHuman{ Email: Email{ Address: "invalid", }, }, + orgID: "ro", }, want: Want{ ValidationErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid"), @@ -3812,7 +3826,6 @@ func TestAddHumanCommand(t *testing.T) { { name: "invalid first name", args: args{ - a: agg, human: &AddHuman{ Username: "username", PreferredLanguage: language.English, @@ -3820,6 +3833,7 @@ func TestAddHumanCommand(t *testing.T) { Address: "support@zitadel.com", }, }, + orgID: "ro", }, want: Want{ ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty"), @@ -3828,13 +3842,13 @@ func TestAddHumanCommand(t *testing.T) { { name: "invalid last name", args: args{ - a: agg, human: &AddHuman{ Username: "username", PreferredLanguage: language.English, FirstName: "hurst", Email: Email{Address: "support@zitadel.com"}, }, + orgID: "ro", }, want: Want{ ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty"), @@ -3846,7 +3860,6 @@ func TestAddHumanCommand(t *testing.T) { idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"), }, args: args{ - a: agg, human: &AddHuman{ Email: Email{Address: "support@zitadel.com"}, PreferredLanguage: language.English, @@ -3855,23 +3868,28 @@ func TestAddHumanCommand(t *testing.T) { Password: "short", Username: "username", }, + orgID: "ro", filter: NewMultiFilter().Append( func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { - return []eventstore.Event{ - org.NewDomainPolicyAddedEvent( - context.Background(), - &org.NewAggregate("id").Aggregate, - true, - true, - true, - ), - }, nil + return []eventstore.Event{}, nil }). + Append( + func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { + return []eventstore.Event{ + org.NewDomainPolicyAddedEvent( + ctx, + &org.NewAggregate("id").Aggregate, + true, + true, + true, + ), + }, nil + }). Append( func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { return []eventstore.Event{ org.NewPasswordComplexityPolicyAddedEvent( - context.Background(), + ctx, &org.NewAggregate("id").Aggregate, 8, true, @@ -3893,7 +3911,6 @@ func TestAddHumanCommand(t *testing.T) { idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"), }, args: args{ - a: agg, human: &AddHuman{ Email: Email{Address: "support@zitadel.com", Verified: true}, PreferredLanguage: language.English, @@ -3902,25 +3919,30 @@ func TestAddHumanCommand(t *testing.T) { Password: "password", Username: "username", }, + orgID: "ro", passwordAlg: crypto.CreateMockHashAlg(gomock.NewController(t)), codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)), filter: NewMultiFilter().Append( func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { - return []eventstore.Event{ - org.NewDomainPolicyAddedEvent( - context.Background(), - &org.NewAggregate("id").Aggregate, - true, - true, - true, - ), - }, nil + return []eventstore.Event{}, nil }). + Append( + func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { + return []eventstore.Event{ + org.NewDomainPolicyAddedEvent( + ctx, + &org.NewAggregate("id").Aggregate, + true, + true, + true, + ), + }, nil + }). Append( func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) { return []eventstore.Event{ org.NewPasswordComplexityPolicyAddedEvent( - context.Background(), + ctx, &org.NewAggregate("id").Aggregate, 2, false, @@ -3966,7 +3988,7 @@ func TestAddHumanCommand(t *testing.T) { c := &Commands{ idGenerator: tt.fields.idGenerator, } - AssertValidation(t, context.Background(), c.AddHumanCommand(tt.args.a, tt.args.human, tt.args.passwordAlg, tt.args.codeAlg, tt.args.allowInitMail), tt.args.filter, tt.want) + AssertValidation(t, context.Background(), c.AddHumanCommand(tt.args.human, tt.args.orgID, tt.args.passwordAlg, tt.args.codeAlg, tt.args.allowInitMail), tt.args.filter, tt.want) }) } } From 7a337a8aa5c65ce6e6e2638c1a632a09b3a1d8b6 Mon Sep 17 00:00:00 2001 From: Fabi Date: Thu, 27 Apr 2023 09:26:58 +0200 Subject: [PATCH 18/23] docs: Migrate auth0 users (#5705) * docs: auth0 migration, add zitadel migration tool * docs: auth0 migration, add zitadel migration tool * use binary * fix typo --------- Co-authored-by: Livio Spring --- docs/docs/guides/migrate/sources/auth0.md | 36 +++++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/docs/docs/guides/migrate/sources/auth0.md b/docs/docs/guides/migrate/sources/auth0.md index dca95a7c3a..977385c1c1 100644 --- a/docs/docs/guides/migrate/sources/auth0.md +++ b/docs/docs/guides/migrate/sources/auth0.md @@ -7,6 +7,7 @@ Migrating users from Auth0 to ZITADEL requires the following steps: - Request and download hashed passwords - Export all user data +- Run migration tool to merge Auth0 users and passwords - Import users and password hashes to ZITADEL ## Export hashed passwords @@ -34,8 +35,37 @@ See this [community post](https://community.auth0.com/t/password-hashes-export-d Create a [bulk user export](https://auth0.com/docs/manage-users/user-migration/bulk-user-exports) from the Auth0 Management API. You will receive a newline-delimited JSON with the requested user data. +This is an example request, we have included the user id, the email and the name of the user. Make sure to export the users in a json format. + +```bash +curl --request POST \ + --url $AUTH0_DOMAIN/api/v2/jobs/users-exports \ + --header 'authorization: Bearer $TOKEN' \ + --header 'content-type: application/json' \ + --data '{ + "connection_id": "$CONNECTION_ID", + "format": "json", + "fields": [ + {"name": "user_id"}, + {"name": "email"}, + {"name": "name"}, + ] +}' +``` + +## Run Migration Tool + +We have developed a tool that combines your exported user data with their corresponding passwords to generate the import request body for ZITADEL. + +1. Download the latest release of [github.com/zitadel/zitadel-tools](https://github.com/zitadel/zitadel-tools/releases) +2. Execute the binary with the following flags: + ```bash + ./zitadel-tools migrate auth0 --org= --users=./users.json --passwords=./passwords.json --output=./importBody.json + ``` + Use the Organization ID from your ZITADEL instance where you like to add the users. +3. You will now get a new file importBody.json which contains the body for the request to the import of ZITADEL + ## Import users and password hashes to ZITADEL -You will need to merge the received password hashes with the user bulk export. - -After you successfully merged the datasets, you can follow the instructions described in the [Migrate Users](../users) guide to import users to ZITADEL. +Copy the content from the importBody.json file created in the last step. +You can now follow the instructions described in the [Migrate Users](../users) guide to import users to ZITADEL. From 5207898f6004be0f84afb2bbfd91dbf45155713d Mon Sep 17 00:00:00 2001 From: mffap Date: Thu, 27 Apr 2023 09:37:25 +0200 Subject: [PATCH 19/23] docs(integrate): Google Cloud with Workforce Identity Federation (OIDC) (#5682) * simplify sidebar * initial draft * Apply suggestions from code review Co-authored-by: Livio Spring * Apply suggestions from code review --------- Co-authored-by: Livio Spring --- .../integrate/services/atlassian-saml.md | 1 + .../guides/integrate/services/auth0-oidc.mdx | 1 + .../guides/integrate/services/auth0-saml.md | 1 + .../guides/integrate/services/aws-saml.md | 1 + .../guides/integrate/services/gitlab-saml.md | 1 + .../integrate/services/google-cloud.mdx | 132 ++++++++++++++++++ .../integrate/services/pingidentity-saml.md | 1 + docs/sidebars.js | 1 + .../services/google-cloud-action-code.png | Bin 0 -> 193886 bytes .../services/google-cloud-action-flow.png | Bin 0 -> 169142 bytes .../services/google-cloud-create-app.png | Bin 0 -> 224171 bytes .../services/google-cloud-redirect-url.png | Bin 0 -> 162649 bytes .../services/google-cloud-token-settings.png | Bin 0 -> 221937 bytes 13 files changed, 139 insertions(+) create mode 100644 docs/docs/guides/integrate/services/google-cloud.mdx create mode 100644 docs/static/img/guides/integrate/services/google-cloud-action-code.png create mode 100644 docs/static/img/guides/integrate/services/google-cloud-action-flow.png create mode 100644 docs/static/img/guides/integrate/services/google-cloud-create-app.png create mode 100644 docs/static/img/guides/integrate/services/google-cloud-redirect-url.png create mode 100644 docs/static/img/guides/integrate/services/google-cloud-token-settings.png diff --git a/docs/docs/guides/integrate/services/atlassian-saml.md b/docs/docs/guides/integrate/services/atlassian-saml.md index f4e1a81d0c..f6be4726f6 100644 --- a/docs/docs/guides/integrate/services/atlassian-saml.md +++ b/docs/docs/guides/integrate/services/atlassian-saml.md @@ -1,5 +1,6 @@ --- title: Connect with Atlassian through SAML 2.0 +sidebar_label: Atlassian --- This guide shows how to enable login with ZITADEL on Atlassian. diff --git a/docs/docs/guides/integrate/services/auth0-oidc.mdx b/docs/docs/guides/integrate/services/auth0-oidc.mdx index 6aa17008ba..628900434e 100644 --- a/docs/docs/guides/integrate/services/auth0-oidc.mdx +++ b/docs/docs/guides/integrate/services/auth0-oidc.mdx @@ -1,5 +1,6 @@ --- title: Connect with Auth0 through OIDC +sidebar_label: Auth0 (OIDC) --- import CreateApp from "../application/_application.mdx"; diff --git a/docs/docs/guides/integrate/services/auth0-saml.md b/docs/docs/guides/integrate/services/auth0-saml.md index 42ba1a1389..3742ccfa43 100644 --- a/docs/docs/guides/integrate/services/auth0-saml.md +++ b/docs/docs/guides/integrate/services/auth0-saml.md @@ -1,5 +1,6 @@ --- title: Connect with Auth0 through SAML 2.0 +sidebar_label: Auth0 (SAML) --- This guide shows how to enable login with ZITADEL on Auth0. diff --git a/docs/docs/guides/integrate/services/aws-saml.md b/docs/docs/guides/integrate/services/aws-saml.md index c5f762a0d2..26a5c12fcd 100644 --- a/docs/docs/guides/integrate/services/aws-saml.md +++ b/docs/docs/guides/integrate/services/aws-saml.md @@ -1,5 +1,6 @@ --- title: Connect with AWS through SAML 2.0 +sidebar_label: Amazon Web Services --- This guide shows how to enable login with ZITADEL on AWS SSO. diff --git a/docs/docs/guides/integrate/services/gitlab-saml.md b/docs/docs/guides/integrate/services/gitlab-saml.md index 5a15f0a228..fc9c51ca63 100644 --- a/docs/docs/guides/integrate/services/gitlab-saml.md +++ b/docs/docs/guides/integrate/services/gitlab-saml.md @@ -1,5 +1,6 @@ --- title: Connect with Gitlab through SAML 2.0 +sidebar_label: Gitlab --- This guide shows how to enable login with ZITADEL on Gitlab. diff --git a/docs/docs/guides/integrate/services/google-cloud.mdx b/docs/docs/guides/integrate/services/google-cloud.mdx new file mode 100644 index 0000000000..eb75bcf974 --- /dev/null +++ b/docs/docs/guides/integrate/services/google-cloud.mdx @@ -0,0 +1,132 @@ +--- +title: Google Cloud with Workforce Identity Federation (OIDC) +sidebar_label: Google Cloud +--- + +import CreateApp from "../application/_application.mdx"; + +This guide shows how to login users and assign roles with [Workforce Identity Federation to Google Cloud](https://cloud.google.com/iam/docs/workforce-identity-federation). + +It covers how to: + +- create and configure your application in ZITADEL +- configure an Action to transform claims +- create and configure the connection to Google Cloud with Workforce Identity Federation using OpenID Connect (OIDC) + +Prerequisites: + +- existing ZITADEL Instance, if not present follow [this guide](/guides/start/quickstart) +- existing ZITADEL Organization, if not present follow [this guide](/guides/manage/console/organizations) +- existing ZITADEL project, if not present follow the first 3 steps [here](/guides/manage/console/projects) +- prerequisites on Google Cloud side [in the configuration guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation). + +> We have to switch between ZITADEL and a Google Cloud. If the headings begin with "ZITADEL" switch to the ZITADEL Console and if +> the headings start with "Google Cloud" please refer to the configuration guide on Google Cloud. + +## **Google Cloud**: Configure + +Follow the steps **Before you begin**, **Required roles**, and **create a workforce identity pool** (OIDC) in the [in the configuration guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation). + +Before you create the workforce identity pool provider you should create your application in ZITADEL. + +## **ZITADEL**: Create the application + +In your existing project: + +First of all we create the application in your project. + +:::info +Google Cloud requires just an ID Token as JWT including the [described required and optional scopes](https://cloud.google.com/iam/docs/workforce-identity-federation#attribute-mappings). +::: + +Create a new application and click on "I'm a pro. Skip this wizard." + +- **Application Type**: Web +- **Grant Types**: Implicit +- **Response Type**: ID Token +- **Authentication Method**: None + +:::info +You need to add the redirect URL and configure token settings after creating the application. +::: + +![Create application screen](/img/guides/integrate/services/google-cloud-create-app.png) + +## **ZITADEL**: Redirect url + +![Redirect URL](/img/guides/integrate/services/google-cloud-redirect-url.png) + +After creating, go to the application settings "Redirect settings" and add the redirect url from Googles configuration guide. +It looks something like `https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID`. + +Save the settings. + +:::caution +Make sure to replace the `WORKFORCE_POOL_ID` and `WORKFORCE_PROVIDER_ID` with your values in the redirect url +::: + +## **ZITADEL**: Token settings + +![Token settings](/img/guides/integrate/services/google-cloud-token-settings.png) + +After creating, go to the application settings "Token settings" and configure as follows: + +- **Auth Token Type**: JWT +- **Add user roles to the access token**: disabled (optional) +- **User roles inside ID Token**: enabled +- **User Info inside ID Token**: enabled + +Save the settings. + +## **ZITADEL**: Custom claims + +Go to your project and create roles according to the Groups in Google Cloud. +Authorize a test user by assigning roles in ZITADEL. + +Google Cloud expects some claims, including groups, in a specific format as [described here](https://cloud.google.com/iam/docs/workforce-identity-federation#attribute-mappings). +Claims can be transformed in ZITADEL with [Actions](/apis/actions/introduction). + +Create an Action with the following code to flatten the roles and include the claim for the users' display name. + +:::info +If you want to configure a special attribute mapping in the workforce identity pool provider, then adjust the claims accordingly. +::: + +```javascript +function googleGroups(ctx, api) { + if (ctx.v1.user.grants == undefined || ctx.v1.user.grants.count == 0) { + return; + } + + let grants = []; + ctx.v1.user.grants.grants.forEach(claim => { + claim.roles.forEach(role => { + grants.push(claim.projectId+':'+role) + }) + }) + + api.v1.claims.setClaim('google.groups', grants) + api.v1.claims.setClaim('google.display_name', ctx.v1.getUser().human.displayName) +} + +``` + +![Action Code](/img/guides/integrate/services/google-cloud-action-code.png) + + + +:::caution +Make sure that the name of the action matches the name of the function. +::: + +And add the the Action Script to the following Flow and Trigger: + +- **Flow Type**: Complement Token +- **Trigger Type**: Pre access token creation +- **Actions**: googleGroups + +![Action Flow](/img/guides/integrate/services/google-cloud-action-flow.png) + +## **Google Cloud**: Create a WIP provider + +Complete the steps in the [in the configuration guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation) with the `ISSUER_URI` and `CLIENT_ID` from ZITADEL. diff --git a/docs/docs/guides/integrate/services/pingidentity-saml.md b/docs/docs/guides/integrate/services/pingidentity-saml.md index fe5b88859c..ce827ef1b4 100644 --- a/docs/docs/guides/integrate/services/pingidentity-saml.md +++ b/docs/docs/guides/integrate/services/pingidentity-saml.md @@ -1,5 +1,6 @@ --- title: Connect with Ping Identity through SAML 2.0 +sidebar_label: Ping Identity --- This guide shows how to enable login with ZITADEL on Auth0. diff --git a/docs/sidebars.js b/docs/sidebars.js index 82def05fd0..2d7bc5578d 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -211,6 +211,7 @@ module.exports = { items: [ "guides/integrate/services/gitlab-self-hosted", "guides/integrate/services/aws-saml", + "guides/integrate/services/google-cloud", "guides/integrate/services/atlassian-saml", "guides/integrate/services/gitlab-saml", "guides/integrate/services/auth0-oidc", diff --git a/docs/static/img/guides/integrate/services/google-cloud-action-code.png b/docs/static/img/guides/integrate/services/google-cloud-action-code.png new file mode 100644 index 0000000000000000000000000000000000000000..f88d743f1a36a5e5db8c407e7d9e990ecd413d6c GIT binary patch literal 193886 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 R?`L1hY-R?+Ly(PuX{&_EZx;g3;86izuXl~A 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

N9F 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

j5upXm0QBKM5D5Y4s zl2piS-}+N&47W>cON_8+&L%Ux*E`3#c6A%jyHIoCH~6H-5d-V1L{wi@macPCkCUxM~MRS={DkWsCWli88ymz27&;bd&?jcpl8!L+#@tBQl8dX#D z56hA4jDx;puA`H&yn_|<6su99F6TD@9*0=H!Z73Uo6`}4KEzirTCNyU#NrV=%->Q8qv=uL2mI8bHpEqcGVHzjtWDOAP> z_wx?Se8o&?k#>=3!6qe<4zg!O7&^N-==9!T-`Q_7>eRraln10n1$=(hmEG`K%*%Bp5d&bHAIZCJOt|+X05AT-G=P8*rVpT5nc@r067nsx%X>n zCV^hD@FcIcC|yXx$Kc6po;p1t-P#>-)Q01?K<`s!pYnad9ZCi z3U8#p%$;;$V1~7mGoR@CXECAN2Kq>MM+)Ja_T8fCVCEC^l&e2-D;>jS zIE0#LUl5VnR87h`h!2upG~ZluO1A7sog&kL;l!}dvq{{?V7c{l!j?B&hTN)kYRr-5 zR6+}8v#z84B`&qp!Hu4q{v`Cbwa7&DbOjeD#zp5pR~(!i09M6}ha1K~XP?Alsj#*+ zlNhDVWRm1sxKO3o>SU;rIjn$A+Cw|!eH%pM5U$d7cv*3l-4Ao;x)fviv=PXW8(Rhg zB;`9br;VD&QV$^Lb#_wowV4AkTkyQwvRN)~`AqTMatGZXQ@(BHoT$mlEmPy`x~l*~fWC}|KlUUIJ2^M=`zs)G99{D^bFBQs?NYJ4 zR&)JGB6hW!@wVdw@y4-DIgFpwX9{jP58+v9bMI6~0)4Z{n-gH25Z+t)DvrmD%>`5a zFqYpY4WX3t4ogf9fK3=w;pg1shXcGkbBmY_3(!j$OJ8`UD-97bh~1>zaDV$-tDIkb zAqi*Tr1Woh2tD&rl%Go#Z&P*JS%;pyEBakk6sKBDj5X}+9dhNK$k-pD?6$fSs@=1u zrTKhoVJ**;5q|pJn+zlPl)XGGE>*uipaiER{Yh+N4hem~pE1nazcUwSY1E@9N2g#F z?A&8D9$n$PR^^poy*cWV8yFzMF)j`Ylj(ff0FbxE@*Unf-sV7cI)IcRdH9{BSGPl^ zo)bdU`Tbh)E$TnP=jJXWxe*(&D$%34EV?z%QrD{%%m)o(07fU%U{9ba<3&E`6?czJ zeEl*s78)Y-;X6n5u8?|RH%{ya-#%)@^R%=wE#w%(>(?*w@guH(e5qzoPi^o_Quf)K z$@C`%{3S1WJ1zyYm%I%ATws81%l}n4mwf2=RrKKK; zWjo(ns$7%QaoF2yk>(6-VtZfB4KAVRXiW&4V$yCMYq2Z{HrR(~ToQKHno|1408``V zugc2dL;?84jF*yfG(Anl)OR0bc46@JBF_WRbq(dXuo?dXDUgC$;Fcqzi^R?*G;NPs z-1L$x4!&bGt@F@0h`eg+yNFXD9>Ezi@=m-!x?WVQxr0w8x?I$5oSdn! zFb0<+2~Xb@=-tUF7zk)~S9ggwD3?kq<5quA;`UNS)BicTFR-k^y-6%$-g%(8$=@j4 z$dr4qIX&S#xCcDEMgIwEUjX+xzm7;0YULrYI&RzlzSqdNbTSHkHso>Sc5BP`Abhm@ zk5StuFEpa3nS5%@|5o$rr`};(%?d*sE%VJ!Fa||-zt={_EzwlgRg-PYTj%$K0-H$? z>~(U&mQkcLHAw=u2-)@{b>JQor?O&z7l^t0d^f|S{@c5huv9lnIg^4$^_rN)N<+cn z`Y?&xE^&(a)RNHs-JSTW5n5b1p!H_AZtD*Wsgnvzd1Ci%@}nZ%OXkhrtPM`+MA|NBC*$OHPMfdkZcAAF+H#-+ZpR376_+eqKI=YR!l`*O;iA57HHGyMa4R z|1i>q{#*^t&10s|F2i9^rZ7sAExYe@zIRjc2tyKdil zNgv(vqh)yPDZ-!4EMAitsyp)r`E)l8=rSS|a3$wiIq}J@_G>X23H{d6ks=V##O-!q zaxz2`<%!WQ{In*i5Ab>EGA2!_A^Y(y#)#dJu`P@^7R_s{U?OZB_-_{ZlWB;~0dM*1 zCj|pSP-%@4+mBbw!q?cLZHEmke5=#U)UhvC-uX1DGi9k&xBkLQH&L(!()8B!OMklG zri@ax3-76qfpm6SLWjZ@(Or*m($0@7 z^vsF&D#b=N+*Z4*lr;XHn^?(`p^+U7LW^h{)Os(`5nC6oVDbuu8G^P^MOV3O?5(@uwi+aM zJ}K_MKb6^kDlFlWhOWr+f+bBo%8i*s039}T1&r@Z9=BWdor8mQH(fF$!?`-z_wEaD zLsXi9IM^Tg$GBT}^WweU*!GH&`&FXpv=%$4$M`QqofLEb@`cM2EAPcHCc73z1e>bR zoYT5pp}|adnBYoyOC$i%6*AK@B|0v1oH7@OUXzzMe!~%|@)BOOw39B#8K`9nXWm`> zJW-vg3{^Jx>|(la0M$2x(5#52**zRxRFK?=hxZIK5^vJ=Lb>Ip>A&ztcMs#vWIB-uLSo&dGeUTSiislu}pdhPz0*-o~m- z8!0in60hb)F@IRTt6poqU{|{lCHXgwV)r4!eUcQZP+88&Q&|qw(4lLNQl7C@!kCFz zbldPaxo`k`>6X!eHAJ(VQ5P~3J8LktW8<~RfXyy?=61;>Wdw)X>D=302}+)8N)c;S z%G&hA-t;0Ku5fyYXi#r%qSxh}7gqe7;d?;j@wIM>Z2I?ped0283oV=9Qsh&ix!g@L z=*C^r26r8&ZT#eo1(!UrcP%3!=<(vShv-B=+C6|g+9*|o9>;@JE+!_s)zlA>VSHubGg~;lxBsoCg<2BfU zW!usF%031VE>+MFdhTIUKpC6WP|db6P^O&wpY34y8l`e3sm2@=u+rQ7YMxsi%=NOR zyZnkpjhOqCiBuF;;QGC!eGe!6EOyNj65rf1u0a(K<{4phO_XRGs^7CWp|IAR1p4gr z#nQXJ$f0Sfu%Y=*R&yK~|IQ>L+$hkcdBiPmj|{#v9k8VPhCaN?9ka4fyqmzzhvHeE z(V5&gzCE}e-w%}~ri1m3yxSuuvA|gt7tI1VFF_zZM5}m^$0=VU6Xodfc}S194Ns?_ zcNH0F1c7{$X)f&VRdvTbZ|{R8KSvCqu*>}6F<+-ulOEE-`wq2H5+7_qXOmHtM|>~7 zaPr}tW-8nAI)(Sp{X6yTs!1#}xy0<<*DbfR63qRwZYg=LHw)KA+zcl+Pe%{HNMKvr zHl2l_f3xFrY)odqJHE2@#NBfE>qgBahmnTS*3uF73QARG=#WNh;-re|=P37Zhkd6< zo1z&j+A#pxm^3?i*SCDgMHjL?S+*Pn+v7>$!HAXns4TgQ7{m-+wzsaG>rYR*6sex3 zIIzA&c)sqe)c!jCaK#IxPBY2K`S6&kjedI+RKqksRv224OI1c=)5pJSwl50R{!Xfr zR|CMo?mAF>qP}KNgn9BfWt`~x56^nH`P}y-`eWqbo$77nr51B~#Y(W*t;glC`XQ4y zJHV{y6tbc3Z>M*SH{wVe;&h_fpw(Z`Dep^P;pfRK_LVz#C|`fk0(|Xo?dgYG_&sV? zd-;>b!s(^E3qkKjdxWQ~0+5{v75=HhPV)1id#hbsoA6i}MBA*ZbN}qy_8j=C*}JC1 zD(J)=?H!Xr4&31(ZTnx*jjf;mo5T z1bAnbtyt-VkN;p1sn-CSq1pYoW_pgcOINx6kZOud`|42KOkc7?pF?R%*Nc^e_fh0R z?2lu4?3OOZeg1k|#)ZTrX{D>M{QPwfN;3Jo3C~K0FzytqI*m{{aYjcS+F@+^vjeSDo2vAeyAjZp6Kx zu4%9zFxHBng$(#|{9o?epSJon1+dk!pM9PZuMa+p${%3y>@p6l-oE>M{gv<|&mfJ# zL3?OI9d(w~TOIf5YSnsQa+H!qxxG-#4y3CuZ>z28^l5PwB}#|-hS6qW{?jdxX=CkR z9gk7&tgjUqVS+ zjM58UAc@;V*-3YwxqzzzT5WM(;8UH@*eIYk)SyE^_1Ljb@zW*o@~gF0&0{_p_H3>~ zO{|)3JNfqqZ_~Wq1GgXH(;T|UN6Y{J)!va&SN_?oR^jn?H}(4 zfi9Li_YSrnAnH+&6_k!E4sqUfT9} zdzs8%tmsm!okN8RUs>0&^DojYhjUX7Ak=c(SAvY-qH63&8zC_ZtJ=8}#Go;r046DU z_==UmJ4YH@T!a2r91`U^6b(!60|iy2+Sb+o>DmJ`mVpNn{9)a45AmIcw-Lz})03Ti z;(H6ewoSuP{#!NQ1NuPckh9JMxG(M1nt4UroG|PaEw3(l=p~x5#8k^Q5L1xA*@kZp zP86AS)m@9yJ`XMkP}|h95{C6V!}GhyV5Ho}Z6wU`j>eZn-7GaMG1@L9npWFz%l9qW zRSU1;6Y9zOIkPL`!ZV_M$YB6*7ud}6zZ(|*Oh8cc&I z?zWoCRs3W13oF348^?9R2Ey`~<2{VG*1I?horwF*fO-hgrEO|){>yuc7i62M1Oy9i z1@}36CG9XcD&6tC@kzm2Z5!E(@=Muwdm3z>ij{2&upm|$-%brrEk}qf`n6{&!=GOo z6So(b>I<*iT0x~Xt)$%Yl3alR@S`5np~Rd$ASSf?DItD^-b$ykx@mzQvbCQa`ulRcwRP`nA28@@naj>x)*0}Hu z8sL^L1dzJ33j6Z5Wovp>7uSPhpy!30)mRjHCTeJSV|Cp+V1-cb@f~AMECR{YQ)&A>h6#{VH7BbZ-;zfBbI}#{4Vc^jqAJYoo`DM47lhV0q|m?Wlh;vOYa*B;SWR2+Bn+Xp27M+ci)k z;Lc&4qgkA3=L#%s9k@5Q6(PouP+c;Lo%i#_6}fB*EPd_w94cmXE{zp7ln>raCnsQ%3i&Sj9`F0K zpFgE_cp_YvNFcF=oM5~>uLgTvozLy@%Tsn!w(;fBm3!k6SMTjkK-ZNFPGwcQZICeI za}q{cHmhPLZ& zO7dG8t_;AZ)Z!Yl-x(fFt_?NeKyo7I$4f0o!REN$y?EO0{aTbuzu}uu)D)|Gn*47Fu?E z6-Hx|FFO<0qSWe_$s`V89`ZyfKa@~Gsl=7&c<9dElA=GSq6R5{A-uXNjP`fnEW7H8 zm}{YSD(Ty$)GyU`&ZekB-iU~g7IA$f@-DoBi4OazbU_AD$dv>x6#4L%C5&UUNo*BsNrDD8~riJ&eFRo;WDQ*VkZb}zgCKo zBUpr6om$A+KSY;JxKxi9=edJ`AqcGol&VwsdYXr)HaSp3h1)y+r?Luk3IL%Rhh8An zrWm}$D+W;YgXpUC0n5?GEz$-EfD*k3KAbhdr81FiPi06igG`ElxNV*nu;KF1W8=cA zXa*01Xr9>}Y8R1;eR-LV#-M33k+cUfC03NAuzokpg0QlI4m~=h`Q3`5!De()2AK0L~-3*&I@JWK2%@iK;(3*(l^o~oM*H0DCpAy;$u}E zX9%B&$3#c^-Acp$k(&A37*R^%M)fd*Fw8fys)_F!J7?h_&mzBvF6WvV&>Wkk)(l-5 zu46onJ}-0?esdaeB7}nBD&r(??=WrSgs6>mzEHYLunwfTy!mMhaT+EV;V{nb(lb-v zNV5riFfYWycJ-z(TV+z^`I8ud061phofWr(D30PmC>4!$`Qp;@gF-{cB^BTn2{{m} z7{vUMIuhIc(VjbeWreHK6WdQYT4(rh(yqA$g|%Eem)*D-v@P3&1r9PXXT`_HbNvO6 zNeU4{dtWCo1%@JzO}H8CS_qrj=FpwvTOI8n^dPS_SIR#${QKYt0_#q7^9&!nfg*JQ zODK||ZWW#rR$X5-+ZCpOe!q;(pAM6lO21|~eIeU(sFl4TQ+0V);%XBqzS?q2Rj>7G91MQmkW7J=jPfnLGL|HC&x%+bgg}huF z$k3Y=Tt1vq)9c`i3}o=UJ>&@Y>Pn-KO>|EksSZnhE}r9J%U>$ifHB_GDfoUZAfg=3 zh{&-v&<&Njk5M=CpC~Pm*jk0#nSB}Q^L#0D&1JDua69m9c->2k6yGfRvlgVQb(X)o z4@QYO+{6ij&rH5YxR#(hB~v>p95<@})$36P>| zz*~*Hq~t)#ns15G(eIKiAx;o-ygBzk7qW351a0p1%t;UhC1IARKySTbk;XfmhewIt z64$_`Fs!bQtXusRjyfFK+t6T1^u->69F1a@nTIA<(S5Wlqxs8N8pIz?paPwL?7@hx zZ^CsB50{SlOtD>7vuaC8M<-hiIv;4gz|BSBt1>taDitmL4RaQ>mw<@+m901~{W?{~ zCHYvMf&r(~?-?(v<-D<5zwle8^&g+&Lp+GWCPjp>e25cL7zTx$w(^sq8O{qIZsTtb znqcy0J_dav$NZ2C^*@Ua&2Blpp>)JR-V)(p!{XkI1k>D=$R9Y9IdG^O_@|~ilZ_=+ ziU8~V7|>OJn2!H*g5Mti06L#!GE*wJ*e>$!6PlyG4MyDta^i8esZ|4fJUdW+`cTvH z$FN4Mz*!$m?kK<#5U9+jq>&x!(*LoqUxt96<#67tqJ7`1^U_4KO~FO*>?e^0~zI&YrW$*}D%BN6#pnZtbo*qps z2|ao+*){J}({1o5-0RKy(a*Ni0v*w6*S%gY2evqYhvR68CAa|e4f_dsnoi95b(20m}=vSqeFtuG@Dc@`c3Tta_}!k=kHTSTsY> zJbzqlaQetMz^dn%z|Mxo3jI_!w~mqqZwV-{I(+k^UE3Z$DcB^%#ctP=`%f494o|53 zxdNZRl$TsT5v@}nEOTSA%4@%Ppx{5q^6?WJAXw><%IQbOAQ#-UP-G0-({tP^2-vqb zNUTPt>KlomXDnGVM-eRIU>8VEr*3hyir+D>L7ojv)L!hyr)1CsQ}szZd!~plxU%vn z>(vP~sEkSfSN2wzzB$M4Xkh$%_e&gA6J_R2WCT3b;QYaClLYxM+w-gNe5nFVIz60C zVnLwH?c2HkgZp;nEauBTt?t36SI>Y$TulNq_($;C4K2VEWy(~M*`f+os2YQrVT<7Q zYKy#f{fxHc#Vd<s2>8@ah9pro_)szGrs@A)Rim=~K?IY;hqHJiu4p9JM5@#rftr6-Fc+Tn zog--cXR@sC0%EeCb#Fs*oC9WMg!!d zpX7crT?T!2ZeoklusJk=I47I-_z9!S%iqqI29EL?=Mt&F^-LYXVXZ@_(tQ&ML3kQ1 zrxLmHAZN#|1?Y4^xFB_9RZr`XB4>^$3`=~l1iHeA`+~!~ z^o9cO)!LSly-fnvyrRt^mI^s<2`VCRy>QlOZJ>>`TO>o;6hoB$w9~62rqmJ$Xk*Mh zQ(ill-41yrr;id1wcxAneR2ZNoJh-aSiLzL$r(;uu5Z2sX%%WaQq{-;`L?3QxD6G% z~#qKp%VJV&v(5g$_Ye-Cu*0++MB|bCIT|bcP2X(_kQK)-=+q1>lpuAn#@Kr z1d*_nm%>beCEB>dJ>jav2WOurNpA>ThCI#eZ;3x{70<1%fgYuEB*uY+(I6^b3WLg4 zGh}u8!=5~05L=WKLURuQoI(E;jx9`Vx66aSY6@wt8h=vGFEeknyZ#nh(@K2v}rtrEx6 zdJm@~*FK;k9MXcHWh8!2NcsZ-kb$$$Gmp}04-Q7Z;=E_AER!EwWw;T|#D=dWE?-O# z5%tBJI4sqBTt?@W3JH9HT%|cLdgW)0;NB4=p?(S+v9}f1 z%rx^g&OHb|b3+l#Fox`n^`YUT_c0$4@c;DE+jKxsZ62?`l=v%kcTAXt6KF| zm_gn8ta7b6ICoc{97uA*U7zl1d&Ge!*zIC-s7^X_S)mMYw{6ySmYZr;SDu$%Yrg@W zf1vMt{;21R!1Jbc0oH)@?R5jp|BLb2d3WDXao3$@s7kadF+nKTzaTDYrtftz=?pzz zU)-A*se&GMU(DY&u53|MWboWoxg@exQPh?PDOa57N=J(zIh99WiF?rKTw2wO=JPaH zb4h5GYzi5Ege-D4KQQP2L4Qkvoundrw825BlI4EEYrXcgjo)c{+6XICXe*90yJp}) z|2THZ1GC4k-~K_dYt9p!O@p;6ZW7_$SaRnK3}mQb%z-vcRR$=l4uAN7RZN#9>`IdZ zNh-E;;4&L!g#^KiulYJ|ST7E+({B!9A_OnG`F(~Mu{Vm4%Jlx7rnI@5UFx~L;h66I7HPkG8{8n~81 zp?a^6THE!5wVm}CExib?ALYe_A;?`Xlh9#JHEjJSRf!owJh+E-t%^yfw-Y{ZyI8!| z+lX7y4VcdpXIgxe0S-&|6`3j4x5RMQ-6dv^-;WNF0pULTt6(r|!=#^}`sgSTXsVzR03G z48d0bVJ;Z+ALVu52M$-zb<3Gkpw4ivO?#}w1zlXnr-{CZ!@w%*Eb_z?MxL#;IuqJW z%?*_Z$gBq;#7R<`JR#9qg33x2f8VB-;fwI zdeAn$*}DpwR|z?4RJf~Imn(-kq}0`uqu%!PKU>qT&&;w`u-JQU-;*6P8u$hciV$*!4h5SW{61dp6uS>{h7S4?|M1a}7cKc_j0>+(285}COW8jP8n zXN-|sKylBmkp`|3T|>q+;>9kCGUyjW4z%!yxqc7T|N2t3jvw`g6y>!qYuaV}E`K5n z?)Tm;@BBcqrify8BL-|pJrG{{M$Zk`Xs%KC1SF^aoQxw0D;w;=Kpyo)d%2eATcY`+daYop=v4?eXnF7HU*#Vl2K zyLM)FRJ z6?glVO1&P18eGP<|FEdvS{X0wb#SqtZ&*8xn{Bb=5)mW3cUs&-8)OU-_F0CQUJZ+` z{Eh$^VU8x}TT%X%K%07H)r1IoDMSN>=Ivcfu1sO?cpJdxlEF~8x8~E-J3uw}jV(zX zVWj3j?3|ON$<$*$ptsQp4v$x7o3MDKj*J^!g~hRi8;y0IIr)Ulw9(2eq{VoZdd;< zb>Gyf;BDYpa7KEdi*)Q zI(lJU+a)N!;{oiU$+wZ`U9baXnHEK<>yeS)`Dp%X)A=x}Y@2QZGlNRuMaSo+?;_~q zS{AA&d)5kDH)lGSflB3moOFx*4XvPv$KFQYx(3eO9;AAoTLF=<7&1vH<|h{4-*)aV ziF+oMKX74g>ERKiozezs5p5i-m15?L4B`~LJ`tEoihoA3Pm(+%R#aoooy2vtb|I{s z#=1;aEzbtFz&>`nTwcUZ(=DE%&4|b|3C~+q*VBHA%d&D&Our%inxVl<7nG-};mLtr zJ>GyoauI6ZMaZD^ zg(Fo_0_xPyQ@I4yuLztf3}UY^baR!fHIKIwdiK@AtbDOV`0~1zHS%$I^X*E5aF?FM z7t|9nMuWvh%CS%3oz*W#)EPeS||tu%UMMFyrBR z?in9Pvf|82qit%=@nShxhI% zF@P>|d$ax5Y`NiQOy-PgP>|`=<(U-z)Id_I>_#rT(BaT5zDnM%z%5aLqI=CMFKyCX zVl~LIP>RmzPj%zoK<}dOk3tb*(&Re~&N|L2%Lbvtv?Fdi4ePs!ULs;eHmIA5*Y+T0 zGxhr4-UfE=i7&W4-t^2uGyAOjLQl@}dX+rvbL^taLI#~y3|pymYj2+2$}OMbtV@IS zF|vmr~eJ{0qy#T{*kt^})Qv zRO^BB4vJ36K!m|{B4D|#k~4jpA7vSJ#w2&jnt$lIv2%0($xU%~fUGcGnsnT+M8gPu zPbI`IO`pmNhs0mXEgSP&-+d~>PUno;vw=?Aso0DSV|2*K#XTh53c+nB2`+OzrUGF*O`9#qu<{LMAW!i{T(iC<#a zsW+t_K%3H46FoOamcM7of7)@-NZU?y=OAVXbz@e?Zlyy&0B097;kk*EIjXrLDQqPWuAcVIW3UI_!LBVEB@S4A;|q8?I^MX&kF(} z)_XpiDm7L9s_cTT);R&|aOV9p9F@E1SqRRuXMJKJ6s%&1>VrkzURHiH!YfLXy%Gf$ z(AO_7PIngP-g~VdGL5#ZaV?Bk%|u2$4KaEq;kid@Vu*4A%?5&b`Q%1ID-4P;B>+S# zy7dDJViC3o-JCXq|D4p_0Qu*hlR0)-fb8?4e>s{azEw5z)@LcCjn#XKTVn;eftF8R znDiwR;btppubW-*KN%_wn=Xp5)~=l^vrF=iv!;LBgNAkrCF{b(jnVHwtIrom5c&nW zFIBT8=ntgIAlh%nFbb^%qVHDTr;stp&F!;j&0nr7MzDD@5|-;ezPlu_<_HR#{%Gb9 zd1G?U3j@q>Le5@;$^7o82@ZmtdnSq1%vIRA@LAkaoB{--!d-0 zh|%Xz5I~5T2Wv>>Yv?Wk5oa3O|MH>8EnRN7j=@>fI9GPq9W^Mwb571)-v)|1>3p$NM-(S)mrnoHA#8`$w0AKok7>>dda9ZQ44mL z*5Y*kvd8H77o(3GhNwz@`dBSmMCck}9+BN|!Luunoy2nouByA0obbv>0lD3v5MiY1 zqZ3niOZZXL=jgq5dx}i8#I`8oc5B|6n^D!8*D4VmAy~&x;DZttv4r`+l@~}X7UhXZ z)dyii*PIi(d>m>skSWlA2MrSvO{iQzJ0ON>Kr`Z3>mDSsrH}4*Q3$>tzg@atJ^zsl zvRh^u13LT44|%}7mnWl=QhUwk;nPW8XO_y=KCZj%-r!O59Bl}!3*r=u@0stl32iq? zb%I(=EJd)Wd2SRl*K;F=!ujax=YSuc;Fl%i=RZ&+8#Swal~7}lz3^V~q=&(1fq^(- z>5!X_24?^~E3f2<+Ot<7${Q3~0!6aM57ciMu?XnN$s7Q8kr4GCnFf1(5ug`Y`+jWTXKgUHB`{LWPjk!*r*Dou zEsfG$!BF4Pv6iNs$INX&Gchl(&(8JTN~xo%Pb3V#F5AMFAZ);!*peVh6WXh3lhvLx z_*#FUyLl9PRmpR)IDLF}LB%v5+oQ?p*F+DymP6^=mSj_~SUdZ6QjR;*L1e+@~_-ZoIb#sX)qLp0bz!uR{duX3~UZZ2N zS9Z^a1dkg&LP4E9RnyB08+Ga(7O|}Au<7bbB~ob$-M>BLvVU>5WvFkuOg2I2+FslK zOKwHXz?z@o_9&me{q41NAYrXyUR9Aa_ojQny;#Cm05-OKeI2;vBoCuRAZ#$T;_<#D z;0JO!E*5&Y>Evq!Hyv4SQTPOOg!GqyJPuIMS-Gg1`1X{`Ez3c(ruw@e6GLQuz0J9L zcFN1>Wc@*0RmvIN#gxi9<0=)7*IppKj&uzQFgt=U6 z!~lp4A&qbX0iR`f3$0bDG_q3tAmuS8Yzo^pwtT*~kzU`FGV*X|&}EptlPYhvb|Dnl zMY%{(dfEq}xX%Mnj+(8f&F8+&`|(0HgB%}@KBlWRe^AGNlxb5S0*RoT7ifw|Yt4OE zd!Q?3U1spx{HmN`F15KZY;Zf7L>bhW(0 zd{cWA11Um$UqWM{U9v4>MXdYr-aDp1W~fHqBk~=qVs|yRTNQgDKC>%r!W-n;#)uoO z5eN_Y1iov#)8b8Ofmyi~cd&{5EycU&OR;h?#@`z!y}99Z(@|y|O_3+8IhazD4o^{X z!44{-I7*Oy*@L2h~u9Jr0bG<^FjNv@lT%X3-sY3Z1OdB5cbN~U^X zA|mK*N{5dpPupirsXheFOJ{Oy(VnWGb~LTaHPwtJH_X{p&6q(Mo9|=d5ht7e$b4=x z4OYEC%5VyEB)pnbjF)O1dhG9ln^_S~=5yd(?n{)tI%0Nq@>DXKznRAe(eMI#T zaYQxjJ;%WgoTbQ)+&j~1Lia{yhl~NIwKdU&sr&TsJXD^+q`-NuTQs|PDlOSzI5wPZ#8CQ>}$5~}lEdi{?=!e z6qs2dgEJ_9k#~3u)y{UM`)4RJr^AnzTJ{&}y^7&B31|-YA|U4IyIy2nEm6C{Qt&~q z_?#3Hw0%6RA|i1OKr`SFrT=YJ;TlL<#A)FDe?fzQsP*rIOx^#kWbuFR;L7g#ZtJ7d z{uJyQ-FXj-3C`Rg_ECo#0}!W3<{a7{+bf7cJ1#-g9aWEvm^=XPf_-N+PZW5<-imcs zg4k3xt9$Q&vOUGtXdt@ID_7uQz6Sq0*28tg-xWzGr%#)DPSbQ`WTKIa+N#$8?#T4i zi4-xav)21)FHqXk%XWNsxCkBKg&J%wpU=IHnoUyI->cE|ljXxYL1(JLi5Z2;FWd<6 zGoVbXX8LZIa=!)lZ9BI*@jq1mfYPEtRnfa-Q)QRvel+N_$s3>Vh-ASdhzRVSfgpj6U_%e^gc0)m8-B-pUf_?o zV%{$w;F}+2vYW`O$fjqv09s%vc(tOH>`G9&W^5drI zV88RaRRed}CVrtwe0B%m{?+w^4X5T*;?U33e>`BIX#9NembJ9dBkVDC2oSmbE<-6H{TR( z?sY;7>ipbp_f`On9Qi}3zAFieZ65e+Fk!p~m57hQ)_+3RgIwNOv2DkD&uzZWn|+Ag zy>=n94b%n@N8oT;bwJ{FA%N?Ac4J7dm;*1!t!ZH2x0zTulV{Z9u}EA#m9cUwEVMiz z6AD-UqUery1hEw|0IiJ$3uA1ZHeF)#8bhx>4n~ASROwVjb=*qS#WLj1nE(G$Cpl7e6+#D68IX+Mc}K zJKa|ngh$ZgE3w#NYR^~wmQXePlnH~XO~vK_5-xBgKrQwF@Yv0yu)eqE+tuIXn!ZN1 zwj?y2Cs3;>)5@HYcxsglbgrDM+kT-6< zrdAcA5`SHx{KQ(ke~)rE>Ue=Ut7 z(CmRj#GsEjs*3RkrXoTR}2qS&3|>) upS8^YD)>K)$bYTjpMK2$PuF32KbP%g;9D!6Q^&xchxg^~<=)kM@qYlePtqv> literal 0 HcmV?d00001 diff --git a/docs/static/img/guides/integrate/services/google-cloud-create-app.png b/docs/static/img/guides/integrate/services/google-cloud-create-app.png new file mode 100644 index 0000000000000000000000000000000000000000..35ed509b36d480d52a8b03bf525f453ad43fd94d GIT binary patch literal 224171 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

2%@7WVWV`3>j3o= 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/guides/integrate/services/google-cloud-redirect-url.png b/docs/static/img/guides/integrate/services/google-cloud-redirect-url.png new file mode 100644 index 0000000000000000000000000000000000000000..74d62f21ee3416463cf50fd7ee65c98e58487600 GIT binary patch literal 162649 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
agk60Xc_#%%xlJ1NbDcRpas# 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
-0=jG>W?fc=S*v5oid8G=P<_2VekpsYk78 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 Date: Thu, 27 Apr 2023 10:28:26 +0200 Subject: [PATCH 20/23] fix(step10): separate executions (#5754) * feat: allow skip of success page for native apps (#5627) add possibility to return to callback directly after login without rendering the successful login page * build next * fix(console): disallow inline fonts, critical styles (#5714) fix: disallow inline * fix(setup): step 10 for postgres (#5717) * fix(setup): smaller transactions (#5743) * fix(step10): split statements * fix(step10): split into separate execs * chore: prerelease * add truncate before insert * fix: add truncate * Merge branch 'main' into optimise-step-10 * chore: reset release definition --------- Co-authored-by: Livio Spring Co-authored-by: Max Peintner --- .releaserc.js | 1 - cmd/setup/10.go | 20 +++++++++++++++++--- cmd/setup/10_create_temp_table.sql | 6 ++++++ cmd/setup/{10.sql => 10_fill_table.sql} | 9 +-------- cmd/setup/10_update.sql | 1 + 5 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 cmd/setup/10_create_temp_table.sql rename cmd/setup/{10.sql => 10_fill_table.sql} (58%) create mode 100644 cmd/setup/10_update.sql diff --git a/.releaserc.js b/.releaserc.js index 177956a628..b8d5a8551a 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -1,7 +1,6 @@ module.exports = { branches: [ {name: 'main', channel: 'next'}, - {name: '1.87.x', range: '1.87.x', channel: '1.87.x'}, {name: 'next', prerelease: true} ], plugins: [ diff --git a/cmd/setup/10.go b/cmd/setup/10.go index 4efccc6537..fd8683f49d 100644 --- a/cmd/setup/10.go +++ b/cmd/setup/10.go @@ -13,8 +13,12 @@ import ( ) var ( - //go:embed 10.sql - correctCreationDate10 string + //go:embed 10_create_temp_table.sql + correctCreationDate10CreateTable string + //go:embed 10_fill_table.sql + correctCreationDate10FillTable string + //go:embed 10_update.sql + correctCreationDate10Update string ) type CorrectCreationDate struct { @@ -34,7 +38,17 @@ func (mig *CorrectCreationDate) Execute(ctx context.Context) (err error) { return err } } - res, err := tx.ExecContext(ctx, correctCreationDate10) + _, err := tx.ExecContext(ctx, correctCreationDate10CreateTable) + if err != nil { + return err + } + + _, err = tx.ExecContext(ctx, correctCreationDate10FillTable) + if err != nil { + return err + } + + res, err := tx.ExecContext(ctx, correctCreationDate10Update) if err != nil { return err } diff --git a/cmd/setup/10_create_temp_table.sql b/cmd/setup/10_create_temp_table.sql new file mode 100644 index 0000000000..fb823b2ecf --- /dev/null +++ b/cmd/setup/10_create_temp_table.sql @@ -0,0 +1,6 @@ +CREATE temporary TABLE IF NOT EXISTS wrong_events ( + instance_id TEXT + , event_sequence BIGINT + , current_cd TIMESTAMPTZ + , next_cd TIMESTAMPTZ +); diff --git a/cmd/setup/10.sql b/cmd/setup/10_fill_table.sql similarity index 58% rename from cmd/setup/10.sql rename to cmd/setup/10_fill_table.sql index 591d0b3d88..8c23687aff 100644 --- a/cmd/setup/10.sql +++ b/cmd/setup/10_fill_table.sql @@ -1,9 +1,4 @@ -CREATE temporary TABLE IF NOT EXISTS wrong_events ( - instance_id TEXT - , event_sequence BIGINT - , current_cd TIMESTAMPTZ - , next_cd TIMESTAMPTZ -); +TRUNCATE wrong_events; INSERT INTO wrong_events ( SELECT * FROM ( @@ -22,5 +17,3 @@ INSERT INTO wrong_events ( ORDER BY event_sequence DESC ); - -UPDATE eventstore.events e SET creation_date = we.next_cd FROM wrong_events we WHERE e.event_sequence = we.event_sequence and e.instance_id = we.instance_id; \ No newline at end of file diff --git a/cmd/setup/10_update.sql b/cmd/setup/10_update.sql new file mode 100644 index 0000000000..5254ba8dda --- /dev/null +++ b/cmd/setup/10_update.sql @@ -0,0 +1 @@ +UPDATE eventstore.events e SET creation_date = we.next_cd FROM wrong_events we WHERE e.event_sequence = we.event_sequence and e.instance_id = we.instance_id; From c8c5cf3c5f825ce9d619cd7914c74117f5023d11 Mon Sep 17 00:00:00 2001 From: Silvan Date: Fri, 28 Apr 2023 13:55:35 +0200 Subject: [PATCH 21/23] feat(cli): add `setup cleanup` sub command (#5770) * feat(cli): add `setup cleanup` sub command * chore: logging * chore: logging --- cmd/setup/cleanup.go | 51 +++++++++++++++++++++++++++++++ cmd/setup/setup.go | 2 ++ internal/migration/command.go | 10 +++--- internal/migration/migration.go | 54 +++++++++++++++++++++++++++++---- 4 files changed, 106 insertions(+), 11 deletions(-) create mode 100644 cmd/setup/cleanup.go diff --git a/cmd/setup/cleanup.go b/cmd/setup/cleanup.go new file mode 100644 index 0000000000..7139b67d35 --- /dev/null +++ b/cmd/setup/cleanup.go @@ -0,0 +1,51 @@ +package setup + +import ( + "context" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/zitadel/logging" + + "github.com/zitadel/zitadel/internal/database" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/migration" +) + +func NewCleanup() *cobra.Command { + return &cobra.Command{ + Use: "cleanup", + Short: "cleans up migration if they got stuck", + Long: `cleans up migration if they got stuck`, + Run: func(cmd *cobra.Command, args []string) { + config := MustNewConfig(viper.GetViper()) + Cleanup(config) + }, + } +} + +func Cleanup(config *Config) { + ctx := context.Background() + + logging.Info("cleanup started") + + dbClient, err := database.Connect(config.Database, false) + logging.OnError(err).Fatal("unable to connect to database") + + es, err := eventstore.Start(&eventstore.Config{Client: dbClient}) + logging.OnError(err).Fatal("unable to start eventstore") + migration.RegisterMappers(es) + + step, err := migration.LatestStep(ctx, es) + logging.OnError(err).Fatal("unable to query latest migration") + + if step.BaseEvent.EventType != migration.StartedType { + logging.Info("there is no stuck migration please run `zitadel setup`") + return + } + + logging.WithFields("name", step.Name).Info("cleanup migration") + + err = migration.CancelStep(ctx, es, step) + logging.OnError(err).Fatal("cleanup migration failed please retry") +} diff --git a/cmd/setup/setup.go b/cmd/setup/setup.go index e90ad85f94..918f08dc2d 100644 --- a/cmd/setup/setup.go +++ b/cmd/setup/setup.go @@ -45,6 +45,8 @@ Requirements: }, } + cmd.AddCommand(NewCleanup()) + Flags(cmd) return cmd diff --git a/internal/migration/command.go b/internal/migration/command.go index 9d04e3cbe7..6552ef6ed4 100644 --- a/internal/migration/command.go +++ b/internal/migration/command.go @@ -41,14 +41,14 @@ func setupStartedCmd(migration Migration) eventstore.Command { BaseEvent: *eventstore.NewBaseEventForPush( ctx, eventstore.NewAggregate(ctx, aggregateID, aggregateType, "v1"), - startedType), + StartedType), migration: migration, Name: migration.String(), } } -func setupDoneCmd(migration Migration, err error) eventstore.Command { - ctx := authz.SetCtxData(service.WithService(context.Background(), "system"), authz.CtxData{UserID: "system", OrgID: "SYSTEM", ResourceOwner: "SYSTEM"}) +func setupDoneCmd(ctx context.Context, migration Migration, err error) eventstore.Command { + ctx = authz.SetCtxData(service.WithService(ctx, "system"), authz.CtxData{UserID: "system", OrgID: "SYSTEM", ResourceOwner: "SYSTEM"}) typ := doneType var lastRun interface{} if repeatable, ok := migration.(RepeatableMigration); ok { @@ -80,7 +80,7 @@ func (s *SetupStep) Data() interface{} { func (s *SetupStep) UniqueConstraints() []*eventstore.EventUniqueConstraint { switch s.Type() { - case startedType: + case StartedType: return []*eventstore.EventUniqueConstraint{ eventstore.NewAddGlobalEventUniqueConstraint("migration_started", s.migration.String(), "Errors.Step.Started.AlreadyExists"), } @@ -97,7 +97,7 @@ func (s *SetupStep) UniqueConstraints() []*eventstore.EventUniqueConstraint { } func RegisterMappers(es *eventstore.Eventstore) { - es.RegisterFilterEventMapper(aggregateType, startedType, SetupMapper) + es.RegisterFilterEventMapper(aggregateType, StartedType, SetupMapper) es.RegisterFilterEventMapper(aggregateType, doneType, SetupMapper) es.RegisterFilterEventMapper(aggregateType, failedType, SetupMapper) es.RegisterFilterEventMapper(aggregateType, repeatableDoneType, SetupMapper) diff --git a/internal/migration/migration.go b/internal/migration/migration.go index 3608332a8a..63a6cb7b7a 100644 --- a/internal/migration/migration.go +++ b/internal/migration/migration.go @@ -12,7 +12,7 @@ import ( ) const ( - startedType = eventstore.EventType("system.migration.started") + StartedType = eventstore.EventType("system.migration.started") doneType = eventstore.EventType("system.migration.done") failedType = eventstore.EventType("system.migration.failed") repeatableDoneType = eventstore.EventType("system.migration.repeatable.done") @@ -36,7 +36,7 @@ type RepeatableMigration interface { } func Migrate(ctx context.Context, es *eventstore.Eventstore, migration Migration) (err error) { - logging.Infof("verify migration %s", migration.String()) + logging.WithFields("name", migration.String()).Info("verify migration") if should, err := checkExec(ctx, es, migration); !should || err != nil { return err @@ -46,11 +46,11 @@ func Migrate(ctx context.Context, es *eventstore.Eventstore, migration Migration return err } - logging.Infof("starting migration %s", migration.String()) + logging.WithFields("name", migration.String()).Info("starting migration") err = migration.Execute(ctx) logging.OnError(err).Error("migration failed") - _, pushErr := es.Push(ctx, setupDoneCmd(migration, err)) + _, pushErr := es.Push(ctx, setupDoneCmd(ctx, migration, err)) logging.OnError(pushErr).Error("migration failed") if err != nil { return err @@ -58,6 +58,48 @@ func Migrate(ctx context.Context, es *eventstore.Eventstore, migration Migration return pushErr } +func LatestStep(ctx context.Context, es *eventstore.Eventstore) (*SetupStep, error) { + events, err := es.Filter(ctx, eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent). + OrderDesc(). + Limit(1). + AddQuery(). + AggregateTypes(aggregateType). + AggregateIDs(aggregateID). + EventTypes(StartedType, doneType, repeatableDoneType, failedType). + Builder()) + if err != nil { + return nil, err + } + step, ok := events[0].(*SetupStep) + if !ok { + return nil, errors.ThrowInternal(nil, "MIGRA-hppLM", "setup step is malformed") + } + return step, nil +} + +var _ Migration = (*cancelMigration)(nil) + +type cancelMigration struct { + name string +} + +// Execute implements Migration +func (*cancelMigration) Execute(context.Context) error { + return nil +} + +// String implements Migration +func (m *cancelMigration) String() string { + return m.name +} + +var errCancelStep = errors.ThrowError(nil, "MIGRA-zo86K", "migration canceled manually") + +func CancelStep(ctx context.Context, es *eventstore.Eventstore, step *SetupStep) error { + _, err := es.Push(ctx, setupDoneCmd(ctx, &cancelMigration{name: step.Name}, errCancelStep)) + return err +} + // checkExec ensures that only one setup step is done concurrently // if a setup step is already started, it calls shouldExec after some time again func checkExec(ctx context.Context, es *eventstore.Eventstore, migration Migration) (bool, error) { @@ -88,7 +130,7 @@ func shouldExec(ctx context.Context, es *eventstore.Eventstore, migration Migrat AddQuery(). AggregateTypes(aggregateType). AggregateIDs(aggregateID). - EventTypes(startedType, doneType, repeatableDoneType, failedType). + EventTypes(StartedType, doneType, repeatableDoneType, failedType). Builder()) if err != nil { return false, err @@ -106,7 +148,7 @@ func shouldExec(ctx context.Context, es *eventstore.Eventstore, migration Migrat } switch event.Type() { - case startedType, failedType: + case StartedType, failedType: isStarted = !isStarted case doneType, repeatableDoneType: From 458a383de203cac4bd0013f419e46f0420f30921 Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Fri, 28 Apr 2023 16:28:13 +0200 Subject: [PATCH 22/23] fix: use current sequence for refetching of events (#5772) * fix: use current sequence for refetching of events * fix: use client ids --- .../eventsourcing/handler/styling.go | 8 ++-- .../repository/eventsourcing/view/sequence.go | 9 ++-- .../repository/eventsourcing/view/styling.go | 10 ++-- .../repository/eventsourcing/view/view.go | 14 +++++- .../eventsourcing/eventstore/auth_request.go | 29 ++++++++---- .../eventstore/auth_request_test.go | 13 ++++++ .../eventsourcing/eventstore/refresh_token.go | 15 ++++-- .../eventsourcing/eventstore/token.go | 14 +++++- .../eventsourcing/handler/refresh_token.go | 8 ++-- .../repository/eventsourcing/handler/token.go | 20 ++++---- .../repository/eventsourcing/handler/user.go | 22 ++++++--- .../eventsourcing/handler/user_session.go | 12 ++--- .../eventsourcing/view/refresh_token.go | 10 ++-- .../repository/eventsourcing/view/sequence.go | 9 ++-- .../repository/eventsourcing/view/token.go | 10 ++-- .../repository/eventsourcing/view/user.go | 46 +++++++++++-------- .../eventsourcing/view/user_session.go | 10 ++-- .../repository/eventsourcing/view/view.go | 9 ++++ .../eventstore/token_verifier.go | 10 ++-- .../repository/eventsourcing/view/sequence.go | 6 ++- .../repository/eventsourcing/view/token.go | 6 ++- .../repository/eventsourcing/view/view.go | 13 +++++- internal/eventstore/v1/query/handler.go | 8 ++-- internal/eventstore/v1/spooler/spooler.go | 2 +- .../eventstore/v1/spooler/spooler_test.go | 4 +- internal/org/repository/view/query.go | 14 ++++++ .../repository/eventsourcing/model/project.go | 40 ++++++++++++++++ internal/project/repository/view/query.go | 9 ++++ 28 files changed, 273 insertions(+), 107 deletions(-) diff --git a/internal/admin/repository/eventsourcing/handler/styling.go b/internal/admin/repository/eventsourcing/handler/styling.go index 53a7f89812..8d5107e788 100644 --- a/internal/admin/repository/eventsourcing/handler/styling.go +++ b/internal/admin/repository/eventsourcing/handler/styling.go @@ -65,16 +65,16 @@ func (_ *Styling) AggregateTypes() []models.AggregateType { return []models.AggregateType{org.AggregateType, instance.AggregateType} } -func (m *Styling) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := m.view.GetLatestStylingSequence(instanceID) +func (m *Styling) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { + sequence, err := m.view.GetLatestStylingSequence(ctx, instanceID) if err != nil { return 0, err } return sequence.CurrentSequence, nil } -func (m *Styling) EventQuery(instanceIDs []string) (*models.SearchQuery, error) { - sequences, err := m.view.GetLatestStylingSequences(instanceIDs) +func (m *Styling) EventQuery(ctx context.Context, instanceIDs []string) (*models.SearchQuery, error) { + sequences, err := m.view.GetLatestStylingSequences(ctx, instanceIDs) if err != nil { return nil, err } diff --git a/internal/admin/repository/eventsourcing/view/sequence.go b/internal/admin/repository/eventsourcing/view/sequence.go index 4985fbef48..8de577f89e 100644 --- a/internal/admin/repository/eventsourcing/view/sequence.go +++ b/internal/admin/repository/eventsourcing/view/sequence.go @@ -1,6 +1,7 @@ package view import ( + "context" "time" "github.com/zitadel/zitadel/internal/eventstore/v1/models" @@ -15,12 +16,12 @@ func (v *View) saveCurrentSequence(viewName string, event *models.Event) error { return repository.SaveCurrentSequence(v.Db, sequencesTable, viewName, event.InstanceID, event.Sequence, event.CreationDate) } -func (v *View) latestSequence(viewName, instanceID string) (*repository.CurrentSequence, error) { - return repository.LatestSequence(v.Db, sequencesTable, viewName, instanceID) +func (v *View) latestSequence(ctx context.Context, viewName, instanceID string) (*repository.CurrentSequence, error) { + return repository.LatestSequence(v.Db, v.TimeTravel(ctx, sequencesTable), viewName, instanceID) } -func (v *View) latestSequences(viewName string, instanceIDs []string) ([]*repository.CurrentSequence, error) { - return repository.LatestSequences(v.Db, sequencesTable, viewName, instanceIDs) +func (v *View) latestSequences(ctx context.Context, viewName string, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return repository.LatestSequences(v.Db, v.TimeTravel(ctx, sequencesTable), viewName, instanceIDs) } func (v *View) AllCurrentSequences(db, instanceID string) ([]*repository.CurrentSequence, error) { diff --git a/internal/admin/repository/eventsourcing/view/styling.go b/internal/admin/repository/eventsourcing/view/styling.go index 25ac4c882a..ac477b5d96 100644 --- a/internal/admin/repository/eventsourcing/view/styling.go +++ b/internal/admin/repository/eventsourcing/view/styling.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/eventstore/v1/models" "github.com/zitadel/zitadel/internal/iam/repository/view" "github.com/zitadel/zitadel/internal/iam/repository/view/model" @@ -39,12 +41,12 @@ func (v *View) UpdateOrgOwnerRemovedStyling(event *models.Event) error { return v.ProcessedStylingSequence(event) } -func (v *View) GetLatestStylingSequence(instanceID string) (*global_view.CurrentSequence, error) { - return v.latestSequence(stylingTyble, instanceID) +func (v *View) GetLatestStylingSequence(ctx context.Context, instanceID string) (*global_view.CurrentSequence, error) { + return v.latestSequence(ctx, stylingTyble, instanceID) } -func (v *View) GetLatestStylingSequences(instanceIDs []string) ([]*global_view.CurrentSequence, error) { - return v.latestSequences(stylingTyble, instanceIDs) +func (v *View) GetLatestStylingSequences(ctx context.Context, instanceIDs []string) ([]*global_view.CurrentSequence, error) { + return v.latestSequences(ctx, stylingTyble, instanceIDs) } func (v *View) ProcessedStylingSequence(event *models.Event) error { diff --git a/internal/admin/repository/eventsourcing/view/view.go b/internal/admin/repository/eventsourcing/view/view.go index 8f27706985..095e7c1dfa 100644 --- a/internal/admin/repository/eventsourcing/view/view.go +++ b/internal/admin/repository/eventsourcing/view/view.go @@ -1,12 +1,17 @@ package view import ( + "context" + "github.com/jinzhu/gorm" + + "github.com/zitadel/zitadel/internal/api/call" "github.com/zitadel/zitadel/internal/database" ) type View struct { - Db *gorm.DB + Db *gorm.DB + client *database.DB } func StartView(sqlClient *database.DB) (*View, error) { @@ -15,10 +20,15 @@ func StartView(sqlClient *database.DB) (*View, error) { return nil, err } return &View{ - Db: gorm, + Db: gorm, + client: sqlClient, }, nil } func (v *View) Health() (err error) { return v.Db.DB().Ping() } + +func (v *View) TimeTravel(ctx context.Context, tableName string) string { + return tableName + v.client.Timetravel(call.Took(ctx)) +} diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request.go b/internal/auth/repository/eventsourcing/eventstore/auth_request.go index 84f884620b..fcabd8f77f 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request.go @@ -23,6 +23,7 @@ import ( "github.com/zitadel/zitadel/internal/telemetry/tracing" user_model "github.com/zitadel/zitadel/internal/user/model" user_view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" + "github.com/zitadel/zitadel/internal/view/repository" ) const unknownUserID = "UNKNOWN" @@ -64,7 +65,9 @@ type privacyPolicyProvider interface { type userSessionViewProvider interface { UserSessionByIDs(string, string, string) (*user_view_model.UserSessionView, error) UserSessionsByAgentID(string, string) ([]*user_view_model.UserSessionView, error) + GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) } + type userViewProvider interface { UserByID(string, string) (*user_view_model.UserView, error) } @@ -654,7 +657,7 @@ func (repo *AuthRequestRepo) checkLoginName(ctx context.Context, request *domain preferredLoginName += "@" + request.RequestedPrimaryDomain } } - user, err = repo.checkLoginNameInputForResourceOwner(request, preferredLoginName) + user, err = repo.checkLoginNameInputForResourceOwner(ctx, request, preferredLoginName) } else { user, err = repo.checkLoginNameInput(ctx, request, preferredLoginName) } @@ -729,12 +732,12 @@ func (repo *AuthRequestRepo) checkDomainDiscovery(ctx context.Context, request * func (repo *AuthRequestRepo) checkLoginNameInput(ctx context.Context, request *domain.AuthRequest, loginNameInput string) (*user_view_model.UserView, error) { // always check the loginname first - user, err := repo.View.UserByLoginName(loginNameInput, request.InstanceID) + user, err := repo.View.UserByLoginName(ctx, loginNameInput, request.InstanceID) if err == nil { // and take the user regardless if there would be a user with that email or phone return user, repo.checkLoginPolicyWithResourceOwner(ctx, request, user.ResourceOwner) } - user, emailErr := repo.View.UserByEmail(loginNameInput, request.InstanceID) + user, emailErr := repo.View.UserByEmail(ctx, loginNameInput, request.InstanceID) if emailErr == nil { // if there was a single user with the specified email // load and check the login policy @@ -747,7 +750,7 @@ func (repo *AuthRequestRepo) checkLoginNameInput(ctx context.Context, request *d return user, nil } } - user, phoneErr := repo.View.UserByPhone(loginNameInput, request.InstanceID) + user, phoneErr := repo.View.UserByPhone(ctx, loginNameInput, request.InstanceID) if phoneErr == nil { // if there was a single user with the specified phone // load and check the login policy @@ -765,9 +768,9 @@ func (repo *AuthRequestRepo) checkLoginNameInput(ctx context.Context, request *d return nil, err } -func (repo *AuthRequestRepo) checkLoginNameInputForResourceOwner(request *domain.AuthRequest, loginNameInput string) (*user_view_model.UserView, error) { +func (repo *AuthRequestRepo) checkLoginNameInputForResourceOwner(ctx context.Context, request *domain.AuthRequest, loginNameInput string) (*user_view_model.UserView, error) { // always check the loginname first - user, err := repo.View.UserByLoginNameAndResourceOwner(loginNameInput, request.RequestedOrgID, request.InstanceID) + user, err := repo.View.UserByLoginNameAndResourceOwner(ctx, loginNameInput, request.RequestedOrgID, request.InstanceID) if err == nil { // and take the user regardless if there would be a user with that email or phone return user, nil @@ -775,7 +778,7 @@ func (repo *AuthRequestRepo) checkLoginNameInputForResourceOwner(request *domain if request.LoginPolicy != nil && !request.LoginPolicy.DisableLoginWithEmail { // if login by email is allowed and there was a single user with the specified email // take that user (and ignore possible phone number matches) - user, emailErr := repo.View.UserByEmailAndResourceOwner(loginNameInput, request.RequestedOrgID, request.InstanceID) + user, emailErr := repo.View.UserByEmailAndResourceOwner(ctx, loginNameInput, request.RequestedOrgID, request.InstanceID) if emailErr == nil { return user, nil } @@ -783,7 +786,7 @@ func (repo *AuthRequestRepo) checkLoginNameInputForResourceOwner(request *domain if request.LoginPolicy != nil && !request.LoginPolicy.DisableLoginWithPhone { // if login by phone is allowed and there was a single user with the specified phone // take that user - user, phoneErr := repo.View.UserByPhoneAndResourceOwner(loginNameInput, request.RequestedOrgID, request.InstanceID) + user, phoneErr := repo.View.UserByPhoneAndResourceOwner(ctx, loginNameInput, request.RequestedOrgID, request.InstanceID) if phoneErr == nil { return user, nil } @@ -1298,12 +1301,20 @@ func userSessionsByUserAgentID(provider userSessionViewProvider, agentID, instan } func userSessionByIDs(ctx context.Context, provider userSessionViewProvider, eventProvider userEventProvider, agentID string, user *user_model.UserView) (*user_model.UserSessionView, error) { - session, err := provider.UserSessionByIDs(agentID, user.ID, authz.GetInstance(ctx).InstanceID()) + instanceID := authz.GetInstance(ctx).InstanceID() + session, err := provider.UserSessionByIDs(agentID, user.ID, instanceID) if err != nil { if !errors.IsNotFound(err) { return nil, err } + sequence, err := provider.GetLatestUserSessionSequence(ctx, instanceID) + logging.WithFields("instanceID", instanceID, "userID", user.ID). + OnError(err). + Errorf("could not get current sequence for userSessionByIDs") session = &user_view_model.UserSessionView{UserAgentID: agentID, UserID: user.ID} + if sequence != nil { + session.Sequence = sequence.CurrentSequence + } } events, err := eventProvider.UserEventsByID(ctx, user.ID, session.Sequence) if err != nil { diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go index 04d9e06646..c5dd8f411f 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go @@ -19,6 +19,7 @@ import ( user_model "github.com/zitadel/zitadel/internal/user/model" user_es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" user_view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" + "github.com/zitadel/zitadel/internal/view/repository" ) var ( @@ -35,6 +36,10 @@ func (m *mockViewNoUserSession) UserSessionsByAgentID(string, string) ([]*user_v return nil, nil } +func (m *mockViewNoUserSession) GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return &repository.CurrentSequence{}, nil +} + type mockViewErrUserSession struct{} func (m *mockViewErrUserSession) UserSessionByIDs(string, string, string) (*user_view_model.UserSessionView, error) { @@ -45,6 +50,10 @@ func (m *mockViewErrUserSession) UserSessionsByAgentID(string, string) ([]*user_ return nil, errors.ThrowInternal(nil, "id", "internal error") } +func (m *mockViewErrUserSession) GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return &repository.CurrentSequence{}, nil +} + type mockViewUserSession struct { ExternalLoginVerification time.Time PasswordlessVerification time.Time @@ -82,6 +91,10 @@ func (m *mockViewUserSession) UserSessionsByAgentID(string, string) ([]*user_vie return sessions, nil } +func (m *mockViewUserSession) GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return &repository.CurrentSequence{}, nil +} + type mockViewNoUser struct{} func (m *mockViewNoUser) UserByID(string, string) (*user_view_model.UserView, error) { diff --git a/internal/auth/repository/eventsourcing/eventstore/refresh_token.go b/internal/auth/repository/eventsourcing/eventstore/refresh_token.go index 33ea1d868c..9edc5af154 100644 --- a/internal/auth/repository/eventsourcing/eventstore/refresh_token.go +++ b/internal/auth/repository/eventsourcing/eventstore/refresh_token.go @@ -42,15 +42,24 @@ func (r *RefreshTokenRepo) RefreshTokenByToken(ctx context.Context, refreshToken } func (r *RefreshTokenRepo) RefreshTokenByID(ctx context.Context, tokenID, userID string) (*usr_model.RefreshTokenView, error) { - tokenView, viewErr := r.View.RefreshTokenByID(tokenID, authz.GetInstance(ctx).InstanceID()) + instanceID := authz.GetInstance(ctx).InstanceID() + tokenView, viewErr := r.View.RefreshTokenByID(tokenID, instanceID) if viewErr != nil && !errors.IsNotFound(viewErr) { return nil, viewErr } if errors.IsNotFound(viewErr) { + sequence, err := r.View.GetLatestRefreshTokenSequence(ctx, instanceID) + logging.WithFields("instanceID", instanceID, "userID", userID, "tokenID", tokenID). + OnError(err). + Errorf("could not get current sequence for RefreshTokenByID") + tokenView = new(model.RefreshTokenView) tokenView.ID = tokenID tokenView.UserID = userID - tokenView.InstanceID = authz.GetInstance(ctx).InstanceID() + tokenView.InstanceID = instanceID + if sequence != nil { + tokenView.Sequence = sequence.CurrentSequence + } } events, esErr := r.getUserEvents(ctx, userID, tokenView.InstanceID, tokenView.Sequence) @@ -80,7 +89,7 @@ func (r *RefreshTokenRepo) SearchMyRefreshTokens(ctx context.Context, userID str if err != nil { return nil, err } - sequence, err := r.View.GetLatestRefreshTokenSequence(authz.GetInstance(ctx).InstanceID()) + sequence, err := r.View.GetLatestRefreshTokenSequence(ctx, authz.GetInstance(ctx).InstanceID()) logging.Log("EVENT-GBdn4").OnError(err).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Warn("could not read latest refresh token sequence") request.Queries = append(request.Queries, &usr_model.RefreshTokenSearchQuery{Key: usr_model.RefreshTokenSearchKeyUserID, Method: domain.SearchMethodEquals, Value: userID}) tokens, count, err := r.View.SearchRefreshTokens(request) diff --git a/internal/auth/repository/eventsourcing/eventstore/token.go b/internal/auth/repository/eventsourcing/eventstore/token.go index ec982ea3b2..7894a6f4cc 100644 --- a/internal/auth/repository/eventsourcing/eventstore/token.go +++ b/internal/auth/repository/eventsourcing/eventstore/token.go @@ -34,15 +34,25 @@ func (repo *TokenRepo) IsTokenValid(ctx context.Context, userID, tokenID string) } func (repo *TokenRepo) TokenByIDs(ctx context.Context, userID, tokenID string) (*usr_model.TokenView, error) { - token, viewErr := repo.View.TokenByIDs(tokenID, userID, authz.GetInstance(ctx).InstanceID()) + instanceID := authz.GetInstance(ctx).InstanceID() + + token, viewErr := repo.View.TokenByIDs(tokenID, userID, instanceID) if viewErr != nil && !errors.IsNotFound(viewErr) { return nil, viewErr } if errors.IsNotFound(viewErr) { + sequence, err := repo.View.GetLatestTokenSequence(ctx, instanceID) + logging.WithFields("instanceID", instanceID, "userID", userID, "tokenID", tokenID). + OnError(err). + Errorf("could not get current sequence for TokenByIDs") + token = new(model.TokenView) token.ID = tokenID token.UserID = userID - token.InstanceID = authz.GetInstance(ctx).InstanceID() + token.InstanceID = instanceID + if sequence != nil { + token.Sequence = sequence.CurrentSequence + } } events, esErr := repo.getUserEvents(ctx, userID, token.InstanceID, token.Sequence) diff --git a/internal/auth/repository/eventsourcing/handler/refresh_token.go b/internal/auth/repository/eventsourcing/handler/refresh_token.go index 29e228caea..51f158b681 100644 --- a/internal/auth/repository/eventsourcing/handler/refresh_token.go +++ b/internal/auth/repository/eventsourcing/handler/refresh_token.go @@ -62,16 +62,16 @@ func (t *RefreshToken) AggregateTypes() []es_models.AggregateType { return []es_models.AggregateType{user.AggregateType, project.AggregateType, instance.AggregateType} } -func (t *RefreshToken) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := t.view.GetLatestRefreshTokenSequence(instanceID) +func (t *RefreshToken) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { + sequence, err := t.view.GetLatestRefreshTokenSequence(ctx, instanceID) if err != nil { return 0, err } return sequence.CurrentSequence, nil } -func (t *RefreshToken) EventQuery(instanceIDs []string) (*es_models.SearchQuery, error) { - sequences, err := t.view.GetLatestRefreshTokenSequences(instanceIDs) +func (t *RefreshToken) EventQuery(ctx context.Context, instanceIDs []string) (*es_models.SearchQuery, error) { + sequences, err := t.view.GetLatestRefreshTokenSequences(ctx, instanceIDs) if err != nil { return nil, err } diff --git a/internal/auth/repository/eventsourcing/handler/token.go b/internal/auth/repository/eventsourcing/handler/token.go index 280c85b6b4..7bb5bd321b 100644 --- a/internal/auth/repository/eventsourcing/handler/token.go +++ b/internal/auth/repository/eventsourcing/handler/token.go @@ -67,16 +67,16 @@ func (_ *Token) AggregateTypes() []es_models.AggregateType { return []es_models.AggregateType{user.AggregateType, project.AggregateType, instance.AggregateType} } -func (t *Token) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := t.view.GetLatestTokenSequence(instanceID) +func (t *Token) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { + sequence, err := t.view.GetLatestTokenSequence(ctx, instanceID) if err != nil { return 0, err } return sequence.CurrentSequence, nil } -func (t *Token) EventQuery(instanceIDs []string) (*es_models.SearchQuery, error) { - sequences, err := t.view.GetLatestTokenSequences(instanceIDs) +func (t *Token) EventQuery(ctx context.Context, instanceIDs []string) (*es_models.SearchQuery, error) { + sequences, err := t.view.GetLatestTokenSequences(ctx, instanceIDs) if err != nil { return nil, err } @@ -145,11 +145,13 @@ func (t *Token) Reduce(event *es_models.Event) (err error) { if err != nil { return err } - applicationsIDs := make([]string, 0, len(project.Applications)) + clientIDs := make([]string, 0, len(project.Applications)) for _, app := range project.Applications { - applicationsIDs = append(applicationsIDs, app.AppID) + if app.OIDCConfig != nil { + clientIDs = append(clientIDs, app.OIDCConfig.ClientID) + } } - return t.view.DeleteApplicationTokens(event, applicationsIDs...) + return t.view.DeleteApplicationTokens(event, clientIDs...) case instance.InstanceRemovedEventType: return t.view.DeleteInstanceTokens(event) case org.OrgRemovedEventType: @@ -208,7 +210,7 @@ func (t *Token) OnSuccess(instanceIDs []string) error { } func (t *Token) getProjectByID(ctx context.Context, projID, instanceID string) (*proj_model.Project, error) { - query, err := proj_view.ProjectByIDQuery(projID, instanceID, 0) + projectQuery, err := proj_view.ProjectByIDQuery(projID, instanceID, 0) if err != nil { return nil, err } @@ -217,7 +219,7 @@ func (t *Token) getProjectByID(ctx context.Context, projID, instanceID string) ( AggregateID: projID, }, } - err = es_sdk.Filter(ctx, t.Eventstore().FilterEvents, esProject.AppendEvents, query) + err = es_sdk.Filter(ctx, t.Eventstore().FilterEvents, esProject.AppendEvents, projectQuery) if err != nil && !caos_errs.IsNotFound(err) { return nil, err } diff --git a/internal/auth/repository/eventsourcing/handler/user.go b/internal/auth/repository/eventsourcing/handler/user.go index d19d09281a..b226f54b13 100644 --- a/internal/auth/repository/eventsourcing/handler/user.go +++ b/internal/auth/repository/eventsourcing/handler/user.go @@ -68,16 +68,16 @@ func (_ *User) AggregateTypes() []es_models.AggregateType { return []es_models.AggregateType{user_repo.AggregateType, org.AggregateType, instance.AggregateType} } -func (u *User) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := u.view.GetLatestUserSequence(instanceID) +func (u *User) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { + sequence, err := u.view.GetLatestUserSequence(ctx, instanceID) if err != nil { return 0, err } return sequence.CurrentSequence, nil } -func (u *User) EventQuery(instanceIDs []string) (*es_models.SearchQuery, error) { - sequences, err := u.view.GetLatestUserSequences(instanceIDs) +func (u *User) EventQuery(ctx context.Context, instanceIDs []string) (*es_models.SearchQuery, error) { + sequences, err := u.view.GetLatestUserSequences(ctx, instanceIDs) if err != nil { return nil, err } @@ -158,6 +158,11 @@ func (u *User) ProcessUser(event *es_models.Event) (err error) { if !errors.IsNotFound(err) { return err } + logging.WithFields( + "instance", event.InstanceID, + "userID", event.AggregateID, + "eventType", event.Type, + ).Info("user not found in view") query, err := usr_view.UserByIDQuery(event.AggregateID, event.InstanceID, 0) if err != nil { return err @@ -181,6 +186,11 @@ func (u *User) ProcessUser(event *es_models.Event) (err error) { if !errors.IsNotFound(err) { return err } + logging.WithFields( + "instance", event.InstanceID, + "userID", event.AggregateID, + "eventType", event.Type, + ).Info("user not found in view") query, err := usr_view.UserByIDQuery(event.AggregateID, event.InstanceID, 0) if err != nil { return err @@ -291,7 +301,7 @@ func (u *User) OnSuccess(instanceIDs []string) error { } func (u *User) getOrgByID(ctx context.Context, orgID, instanceID string) (*org_model.Org, error) { - query, err := view.OrgByIDQuery(orgID, instanceID, 0) + orgQuery, err := view.OrgByIDQuery(orgID, instanceID, 0) if err != nil { return nil, err } @@ -301,7 +311,7 @@ func (u *User) getOrgByID(ctx context.Context, orgID, instanceID string) (*org_m AggregateID: orgID, }, } - err = es_sdk.Filter(ctx, u.Eventstore().FilterEvents, esOrg.AppendEvents, query) + err = es_sdk.Filter(ctx, u.Eventstore().FilterEvents, esOrg.AppendEvents, orgQuery) if err != nil && !errors.IsNotFound(err) { return nil, err } diff --git a/internal/auth/repository/eventsourcing/handler/user_session.go b/internal/auth/repository/eventsourcing/handler/user_session.go index a76e478512..a0148edd68 100644 --- a/internal/auth/repository/eventsourcing/handler/user_session.go +++ b/internal/auth/repository/eventsourcing/handler/user_session.go @@ -65,16 +65,16 @@ func (_ *UserSession) AggregateTypes() []models.AggregateType { return []models.AggregateType{user.AggregateType, org.AggregateType, instance.AggregateType} } -func (u *UserSession) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := u.view.GetLatestUserSessionSequence(instanceID) +func (u *UserSession) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { + sequence, err := u.view.GetLatestUserSessionSequence(ctx, instanceID) if err != nil { return 0, err } return sequence.CurrentSequence, nil } -func (u *UserSession) EventQuery(instanceIDs []string) (*models.SearchQuery, error) { - sequences, err := u.view.GetLatestUserSessionSequences(instanceIDs) +func (u *UserSession) EventQuery(ctx context.Context, instanceIDs []string) (*models.SearchQuery, error) { + sequences, err := u.view.GetLatestUserSessionSequences(ctx, instanceIDs) if err != nil { return nil, err } @@ -231,7 +231,7 @@ func (u *UserSession) loginNameInformation(ctx context.Context, orgID string, in } func (u *UserSession) getOrgByID(ctx context.Context, orgID, instanceID string) (*org_model.Org, error) { - query, err := view.OrgByIDQuery(orgID, instanceID, 0) + orgQuery, err := view.OrgByIDQuery(orgID, instanceID, 0) if err != nil { return nil, err } @@ -241,7 +241,7 @@ func (u *UserSession) getOrgByID(ctx context.Context, orgID, instanceID string) AggregateID: orgID, }, } - err = es_sdk.Filter(ctx, u.Eventstore().FilterEvents, esOrg.AppendEvents, query) + err = es_sdk.Filter(ctx, u.Eventstore().FilterEvents, esOrg.AppendEvents, orgQuery) if err != nil && !errors.IsNotFound(err) { return nil, err } diff --git a/internal/auth/repository/eventsourcing/view/refresh_token.go b/internal/auth/repository/eventsourcing/view/refresh_token.go index 8c1342f6f8..2740c2ec84 100644 --- a/internal/auth/repository/eventsourcing/view/refresh_token.go +++ b/internal/auth/repository/eventsourcing/view/refresh_token.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" user_model "github.com/zitadel/zitadel/internal/user/model" @@ -81,12 +83,12 @@ func (v *View) DeleteOrgRefreshTokens(event *models.Event) error { return v.ProcessedRefreshTokenSequence(event) } -func (v *View) GetLatestRefreshTokenSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(refreshTokenTable, instanceID) +func (v *View) GetLatestRefreshTokenSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return v.latestSequence(ctx, refreshTokenTable, instanceID) } -func (v *View) GetLatestRefreshTokenSequences(instanceIDs []string) ([]*repository.CurrentSequence, error) { - return v.latestSequences(refreshTokenTable, instanceIDs) +func (v *View) GetLatestRefreshTokenSequences(ctx context.Context, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return v.latestSequences(ctx, refreshTokenTable, instanceIDs) } func (v *View) ProcessedRefreshTokenSequence(event *models.Event) error { diff --git a/internal/auth/repository/eventsourcing/view/sequence.go b/internal/auth/repository/eventsourcing/view/sequence.go index c1e3b0b4e2..71c77cb6a4 100644 --- a/internal/auth/repository/eventsourcing/view/sequence.go +++ b/internal/auth/repository/eventsourcing/view/sequence.go @@ -1,6 +1,7 @@ package view import ( + "context" "time" "github.com/zitadel/zitadel/internal/eventstore/v1/models" @@ -15,12 +16,12 @@ func (v *View) saveCurrentSequence(viewName string, event *models.Event) error { return repository.SaveCurrentSequence(v.Db, sequencesTable, viewName, event.InstanceID, event.Sequence, event.CreationDate) } -func (v *View) latestSequence(viewName, instanceID string) (*repository.CurrentSequence, error) { - return repository.LatestSequence(v.Db, sequencesTable, viewName, instanceID) +func (v *View) latestSequence(ctx context.Context, viewName, instanceID string) (*repository.CurrentSequence, error) { + return repository.LatestSequence(v.Db, v.TimeTravel(ctx, sequencesTable), viewName, instanceID) } -func (v *View) latestSequences(viewName string, instanceIDs []string) ([]*repository.CurrentSequence, error) { - return repository.LatestSequences(v.Db, sequencesTable, viewName, instanceIDs) +func (v *View) latestSequences(ctx context.Context, viewName string, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return repository.LatestSequences(v.Db, v.TimeTravel(ctx, sequencesTable), viewName, instanceIDs) } func (v *View) updateSpoolerRunSequence(viewName string, instanceIDs []string) error { diff --git a/internal/auth/repository/eventsourcing/view/token.go b/internal/auth/repository/eventsourcing/view/token.go index 132c3ecd94..3f3909cdb3 100644 --- a/internal/auth/repository/eventsourcing/view/token.go +++ b/internal/auth/repository/eventsourcing/view/token.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" usr_view "github.com/zitadel/zitadel/internal/user/repository/view" @@ -92,12 +94,12 @@ func (v *View) DeleteOrgTokens(event *models.Event) error { return v.ProcessedTokenSequence(event) } -func (v *View) GetLatestTokenSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(tokenTable, instanceID) +func (v *View) GetLatestTokenSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return v.latestSequence(ctx, tokenTable, instanceID) } -func (v *View) GetLatestTokenSequences(instanceIDs []string) ([]*repository.CurrentSequence, error) { - return v.latestSequences(tokenTable, instanceIDs) +func (v *View) GetLatestTokenSequences(ctx context.Context, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return v.latestSequences(ctx, tokenTable, instanceIDs) } func (v *View) ProcessedTokenSequence(event *models.Event) error { diff --git a/internal/auth/repository/eventsourcing/view/user.go b/internal/auth/repository/eventsourcing/view/user.go index 51cd52f007..6a82f6ed63 100644 --- a/internal/auth/repository/eventsourcing/view/user.go +++ b/internal/auth/repository/eventsourcing/view/user.go @@ -3,7 +3,8 @@ package view import ( "context" - "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/logging" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" "github.com/zitadel/zitadel/internal/query" @@ -21,16 +22,16 @@ func (v *View) UserByID(userID, instanceID string) (*model.UserView, error) { return view.UserByID(v.Db, userTable, userID, instanceID) } -func (v *View) UserByLoginName(loginName, instanceID string) (*model.UserView, error) { +func (v *View) UserByLoginName(ctx context.Context, loginName, instanceID string) (*model.UserView, error) { loginNameQuery, err := query.NewUserLoginNamesSearchQuery(loginName) if err != nil { return nil, err } - return v.userByID(instanceID, loginNameQuery) + return v.userByID(ctx, instanceID, loginNameQuery) } -func (v *View) UserByLoginNameAndResourceOwner(loginName, resourceOwner, instanceID string) (*model.UserView, error) { +func (v *View) UserByLoginNameAndResourceOwner(ctx context.Context, loginName, resourceOwner, instanceID string) (*model.UserView, error) { loginNameQuery, err := query.NewUserLoginNamesSearchQuery(loginName) if err != nil { return nil, err @@ -40,18 +41,18 @@ func (v *View) UserByLoginNameAndResourceOwner(loginName, resourceOwner, instanc return nil, err } - return v.userByID(instanceID, loginNameQuery, resourceOwnerQuery) + return v.userByID(ctx, instanceID, loginNameQuery, resourceOwnerQuery) } -func (v *View) UserByEmail(email, instanceID string) (*model.UserView, error) { +func (v *View) UserByEmail(ctx context.Context, email, instanceID string) (*model.UserView, error) { emailQuery, err := query.NewUserVerifiedEmailSearchQuery(email, query.TextEqualsIgnoreCase) if err != nil { return nil, err } - return v.userByID(instanceID, emailQuery) + return v.userByID(ctx, instanceID, emailQuery) } -func (v *View) UserByEmailAndResourceOwner(email, resourceOwner, instanceID string) (*model.UserView, error) { +func (v *View) UserByEmailAndResourceOwner(ctx context.Context, email, resourceOwner, instanceID string) (*model.UserView, error) { emailQuery, err := query.NewUserVerifiedEmailSearchQuery(email, query.TextEquals) if err != nil { return nil, err @@ -61,18 +62,18 @@ func (v *View) UserByEmailAndResourceOwner(email, resourceOwner, instanceID stri return nil, err } - return v.userByID(instanceID, emailQuery, resourceOwnerQuery) + return v.userByID(ctx, instanceID, emailQuery, resourceOwnerQuery) } -func (v *View) UserByPhone(phone, instanceID string) (*model.UserView, error) { +func (v *View) UserByPhone(ctx context.Context, phone, instanceID string) (*model.UserView, error) { phoneQuery, err := query.NewUserVerifiedPhoneSearchQuery(phone, query.TextEquals) if err != nil { return nil, err } - return v.userByID(instanceID, phoneQuery) + return v.userByID(ctx, instanceID, phoneQuery) } -func (v *View) UserByPhoneAndResourceOwner(phone, resourceOwner, instanceID string) (*model.UserView, error) { +func (v *View) UserByPhoneAndResourceOwner(ctx context.Context, phone, resourceOwner, instanceID string) (*model.UserView, error) { phoneQuery, err := query.NewUserVerifiedPhoneSearchQuery(phone, query.TextEquals) if err != nil { return nil, err @@ -82,12 +83,10 @@ func (v *View) UserByPhoneAndResourceOwner(phone, resourceOwner, instanceID stri return nil, err } - return v.userByID(instanceID, phoneQuery, resourceOwnerQuery) + return v.userByID(ctx, instanceID, phoneQuery, resourceOwnerQuery) } -func (v *View) userByID(instanceID string, queries ...query.SearchQuery) (*model.UserView, error) { - ctx := authz.WithInstanceID(context.Background(), instanceID) - +func (v *View) userByID(ctx context.Context, instanceID string, queries ...query.SearchQuery) (*model.UserView, error) { queriedUser, err := v.query.GetNotifyUser(ctx, true, false, queries...) if err != nil { return nil, err @@ -99,7 +98,14 @@ func (v *View) userByID(instanceID string, queries ...query.SearchQuery) (*model } if err != nil { + sequence, err := v.GetLatestUserSequence(ctx, instanceID) + logging.WithFields("instanceID", instanceID). + OnError(err). + Errorf("could not get current sequence for userByID") user = new(model.UserView) + if sequence != nil { + user.Sequence = sequence.CurrentSequence + } } query, err := view.UserByIDQuery(queriedUser.ID, instanceID, user.Sequence) @@ -188,12 +194,12 @@ func (v *View) UpdateOrgOwnerRemovedUsers(event *models.Event) error { return v.ProcessedUserSequence(event) } -func (v *View) GetLatestUserSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(userTable, instanceID) +func (v *View) GetLatestUserSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return v.latestSequence(ctx, userTable, instanceID) } -func (v *View) GetLatestUserSequences(instanceIDs []string) ([]*repository.CurrentSequence, error) { - return v.latestSequences(userTable, instanceIDs) +func (v *View) GetLatestUserSequences(ctx context.Context, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return v.latestSequences(ctx, userTable, instanceIDs) } func (v *View) ProcessedUserSequence(event *models.Event) error { diff --git a/internal/auth/repository/eventsourcing/view/user_session.go b/internal/auth/repository/eventsourcing/view/user_session.go index 52ac559384..4e3803e77b 100644 --- a/internal/auth/repository/eventsourcing/view/user_session.go +++ b/internal/auth/repository/eventsourcing/view/user_session.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" "github.com/zitadel/zitadel/internal/user/repository/view" @@ -72,12 +74,12 @@ func (v *View) DeleteOrgUserSessions(event *models.Event) error { return v.ProcessedUserSessionSequence(event) } -func (v *View) GetLatestUserSessionSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(userSessionTable, instanceID) +func (v *View) GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return v.latestSequence(ctx, userSessionTable, instanceID) } -func (v *View) GetLatestUserSessionSequences(instanceIDs []string) ([]*repository.CurrentSequence, error) { - return v.latestSequences(userSessionTable, instanceIDs) +func (v *View) GetLatestUserSessionSequences(ctx context.Context, instanceIDs []string) ([]*repository.CurrentSequence, error) { + return v.latestSequences(ctx, userSessionTable, instanceIDs) } func (v *View) ProcessedUserSessionSequence(event *models.Event) error { diff --git a/internal/auth/repository/eventsourcing/view/view.go b/internal/auth/repository/eventsourcing/view/view.go index 80f683bc80..b65badf1e5 100644 --- a/internal/auth/repository/eventsourcing/view/view.go +++ b/internal/auth/repository/eventsourcing/view/view.go @@ -1,8 +1,11 @@ package view import ( + "context" + "github.com/jinzhu/gorm" + "github.com/zitadel/zitadel/internal/api/call" "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/database" eventstore "github.com/zitadel/zitadel/internal/eventstore/v1" @@ -16,6 +19,7 @@ type View struct { idGenerator id.Generator query *query.Queries es eventstore.Eventstore + client *database.DB } func StartView(sqlClient *database.DB, keyAlgorithm crypto.EncryptionAlgorithm, queries *query.Queries, idGenerator id.Generator, es eventstore.Eventstore) (*View, error) { @@ -29,9 +33,14 @@ func StartView(sqlClient *database.DB, keyAlgorithm crypto.EncryptionAlgorithm, idGenerator: idGenerator, query: queries, es: es, + client: sqlClient, }, nil } func (v *View) Health() (err error) { return v.Db.DB().Ping() } + +func (v *View) TimeTravel(ctx context.Context, tableName string) string { + return tableName + v.client.Timetravel(call.Took(ctx)) +} diff --git a/internal/authz/repository/eventsourcing/eventstore/token_verifier.go b/internal/authz/repository/eventsourcing/eventstore/token_verifier.go index 4ef653d207..b2bff61557 100644 --- a/internal/authz/repository/eventsourcing/eventstore/token_verifier.go +++ b/internal/authz/repository/eventsourcing/eventstore/token_verifier.go @@ -44,16 +44,16 @@ func (repo *TokenVerifierRepo) tokenByID(ctx context.Context, tokenID, userID st defer func() { span.EndWithError(err) }() instanceID := authz.GetInstance(ctx).InstanceID() - sequence, err := repo.View.GetLatestTokenSequence(instanceID) - logging.WithFields("instanceID", instanceID, "userID", userID, "tokenID"). - OnError(err). - Errorf("could not get current sequence for token check") - token, viewErr := repo.View.TokenByIDs(tokenID, userID, instanceID) if viewErr != nil && !caos_errs.IsNotFound(viewErr) { return nil, viewErr } if caos_errs.IsNotFound(viewErr) { + sequence, err := repo.View.GetLatestTokenSequence(ctx, instanceID) + logging.WithFields("instanceID", instanceID, "userID", userID, "tokenID", tokenID). + OnError(err). + Errorf("could not get current sequence for token check") + token = new(model.TokenView) token.ID = tokenID token.UserID = userID diff --git a/internal/authz/repository/eventsourcing/view/sequence.go b/internal/authz/repository/eventsourcing/view/sequence.go index 6810e420d6..18b577c0cd 100644 --- a/internal/authz/repository/eventsourcing/view/sequence.go +++ b/internal/authz/repository/eventsourcing/view/sequence.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/eventstore/v1/models" "github.com/zitadel/zitadel/internal/view/repository" ) @@ -13,6 +15,6 @@ func (v *View) saveCurrentSequence(viewName string, event *models.Event) error { return repository.SaveCurrentSequence(v.Db, sequencesTable, viewName, event.InstanceID, event.Sequence, event.CreationDate) } -func (v *View) latestSequence(viewName, instanceID string) (*repository.CurrentSequence, error) { - return repository.LatestSequence(v.Db, sequencesTable, viewName, instanceID) +func (v *View) latestSequence(ctx context.Context, viewName, instanceID string) (*repository.CurrentSequence, error) { + return repository.LatestSequence(v.Db, v.TimeTravel(ctx, sequencesTable), viewName, instanceID) } diff --git a/internal/authz/repository/eventsourcing/view/token.go b/internal/authz/repository/eventsourcing/view/token.go index 486d72008d..cfd0c8b9cf 100644 --- a/internal/authz/repository/eventsourcing/view/token.go +++ b/internal/authz/repository/eventsourcing/view/token.go @@ -1,6 +1,8 @@ package view import ( + "context" + "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" usr_view "github.com/zitadel/zitadel/internal/user/repository/view" @@ -40,8 +42,8 @@ func (v *View) DeleteSessionTokens(agentID, userID, instanceID string, event *mo return v.ProcessedTokenSequence(event) } -func (v *View) GetLatestTokenSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(tokenTable, instanceID) +func (v *View) GetLatestTokenSequence(ctx context.Context, instanceID string) (*repository.CurrentSequence, error) { + return v.latestSequence(ctx, tokenTable, instanceID) } func (v *View) ProcessedTokenSequence(event *models.Event) error { diff --git a/internal/authz/repository/eventsourcing/view/view.go b/internal/authz/repository/eventsourcing/view/view.go index a55dec7699..c3ee5b79ac 100644 --- a/internal/authz/repository/eventsourcing/view/view.go +++ b/internal/authz/repository/eventsourcing/view/view.go @@ -1,17 +1,21 @@ package view import ( + "context" + + "github.com/jinzhu/gorm" + + "github.com/zitadel/zitadel/internal/api/call" "github.com/zitadel/zitadel/internal/database" "github.com/zitadel/zitadel/internal/id" "github.com/zitadel/zitadel/internal/query" - - "github.com/jinzhu/gorm" ) type View struct { Db *gorm.DB Query *query.Queries idGenerator id.Generator + client *database.DB } func StartView(sqlClient *database.DB, idGenerator id.Generator, queries *query.Queries) (*View, error) { @@ -23,9 +27,14 @@ func StartView(sqlClient *database.DB, idGenerator id.Generator, queries *query. Db: gorm, idGenerator: idGenerator, Query: queries, + client: sqlClient, }, nil } func (v *View) Health() (err error) { return v.Db.DB().Ping() } + +func (v *View) TimeTravel(ctx context.Context, tableName string) string { + return tableName + v.client.Timetravel(call.Took(ctx)) +} diff --git a/internal/eventstore/v1/query/handler.go b/internal/eventstore/v1/query/handler.go index 7e126a8f2a..384d5206f6 100755 --- a/internal/eventstore/v1/query/handler.go +++ b/internal/eventstore/v1/query/handler.go @@ -17,7 +17,7 @@ const ( type Handler interface { ViewModel() string - EventQuery(instanceIDs []string) (*models.SearchQuery, error) + EventQuery(ctx context.Context, instanceIDs []string) (*models.SearchQuery, error) Reduce(*models.Event) error OnError(event *models.Event, err error) error OnSuccess(instanceIDs []string) error @@ -26,7 +26,7 @@ type Handler interface { QueryLimit() uint64 AggregateTypes() []models.AggregateType - CurrentSequence(instanceID string) (uint64, error) + CurrentSequence(ctx context.Context, instanceID string) (uint64, error) Eventstore() v1.Eventstore Subscription() *v1.Subscription @@ -46,7 +46,7 @@ func ReduceEvent(ctx context.Context, handler Handler, event *models.Event) { ).Error("reduce panicked") } }() - currentSequence, err := handler.CurrentSequence(event.InstanceID) + currentSequence, err := handler.CurrentSequence(ctx, event.InstanceID) if err != nil { logging.WithError(err).Warn("unable to get current sequence") return @@ -67,7 +67,7 @@ func ReduceEvent(ctx context.Context, handler Handler, event *models.Event) { } for _, unprocessedEvent := range unprocessedEvents { - currentSequence, err := handler.CurrentSequence(unprocessedEvent.InstanceID) + currentSequence, err := handler.CurrentSequence(ctx, unprocessedEvent.InstanceID) if err != nil { logging.WithError(err).Warn("unable to get current sequence") return diff --git a/internal/eventstore/v1/spooler/spooler.go b/internal/eventstore/v1/spooler/spooler.go index c6cc15d3a4..6291e448d9 100644 --- a/internal/eventstore/v1/spooler/spooler.go +++ b/internal/eventstore/v1/spooler/spooler.go @@ -222,7 +222,7 @@ func (s *spooledHandler) process(ctx context.Context, events []*models.Event, wo } func (s *spooledHandler) query(ctx context.Context, instanceIDs []string) ([]*models.Event, error) { - query, err := s.EventQuery(instanceIDs) + query, err := s.EventQuery(ctx, instanceIDs) if err != nil { return nil, err } diff --git a/internal/eventstore/v1/spooler/spooler_test.go b/internal/eventstore/v1/spooler/spooler_test.go index 9aa0c75431..862d2aed35 100644 --- a/internal/eventstore/v1/spooler/spooler_test.go +++ b/internal/eventstore/v1/spooler/spooler_test.go @@ -35,7 +35,7 @@ func (h *testHandler) AggregateTypes() []models.AggregateType { return nil } -func (h *testHandler) CurrentSequence(instanceID string) (uint64, error) { +func (h *testHandler) CurrentSequence(ctx context.Context, instanceID string) (uint64, error) { return 0, nil } @@ -51,7 +51,7 @@ func (h *testHandler) Subscription() *v1.Subscription { return nil } -func (h *testHandler) EventQuery(instanceIDs []string) (*models.SearchQuery, error) { +func (h *testHandler) EventQuery(ctx context.Context, instanceIDs []string) (*models.SearchQuery, error) { if h.queryError != nil { return nil, h.queryError } diff --git a/internal/org/repository/view/query.go b/internal/org/repository/view/query.go index c6352bff4a..765d6abbc8 100644 --- a/internal/org/repository/view/query.go +++ b/internal/org/repository/view/query.go @@ -16,5 +16,19 @@ func OrgByIDQuery(id, instanceID string, latestSequence uint64) (*es_models.Sear LatestSequenceFilter(latestSequence). InstanceIDFilter(instanceID). AggregateIDFilter(id). + EventTypesFilter( + es_models.EventType(org.OrgAddedEventType), + es_models.EventType(org.OrgChangedEventType), + es_models.EventType(org.OrgDeactivatedEventType), + es_models.EventType(org.OrgReactivatedEventType), + es_models.EventType(org.OrgDomainAddedEventType), + es_models.EventType(org.OrgDomainVerificationAddedEventType), + es_models.EventType(org.OrgDomainVerifiedEventType), + es_models.EventType(org.OrgDomainPrimarySetEventType), + es_models.EventType(org.OrgDomainRemovedEventType), + es_models.EventType(org.DomainPolicyAddedEventType), + es_models.EventType(org.DomainPolicyChangedEventType), + es_models.EventType(org.DomainPolicyRemovedEventType), + ). SearchQuery(), nil } diff --git a/internal/project/repository/eventsourcing/model/project.go b/internal/project/repository/eventsourcing/model/project.go index 8aba9a08ab..dfba580f7f 100644 --- a/internal/project/repository/eventsourcing/model/project.go +++ b/internal/project/repository/eventsourcing/model/project.go @@ -18,15 +18,26 @@ type Project struct { ProjectRoleCheck bool `json:"projectRoleCheck,omitempty"` HasProjectCheck bool `json:"hasProjectCheck,omitempty"` State int32 `json:"-"` + OIDCApplications []*oidcApp +} + +type oidcApp struct { + AppID string `json:"appId"` + ClientID string `json:"clientId,omitempty"` } func ProjectToModel(project *Project) *model.Project { + apps := make([]*model.Application, len(project.OIDCApplications)) + for i, application := range project.OIDCApplications { + apps[i] = &model.Application{OIDCConfig: &model.OIDCConfig{ClientID: application.ClientID}} + } return &model.Project{ ObjectRoot: project.ObjectRoot, Name: project.Name, ProjectRoleAssertion: project.ProjectRoleAssertion, ProjectRoleCheck: project.ProjectRoleCheck, State: model.ProjectState(project.State), + Applications: apps, } } @@ -59,6 +70,10 @@ func (p *Project) AppendEvent(event *es_models.Event) error { return p.appendReactivatedEvent() case project.ProjectRemovedType: return p.appendRemovedEvent() + case project.OIDCConfigAddedType: + return p.appendOIDCConfig(event) + case project.ApplicationRemovedType: + return p.appendApplicationRemoved(event) } return nil } @@ -84,6 +99,31 @@ func (p *Project) appendRemovedEvent() error { return nil } +func (p *Project) appendOIDCConfig(event *es_models.Event) error { + appEvent := new(oidcApp) + if err := json.Unmarshal(event.Data, appEvent); err != nil { + return err + } + p.OIDCApplications = append(p.OIDCApplications, appEvent) + return nil +} + +func (p *Project) appendApplicationRemoved(event *es_models.Event) error { + appEvent := new(oidcApp) + if err := json.Unmarshal(event.Data, appEvent); err != nil { + return err + } + for i := len(p.OIDCApplications) - 1; i >= 0; i-- { + if p.OIDCApplications[i].AppID == appEvent.AppID { + p.OIDCApplications[i] = p.OIDCApplications[len(p.OIDCApplications)-1] + p.OIDCApplications[len(p.OIDCApplications)-1] = nil + p.OIDCApplications = p.OIDCApplications[:len(p.OIDCApplications)-1] + return nil + } + } + return nil +} + func (p *Project) SetData(event *es_models.Event) error { if err := json.Unmarshal(event.Data, p); err != nil { logging.Log("EVEN-lo9sr").WithError(err).Error("could not unmarshal event data") diff --git a/internal/project/repository/view/query.go b/internal/project/repository/view/query.go index 963e1cd4a9..56c8ae007b 100644 --- a/internal/project/repository/view/query.go +++ b/internal/project/repository/view/query.go @@ -16,5 +16,14 @@ func ProjectByIDQuery(id, instanceID string, latestSequence uint64) (*es_models. AggregateTypeFilter(project.AggregateType). LatestSequenceFilter(latestSequence). InstanceIDFilter(instanceID). + EventTypesFilter( + es_models.EventType(project.ProjectAddedType), + es_models.EventType(project.ProjectChangedType), + es_models.EventType(project.ProjectDeactivatedType), + es_models.EventType(project.ProjectReactivatedType), + es_models.EventType(project.ProjectRemovedType), + es_models.EventType(project.OIDCConfigAddedType), + es_models.EventType(project.ApplicationRemovedType), + ). SearchQuery(), nil } From 39bdef35e76438669d525da8c37c2f3a42596ab7 Mon Sep 17 00:00:00 2001 From: Silvan Date: Fri, 28 Apr 2023 16:56:51 +0200 Subject: [PATCH 23/23] chore: merge (#5773) * feat: allow skip of success page for native apps (#5627) add possibility to return to callback directly after login without rendering the successful login page * build next * fix(console): disallow inline fonts, critical styles (#5714) fix: disallow inline * fix(setup): step 10 for postgres (#5717) * fix(setup): smaller transactions (#5743) * fix: order by sequence by default * test: add allowCreationDateFilter * fix(step10): separate executions (#5754) * feat: allow skip of success page for native apps (#5627) add possibility to return to callback directly after login without rendering the successful login page * build next * fix(console): disallow inline fonts, critical styles (#5714) fix: disallow inline * fix(setup): step 10 for postgres (#5717) * fix(setup): smaller transactions (#5743) * fix(step10): split statements * fix(step10): split into separate execs * chore: prerelease * add truncate before insert * fix: add truncate * Merge branch 'main' into optimise-step-10 * chore: reset release definition --------- Co-authored-by: Livio Spring Co-authored-by: Max Peintner --------- Co-authored-by: Livio Spring Co-authored-by: Max Peintner --- .releaserc.js | 4 ++-- cmd/defaults.yaml | 1 + cmd/start/start.go | 6 +++--- .../repository/eventsourcing/repository.go | 4 ++-- .../repository/eventsourcing/repository.go | 4 ++-- internal/authz/authz.go | 4 ++-- .../repository/eventsourcing/repository.go | 4 ++-- internal/eventstore/config.go | 7 ++++--- internal/eventstore/repository/sql/crdb.go | 19 ++++++++++++++----- .../eventstore/repository/sql/query_test.go | 10 +++++++--- internal/eventstore/v1/eventstore.go | 4 ++-- .../v1/internal/repository/sql/config.go | 5 +++-- .../v1/internal/repository/sql/filter.go | 10 +++++----- .../v1/internal/repository/sql/filter_test.go | 3 ++- .../v1/internal/repository/sql/query.go | 16 ++++++++++++---- .../v1/internal/repository/sql/query_test.go | 2 +- .../v1/internal/repository/sql/sql.go | 3 ++- 17 files changed, 66 insertions(+), 40 deletions(-) diff --git a/.releaserc.js b/.releaserc.js index b8d5a8551a..f24249cada 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -1,7 +1,7 @@ module.exports = { branches: [ - {name: 'main', channel: 'next'}, - {name: 'next', prerelease: true} + {name: 'main'}, + {name: 'next'}, ], plugins: [ "@semantic-release/commit-analyzer" diff --git a/cmd/defaults.yaml b/cmd/defaults.yaml index 85d6c0ab15..1acbb55d44 100644 --- a/cmd/defaults.yaml +++ b/cmd/defaults.yaml @@ -398,6 +398,7 @@ Quotas: Eventstore: PushTimeout: 15s + AllowOrderByCreationDate: false DefaultInstance: InstanceName: diff --git a/cmd/start/start.go b/cmd/start/start.go index 90362d61e9..e0829b7eb3 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -115,7 +115,7 @@ func startZitadel(config *Config, masterKey string) error { return fmt.Errorf("cannot start queries: %w", err) } - authZRepo, err := authz.Start(queries, dbClient, keys.OIDC, config.ExternalSecure) + authZRepo, err := authz.Start(queries, dbClient, keys.OIDC, config.ExternalSecure, config.Eventstore.AllowOrderByCreationDate) if err != nil { return fmt.Errorf("error starting authz repo: %w", err) } @@ -229,11 +229,11 @@ func startAPIs( if err != nil { return fmt.Errorf("error creating api %w", err) } - authRepo, err := auth_es.Start(ctx, config.Auth, config.SystemDefaults, commands, queries, dbClient, eventstore, keys.OIDC, keys.User) + authRepo, err := auth_es.Start(ctx, config.Auth, config.SystemDefaults, commands, queries, dbClient, eventstore, keys.OIDC, keys.User, config.Eventstore.AllowOrderByCreationDate) if err != nil { return fmt.Errorf("error starting auth repo: %w", err) } - adminRepo, err := admin_es.Start(ctx, config.Admin, store, dbClient, eventstore) + adminRepo, err := admin_es.Start(ctx, config.Admin, store, dbClient, eventstore, config.Eventstore.AllowOrderByCreationDate) if err != nil { return fmt.Errorf("error starting admin repo: %w", err) } diff --git a/internal/admin/repository/eventsourcing/repository.go b/internal/admin/repository/eventsourcing/repository.go index d7c03c1fc9..febc2629de 100644 --- a/internal/admin/repository/eventsourcing/repository.go +++ b/internal/admin/repository/eventsourcing/repository.go @@ -23,8 +23,8 @@ type EsRepository struct { eventstore.AdministratorRepo } -func Start(ctx context.Context, conf Config, static static.Storage, dbClient *database.DB, esV2 *eventstore2.Eventstore) (*EsRepository, error) { - es, err := v1.Start(dbClient) +func Start(ctx context.Context, conf Config, static static.Storage, dbClient *database.DB, esV2 *eventstore2.Eventstore, allowOrderByCreationDate bool) (*EsRepository, error) { + es, err := v1.Start(dbClient, allowOrderByCreationDate) if err != nil { return nil, err } diff --git a/internal/auth/repository/eventsourcing/repository.go b/internal/auth/repository/eventsourcing/repository.go index 852ebcca91..454daffd11 100644 --- a/internal/auth/repository/eventsourcing/repository.go +++ b/internal/auth/repository/eventsourcing/repository.go @@ -34,8 +34,8 @@ type EsRepository struct { eventstore.OrgRepository } -func Start(ctx context.Context, conf Config, systemDefaults sd.SystemDefaults, command *command.Commands, queries *query.Queries, dbClient *database.DB, esV2 *eventstore2.Eventstore, oidcEncryption crypto.EncryptionAlgorithm, userEncryption crypto.EncryptionAlgorithm) (*EsRepository, error) { - es, err := v1.Start(dbClient) +func Start(ctx context.Context, conf Config, systemDefaults sd.SystemDefaults, command *command.Commands, queries *query.Queries, dbClient *database.DB, esV2 *eventstore2.Eventstore, oidcEncryption crypto.EncryptionAlgorithm, userEncryption crypto.EncryptionAlgorithm, allowOrderByCreationDate bool) (*EsRepository, error) { + es, err := v1.Start(dbClient, allowOrderByCreationDate) if err != nil { return nil, err } diff --git a/internal/authz/authz.go b/internal/authz/authz.go index f8f21e4125..6106d8a4e5 100644 --- a/internal/authz/authz.go +++ b/internal/authz/authz.go @@ -8,6 +8,6 @@ import ( "github.com/zitadel/zitadel/internal/query" ) -func Start(queries *query.Queries, dbClient *database.DB, keyEncryptionAlgorithm crypto.EncryptionAlgorithm, externalSecure bool) (repository.Repository, error) { - return eventsourcing.Start(queries, dbClient, keyEncryptionAlgorithm, externalSecure) +func Start(queries *query.Queries, dbClient *database.DB, keyEncryptionAlgorithm crypto.EncryptionAlgorithm, externalSecure, allowOrderByCreationDate bool) (repository.Repository, error) { + return eventsourcing.Start(queries, dbClient, keyEncryptionAlgorithm, externalSecure, allowOrderByCreationDate) } diff --git a/internal/authz/repository/eventsourcing/repository.go b/internal/authz/repository/eventsourcing/repository.go index c3f212d96c..2df593f11d 100644 --- a/internal/authz/repository/eventsourcing/repository.go +++ b/internal/authz/repository/eventsourcing/repository.go @@ -18,8 +18,8 @@ type EsRepository struct { eventstore.TokenVerifierRepo } -func Start(queries *query.Queries, dbClient *database.DB, keyEncryptionAlgorithm crypto.EncryptionAlgorithm, externalSecure bool) (repository.Repository, error) { - es, err := v1.Start(dbClient) +func Start(queries *query.Queries, dbClient *database.DB, keyEncryptionAlgorithm crypto.EncryptionAlgorithm, externalSecure, allowOrderByCreationDate bool) (repository.Repository, error) { + es, err := v1.Start(dbClient, allowOrderByCreationDate) if err != nil { return nil, err } diff --git a/internal/eventstore/config.go b/internal/eventstore/config.go index c9d00da267..21011dea67 100644 --- a/internal/eventstore/config.go +++ b/internal/eventstore/config.go @@ -9,8 +9,9 @@ import ( ) type Config struct { - PushTimeout time.Duration - Client *database.DB + PushTimeout time.Duration + Client *database.DB + AllowOrderByCreationDate bool repo repository.Repository } @@ -20,6 +21,6 @@ func TestConfig(repo repository.Repository) *Config { } func Start(config *Config) (*Eventstore, error) { - config.repo = z_sql.NewCRDB(config.Client) + config.repo = z_sql.NewCRDB(config.Client, config.AllowOrderByCreationDate) return NewEventstore(config), nil } diff --git a/internal/eventstore/repository/sql/crdb.go b/internal/eventstore/repository/sql/crdb.go index f78f210a6a..f27936de4c 100644 --- a/internal/eventstore/repository/sql/crdb.go +++ b/internal/eventstore/repository/sql/crdb.go @@ -99,10 +99,11 @@ const ( type CRDB struct { *database.DB + AllowOrderByCreationDate bool } -func NewCRDB(client *database.DB) *CRDB { - return &CRDB{client} +func NewCRDB(client *database.DB, allowOrderByCreationDate bool) *CRDB { + return &CRDB{client, allowOrderByCreationDate} } func (db *CRDB) Health(ctx context.Context) error { return db.Ping() } @@ -254,11 +255,19 @@ func (db *CRDB) db() *sql.DB { } func (db *CRDB) orderByEventSequence(desc bool) string { - if desc { - return " ORDER BY creation_date DESC, event_sequence DESC" + if db.AllowOrderByCreationDate { + if desc { + return " ORDER BY creation_date DESC, event_sequence DESC" + } + + return " ORDER BY creation_date, event_sequence" } - return " ORDER BY creation_date, event_sequence" + if desc { + return " ORDER BY event_sequence DESC" + } + + return " ORDER BY event_sequence" } func (db *CRDB) eventQuery() string { diff --git a/internal/eventstore/repository/sql/query_test.go b/internal/eventstore/repository/sql/query_test.go index 9560ff0918..af9aa9860c 100644 --- a/internal/eventstore/repository/sql/query_test.go +++ b/internal/eventstore/repository/sql/query_test.go @@ -542,6 +542,7 @@ func Test_query_events_with_crdb(t *testing.T) { DB: tt.fields.client, Database: new(testDB), }, + AllowOrderByCreationDate: true, } // setup initial data for query @@ -820,9 +821,12 @@ func Test_query_events_mocked(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - crdb := &CRDB{DB: &database.DB{ - Database: new(testDB), - }} + crdb := &CRDB{ + DB: &database.DB{ + Database: new(testDB), + }, + AllowOrderByCreationDate: true, + } if tt.fields.mock != nil { crdb.DB.DB = tt.fields.mock.client } diff --git a/internal/eventstore/v1/eventstore.go b/internal/eventstore/v1/eventstore.go index 0fc311f2e4..49e0910c73 100644 --- a/internal/eventstore/v1/eventstore.go +++ b/internal/eventstore/v1/eventstore.go @@ -22,9 +22,9 @@ type eventstore struct { repo repository.Repository } -func Start(db *database.DB) (Eventstore, error) { +func Start(db *database.DB, allowOrderByCreationDate bool) (Eventstore, error) { return &eventstore{ - repo: z_sql.Start(db), + repo: z_sql.Start(db, allowOrderByCreationDate), }, nil } diff --git a/internal/eventstore/v1/internal/repository/sql/config.go b/internal/eventstore/v1/internal/repository/sql/config.go index bef2df0de2..5ea34e6e40 100644 --- a/internal/eventstore/v1/internal/repository/sql/config.go +++ b/internal/eventstore/v1/internal/repository/sql/config.go @@ -4,8 +4,9 @@ import ( "github.com/zitadel/zitadel/internal/database" ) -func Start(client *database.DB) *SQL { +func Start(client *database.DB, allowOrderByCreationDate bool) *SQL { return &SQL{ - client: client, + client: client, + allowOrderByCreationDate: allowOrderByCreationDate, } } diff --git a/internal/eventstore/v1/internal/repository/sql/filter.go b/internal/eventstore/v1/internal/repository/sql/filter.go index 5674972de6..ab67730b59 100644 --- a/internal/eventstore/v1/internal/repository/sql/filter.go +++ b/internal/eventstore/v1/internal/repository/sql/filter.go @@ -21,11 +21,11 @@ func (db *SQL) Filter(ctx context.Context, searchQuery *es_models.SearchQueryFac if !searchQuery.InstanceFiltered { logging.WithFields("stack", string(debug.Stack())).Warn("instanceid not filtered") } - return filter(ctx, db.client, searchQuery) + return db.filter(ctx, db.client, searchQuery) } -func filter(ctx context.Context, db *database.DB, searchQuery *es_models.SearchQueryFactory) (events []*es_models.Event, err error) { - query, limit, values, rowScanner := buildQuery(ctx, db, searchQuery) +func (sql *SQL) filter(ctx context.Context, db *database.DB, searchQuery *es_models.SearchQueryFactory) (events []*es_models.Event, err error) { + query, limit, values, rowScanner := sql.buildQuery(ctx, db, searchQuery) if query == "" { return nil, errors.ThrowInvalidArgument(nil, "SQL-rWeBw", "invalid query factory") } @@ -53,7 +53,7 @@ func filter(ctx context.Context, db *database.DB, searchQuery *es_models.SearchQ } func (db *SQL) LatestSequence(ctx context.Context, queryFactory *es_models.SearchQueryFactory) (uint64, error) { - query, _, values, rowScanner := buildQuery(ctx, db.client, queryFactory) + query, _, values, rowScanner := db.buildQuery(ctx, db.client, queryFactory) if query == "" { return 0, errors.ThrowInvalidArgument(nil, "SQL-rWeBw", "invalid query factory") } @@ -68,7 +68,7 @@ func (db *SQL) LatestSequence(ctx context.Context, queryFactory *es_models.Searc } func (db *SQL) InstanceIDs(ctx context.Context, queryFactory *es_models.SearchQueryFactory) ([]string, error) { - query, _, values, rowScanner := buildQuery(ctx, db.client, queryFactory) + query, _, values, rowScanner := db.buildQuery(ctx, db.client, queryFactory) if query == "" { return nil, errors.ThrowInvalidArgument(nil, "SQL-Sfwg2", "invalid query factory") } diff --git a/internal/eventstore/v1/internal/repository/sql/filter_test.go b/internal/eventstore/v1/internal/repository/sql/filter_test.go index df352a236a..75863fed8a 100644 --- a/internal/eventstore/v1/internal/repository/sql/filter_test.go +++ b/internal/eventstore/v1/internal/repository/sql/filter_test.go @@ -123,7 +123,8 @@ func TestSQL_Filter(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { sql := &SQL{ - client: &database.DB{DB: tt.fields.client.sqlClient, Database: new(testDB)}, + client: &database.DB{DB: tt.fields.client.sqlClient, Database: new(testDB)}, + allowOrderByCreationDate: true, } events, err := sql.Filter(context.Background(), tt.args.searchQuery) if (err != nil) != tt.res.wantErr { diff --git a/internal/eventstore/v1/internal/repository/sql/query.go b/internal/eventstore/v1/internal/repository/sql/query.go index ed4510e7f7..8b2ea1dc98 100644 --- a/internal/eventstore/v1/internal/repository/sql/query.go +++ b/internal/eventstore/v1/internal/repository/sql/query.go @@ -33,7 +33,7 @@ const ( " FROM eventstore.events" ) -func buildQuery(ctx context.Context, db dialect.Database, queryFactory *es_models.SearchQueryFactory) (query string, limit uint64, values []interface{}, rowScanner func(s scan, dest interface{}) error) { +func (sql *SQL) buildQuery(ctx context.Context, db dialect.Database, queryFactory *es_models.SearchQueryFactory) (query string, limit uint64, values []interface{}, rowScanner func(s scan, dest interface{}) error) { searchQuery, err := queryFactory.Build() if err != nil { logging.New().WithError(err).Warn("search query factory invalid") @@ -51,9 +51,17 @@ func buildQuery(ctx context.Context, db dialect.Database, queryFactory *es_model query += where if searchQuery.Columns == es_models.Columns_Event { - order := " ORDER BY creation_date, event_sequence" - if searchQuery.Desc { - order = " ORDER BY creation_date DESC, event_sequence DESC" + var order string + if sql.allowOrderByCreationDate { + order = " ORDER BY creation_date, event_sequence" + if searchQuery.Desc { + order = " ORDER BY creation_date DESC, event_sequence DESC" + } + } else { + order = " ORDER BY event_sequence" + if searchQuery.Desc { + order = " ORDER BY event_sequence DESC" + } } query += order } diff --git a/internal/eventstore/v1/internal/repository/sql/query_test.go b/internal/eventstore/v1/internal/repository/sql/query_test.go index f0b13bc701..0c4b4d9db9 100644 --- a/internal/eventstore/v1/internal/repository/sql/query_test.go +++ b/internal/eventstore/v1/internal/repository/sql/query_test.go @@ -470,7 +470,7 @@ func Test_buildQuery(t *testing.T) { ctx := context.Background() db := new(testDB) t.Run(tt.name, func(t *testing.T) { - gotQuery, gotLimit, gotValues, gotRowScanner := buildQuery(ctx, db, tt.args.queryFactory) + gotQuery, gotLimit, gotValues, gotRowScanner := (&SQL{allowOrderByCreationDate: true}).buildQuery(ctx, db, tt.args.queryFactory) if gotQuery != tt.res.query { t.Errorf("buildQuery() gotQuery = %v, want %v", gotQuery, tt.res.query) } diff --git a/internal/eventstore/v1/internal/repository/sql/sql.go b/internal/eventstore/v1/internal/repository/sql/sql.go index 3f5ecc431e..ab4c9ca26c 100644 --- a/internal/eventstore/v1/internal/repository/sql/sql.go +++ b/internal/eventstore/v1/internal/repository/sql/sql.go @@ -7,7 +7,8 @@ import ( ) type SQL struct { - client *database.DB + client *database.DB + allowOrderByCreationDate bool } func (db *SQL) Health(ctx context.Context) error {