Files
zitadel/internal/repository/group/user.go
T
Gayathri VijayanandGitHub ad8e8bf61f feat(group): manage users in user groups (#10940)
# Which Problems Are Solved

1. Adding users to user groups and removing users from user groups.
2. Searching for users in user groups by group IDs or user IDs

# How the Problems Are Solved

By adding:
1. The API definitions to manage users in users groups
3. The command-layer implementation of adding users/removing users
to/from user groups.
4. The projection table group_users1
5. Query-side implementation to search for users in user groups

# Additional Changes

1. Remove debug statements from unit tests.
2. Fix removal of groups when orgs are removed
3. Add unit tests for groups projection

# Additional Context

* Related to #9702 
* Follow-up for PRs 
  * https://github.com/zitadel/zitadel/pull/10455
  * https://github.com/zitadel/zitadel/pull/10758
  * https://github.com/zitadel/zitadel/pull/10853
2025-10-28 13:23:54 +00:00

75 lines
1.5 KiB
Go

package group
import (
"context"
"github.com/zitadel/zitadel/internal/eventstore"
)
const (
GroupUsersAddedEventType = groupEventTypePrefix + "users.added"
GroupUsersRemovedEventType = groupEventTypePrefix + "users.removed"
)
type GroupUsersAddedEvent struct {
eventstore.BaseEvent `json:"-"`
UserIDs []string `json:"userIds"`
}
func NewGroupUsersAddedEvent(ctx context.Context, aggregate *eventstore.Aggregate, userIDs []string) *GroupUsersAddedEvent {
return &GroupUsersAddedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
ctx,
aggregate,
GroupUsersAddedEventType,
),
UserIDs: userIDs,
}
}
func (e *GroupUsersAddedEvent) SetBaseEvent(event *eventstore.BaseEvent) {
e.BaseEvent = *event
}
func (e *GroupUsersAddedEvent) Payload() interface{} {
return e
}
func (e *GroupUsersAddedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
return nil
}
type GroupUsersRemovedEvent struct {
eventstore.BaseEvent `json:"-"`
UserIDs []string `json:"userIds"`
}
func NewGroupUsersRemovedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
userIDs []string,
) *GroupUsersRemovedEvent {
return &GroupUsersRemovedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
ctx,
aggregate,
GroupUsersRemovedEventType,
),
UserIDs: userIDs,
}
}
func (e *GroupUsersRemovedEvent) SetBaseEvent(event *eventstore.BaseEvent) {
e.BaseEvent = *event
}
func (e *GroupUsersRemovedEvent) Payload() interface{} {
return e
}
func (e *GroupUsersRemovedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
return nil
}