mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 00:27:31 +00:00
fix(notify): notify user in projection (#3889)
* start implement notify user in projection * fix(stmt): add copy to multi stmt * use projections for notify users * feat: notifications from projections * feat: notifications from projections * cleanup * pre-release * fix tests * fix types * fix command * fix queryNotifyUser * fix: build version * fix: HumanPasswordlessInitCodeSent Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
This commit is contained in:
@@ -14,7 +14,6 @@ import (
|
||||
caos_errs "github.com/zitadel/zitadel/internal/errors"
|
||||
"github.com/zitadel/zitadel/internal/eventstore"
|
||||
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
|
||||
"github.com/zitadel/zitadel/internal/query"
|
||||
"github.com/zitadel/zitadel/internal/repository/user"
|
||||
"github.com/zitadel/zitadel/internal/telemetry/tracing"
|
||||
)
|
||||
@@ -174,7 +173,7 @@ func (c *Commands) UnlockUser(ctx context.Context, userID, resourceOwner string)
|
||||
return writeModelToObjectDetails(&existingUser.WriteModel), nil
|
||||
}
|
||||
|
||||
func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string, cascadingUserMemberships []*query.Membership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) {
|
||||
func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string, cascadingUserMemberships []*CascadingMembership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) {
|
||||
if userID == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing")
|
||||
}
|
||||
|
@@ -4,13 +4,39 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/zitadel/zitadel/internal/eventstore"
|
||||
"github.com/zitadel/zitadel/internal/query"
|
||||
"github.com/zitadel/zitadel/internal/repository/instance"
|
||||
"github.com/zitadel/zitadel/internal/repository/org"
|
||||
"github.com/zitadel/zitadel/internal/repository/project"
|
||||
)
|
||||
|
||||
func (c *Commands) removeUserMemberships(ctx context.Context, memberships []*query.Membership) (_ []eventstore.Command, err error) {
|
||||
type CascadingMembership struct {
|
||||
UserID string
|
||||
ResourceOwner string
|
||||
|
||||
IAM *CascadingIAMMembership
|
||||
Org *CascadingOrgMembership
|
||||
Project *CascadingProjectMembership
|
||||
ProjectGrant *CascadingProjectGrantMembership
|
||||
}
|
||||
|
||||
type CascadingIAMMembership struct {
|
||||
IAMID string
|
||||
}
|
||||
|
||||
type CascadingOrgMembership struct {
|
||||
OrgID string
|
||||
}
|
||||
|
||||
type CascadingProjectMembership struct {
|
||||
ProjectID string
|
||||
}
|
||||
|
||||
type CascadingProjectGrantMembership struct {
|
||||
ProjectID string
|
||||
GrantID string
|
||||
}
|
||||
|
||||
func (c *Commands) removeUserMemberships(ctx context.Context, memberships []*CascadingMembership) (_ []eventstore.Command, err error) {
|
||||
events := make([]eventstore.Command, 0)
|
||||
for _, membership := range memberships {
|
||||
if membership.IAM != nil {
|
||||
|
@@ -19,7 +19,6 @@ import (
|
||||
"github.com/zitadel/zitadel/internal/eventstore"
|
||||
"github.com/zitadel/zitadel/internal/eventstore/repository"
|
||||
"github.com/zitadel/zitadel/internal/id"
|
||||
"github.com/zitadel/zitadel/internal/query"
|
||||
"github.com/zitadel/zitadel/internal/repository/instance"
|
||||
"github.com/zitadel/zitadel/internal/repository/user"
|
||||
)
|
||||
@@ -929,7 +928,7 @@ func TestCommandSide_RemoveUser(t *testing.T) {
|
||||
instanceID string
|
||||
orgID string
|
||||
userID string
|
||||
cascadeUserMemberships []*query.Membership
|
||||
cascadeUserMemberships []*CascadingMembership
|
||||
cascadeUserGrants []string
|
||||
}
|
||||
)
|
||||
@@ -1215,16 +1214,16 @@ func TestCommandSide_RemoveUser(t *testing.T) {
|
||||
ctx: context.Background(),
|
||||
orgID: "org1",
|
||||
userID: "user1",
|
||||
cascadeUserMemberships: []*query.Membership{
|
||||
cascadeUserMemberships: []*CascadingMembership{
|
||||
{
|
||||
IAM: &query.IAMMembership{
|
||||
IAM: &CascadingIAMMembership{
|
||||
IAMID: "INSTANCE",
|
||||
},
|
||||
UserID: "user1",
|
||||
ResourceOwner: "org1",
|
||||
},
|
||||
{
|
||||
Org: &query.OrgMembership{
|
||||
Org: &CascadingOrgMembership{
|
||||
OrgID: "org1",
|
||||
},
|
||||
UserID: "user1",
|
||||
@@ -1232,14 +1231,14 @@ func TestCommandSide_RemoveUser(t *testing.T) {
|
||||
},
|
||||
{
|
||||
|
||||
Project: &query.ProjectMembership{
|
||||
Project: &CascadingProjectMembership{
|
||||
ProjectID: "project1",
|
||||
},
|
||||
UserID: "user1",
|
||||
ResourceOwner: "org1",
|
||||
},
|
||||
{
|
||||
ProjectGrant: &query.ProjectGrantMembership{
|
||||
ProjectGrant: &CascadingProjectGrantMembership{
|
||||
ProjectID: "project1",
|
||||
GrantID: "grant1",
|
||||
},
|
||||
|
Reference in New Issue
Block a user