feat: extend DeleteProvider to include Zitadel IdP (#12396)

# Which Problems Are Solved

This PR extends `DeleteProvider` to include Zitadel provider enabling
the deletion of Zitadel IdP.

# How the Problems Are Solved

- Extend org/instance IDP remove write models to include
`ZitadelIDPAddedEvent` in event appends and queries.
- Extend command-side IDP reduction/type handling for Zitadel IDP add
events.
- Add management/admin integration tests for deleting Zitadel providers
- Add error translation key in all language locales for org-level “IDP
config not existing”.

# Additional Changes

N/A

# Additional Context.
Closes https://github.com/zitadel/zitadel/issues/12397

---------

Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Co-authored-by: Livio Spring <[email protected]>
This commit is contained in:
Gayathri Vijayan
2026-07-13 09:22:31 +02:00
committed by GitHub
co-authored by Copilot Autofix powered by AI Livio Spring
parent a97999e5ca
commit 5bdfd96be5
27 changed files with 326 additions and 12 deletions
+8
View File
@@ -2014,6 +2014,8 @@ func (wm *IDPRemoveWriteModel) Reduce() error {
wm.reduceAdded(e.ConfigID)
case *idpconfig.IDPConfigRemovedEvent:
wm.reduceRemoved(e.ConfigID)
case *idp.ZitadelIDPAddedEvent:
wm.reduceAdded(e.ID)
}
}
return wm.WriteModel.Reduce()
@@ -2126,6 +2128,10 @@ func (wm *IDPTypeWriteModel) Reduce() error {
wm.reduceRemoved(e.ConfigID)
case *org.IDPConfigRemovedEvent:
wm.reduceRemoved(e.ConfigID)
case *instance.ZitadelIDPAddedEvent:
wm.reduceAdded(e.ID, domain.IDPTypeZitadel, e.Aggregate())
case *org.ZitadelIDPAddedEvent:
wm.reduceAdded(e.ID, domain.IDPTypeZitadel, e.Aggregate())
}
}
return wm.WriteModel.Reduce()
@@ -2177,6 +2183,7 @@ func (wm *IDPTypeWriteModel) Query() *eventstore.SearchQueryBuilder {
instance.SAMLIDPAddedEventType,
instance.OIDCIDPMigratedAzureADEventType,
instance.OIDCIDPMigratedGoogleEventType,
instance.ZitadelIDPAddedEventType,
instance.IDPRemovedEventType,
).
EventData(map[string]interface{}{"id": wm.ID}).
@@ -2197,6 +2204,7 @@ func (wm *IDPTypeWriteModel) Query() *eventstore.SearchQueryBuilder {
org.SAMLIDPAddedEventType,
org.OIDCIDPMigratedAzureADEventType,
org.OIDCIDPMigratedGoogleEventType,
org.ZitadelIDPAddedEventType,
org.IDPRemovedEventType,
).
EventData(map[string]interface{}{"id": wm.ID}).
+3
View File
@@ -998,6 +998,8 @@ func (wm *InstanceIDPRemoveWriteModel) AppendEvents(events ...eventstore.Event)
wm.IDPRemoveWriteModel.AppendEvents(&e.IDPConfigAddedEvent)
case *instance.IDPConfigRemovedEvent:
wm.IDPRemoveWriteModel.AppendEvents(&e.IDPConfigRemovedEvent)
case *instance.ZitadelIDPAddedEvent:
wm.IDPRemoveWriteModel.AppendEvents(&e.ZitadelIDPAddedEvent)
default:
wm.IDPRemoveWriteModel.AppendEvents(e)
}
@@ -1023,6 +1025,7 @@ func (wm *InstanceIDPRemoveWriteModel) Query() *eventstore.SearchQueryBuilder {
instance.LDAPIDPAddedEventType,
instance.AppleIDPAddedEventType,
instance.SAMLIDPAddedEventType,
instance.ZitadelIDPAddedEventType,
instance.IDPRemovedEventType,
).
EventData(map[string]interface{}{"id": wm.ID}).
+3
View File
@@ -1010,6 +1010,8 @@ func (wm *OrgIDPRemoveWriteModel) AppendEvents(events ...eventstore.Event) {
wm.IDPRemoveWriteModel.AppendEvents(&e.IDPConfigAddedEvent)
case *org.IDPConfigRemovedEvent:
wm.IDPRemoveWriteModel.AppendEvents(&e.IDPConfigRemovedEvent)
case *org.ZitadelIDPAddedEvent:
wm.IDPRemoveWriteModel.AppendEvents(&e.ZitadelIDPAddedEvent)
default:
wm.IDPRemoveWriteModel.AppendEvents(e)
}
@@ -1035,6 +1037,7 @@ func (wm *OrgIDPRemoveWriteModel) Query() *eventstore.SearchQueryBuilder {
org.LDAPIDPAddedEventType,
org.AppleIDPAddedEventType,
org.SAMLIDPAddedEventType,
org.ZitadelIDPAddedEventType,
org.IDPRemovedEventType,
).
EventData(map[string]interface{}{"id": wm.ID}).