fix: Remove user with cascading memberships (#1811)

* fix: remove usermemberships on user remove

* fix: text user remove with memberships

* fix: translations

* Update internal/iam/repository/eventsourcing/model/types.go

Co-authored-by: Livio Amstutz <livio.a@gmail.com>

* fix: uncomment tests

* fix: remove memberships if user removed

Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
Fabi
2021-06-07 07:20:47 +02:00
committed by GitHub
parent 9ffc9d9330
commit 1143e3773e
52 changed files with 693 additions and 84 deletions

View File

@@ -109,7 +109,8 @@ func (m *OrgMember) processOrgMember(event *es_models.Event) (err error) {
return err
}
err = member.AppendEvent(event)
case model.OrgMemberRemoved:
case model.OrgMemberRemoved,
model.OrgMemberCascadeRemoved:
err = member.SetData(event)
if err != nil {
return err

View File

@@ -111,7 +111,8 @@ func (p *ProjectGrantMember) processProjectGrantMember(event *es_models.Event) (
return err
}
err = member.AppendEvent(event)
case proj_es_model.ProjectGrantMemberRemoved:
case proj_es_model.ProjectGrantMemberRemoved,
proj_es_model.ProjectGrantMemberCascadeRemoved:
err = member.SetData(event)
if err != nil {
return err
@@ -154,9 +155,12 @@ func (p *ProjectGrantMember) processUser(event *es_models.Event) (err error) {
p.fillUserData(member, user)
}
return p.view.PutProjectGrantMembers(members, event)
case usr_es_model.UserRemoved:
p.view.DeleteProjectGrantMembersByUserID(event.AggregateID)
default:
return p.view.ProcessedProjectGrantMemberSequence(event)
}
return nil
}
func (p *ProjectGrantMember) fillData(member *view_model.ProjectGrantMemberView) (err error) {

View File

@@ -111,7 +111,7 @@ func (p *ProjectMember) processProjectMember(event *es_models.Event) (err error)
return err
}
err = member.AppendEvent(event)
case proj_es_model.ProjectMemberRemoved:
case proj_es_model.ProjectMemberRemoved, proj_es_model.ProjectMemberCascadeRemoved:
err = member.SetData(event)
if err != nil {
return err
@@ -150,6 +150,8 @@ func (p *ProjectMember) processUser(event *es_models.Event) (err error) {
p.fillUserData(member, user)
}
return p.view.PutProjectMembers(members, event)
case usr_es_model.UserRemoved:
p.view.DeleteProjectMembersByUserID(event.AggregateID)
default:
return p.view.ProcessedProjectMemberSequence(event)
}

View File

@@ -107,7 +107,8 @@ func (m *UserMembership) processIAM(event *es_models.Event) (err error) {
return err
}
err = member.AppendEvent(event)
case iam_es_model.IAMMemberRemoved:
case iam_es_model.IAMMemberRemoved,
iam_es_model.IAMMemberCascadeRemoved:
return m.view.DeleteUserMembership(member.UserID, event.AggregateID, event.AggregateID, usr_model.MemberTypeIam, event)
default:
return m.view.ProcessedUserMembershipSequence(event)
@@ -137,7 +138,7 @@ func (m *UserMembership) processOrg(event *es_models.Event) (err error) {
return err
}
err = member.AppendEvent(event)
case org_es_model.OrgMemberRemoved:
case org_es_model.OrgMemberRemoved, org_es_model.OrgMemberCascadeRemoved:
return m.view.DeleteUserMembership(member.UserID, event.AggregateID, event.AggregateID, usr_model.MemberTypeOrganisation, event)
case org_es_model.OrgChanged:
return m.updateOrgDisplayName(event)
@@ -190,7 +191,7 @@ func (m *UserMembership) processProject(event *es_models.Event) (err error) {
return err
}
err = member.AppendEvent(event)
case proj_es_model.ProjectMemberRemoved:
case proj_es_model.ProjectMemberRemoved, proj_es_model.ProjectMemberCascadeRemoved:
return m.view.DeleteUserMembership(member.UserID, event.AggregateID, event.AggregateID, usr_model.MemberTypeProject, event)
case proj_es_model.ProjectGrantMemberChanged:
member, err = m.view.UserMembershipByIDs(member.UserID, event.AggregateID, member.ObjectID, usr_model.MemberTypeProjectGrant)
@@ -198,7 +199,8 @@ func (m *UserMembership) processProject(event *es_models.Event) (err error) {
return err
}
err = member.AppendEvent(event)
case proj_es_model.ProjectGrantMemberRemoved:
case proj_es_model.ProjectGrantMemberRemoved,
proj_es_model.ProjectGrantMemberCascadeRemoved:
return m.view.DeleteUserMembership(member.UserID, event.AggregateID, member.ObjectID, usr_model.MemberTypeProjectGrant, event)
case proj_es_model.ProjectChanged:
return m.updateProjectDisplayName(event)