Use fluent API for adding webhook events and add document type events (#15345)

* Move adding webhooks to extension methods

* Clean up WebhookEventCollectionBuilder

* Rename AddAllAvailableWebhooks to AddCmsWebhooks and internalize defaults

* Use fluent CmsWebhookEventCollectionBuilder for adding CMS specific webhook events

* Split media and media type webhook events

* Use fluent CmsUserWebhookEventCollectionBuilder for adding CMS user specific webhook events

* Rename extension methods and add onlyDefault parameter

* Remove duplicate UserForgotPasswordRequestedWebhookEvent

* Add document type webhook events and use fluent builders for content and content types

* Use fluent WebhookEventCollectionBuilderCmsMember for adding member/member group webhook events

* Use fluent WebhookEventCollectionBuilderCmsTemplate for template/partial view webhook events

* Use fluent WebhookEventCollectionBuilderCmsFile for file based webhook events (instead of only template/partial view)

* Move all webhook events to Umbraco.Cms.Core.Webhooks.Events namespace

* Reorder AddFile method and update documentation
This commit is contained in:
Ronald Barendse
2023-12-04 13:25:51 +01:00
committed by GitHub
parent da56f16abf
commit c20d96c705
86 changed files with 1024 additions and 404 deletions

View File

@@ -0,0 +1,81 @@
using Umbraco.Cms.Core.Webhooks.Events;
using static Umbraco.Cms.Core.DependencyInjection.WebhookEventCollectionBuilderCmsExtensions;
namespace Umbraco.Cms.Core.DependencyInjection;
/// <summary>
/// Extension methods for <see cref="WebhookEventCollectionBuilderCmsUser" />.
/// </summary>
public static class WebhookEventCollectionBuilderCmsUserExtensions
{
/// <summary>
/// Adds the user events.
/// </summary>
/// <param name="builder">The builder.</param>
/// <returns>
/// The builder.
/// </returns>
public static WebhookEventCollectionBuilderCmsUser AddDefault(this WebhookEventCollectionBuilderCmsUser builder)
{
builder.Builder
.Append<UserDeletedWebhookEvent>()
.Append<UserSavedWebhookEvent>();
return builder;
}
/// <summary>
/// Adds the user login events.
/// </summary>
/// <param name="builder">The builder.</param>
/// <returns>
/// The builder.
/// </returns>
public static WebhookEventCollectionBuilderCmsUser AddLogin(this WebhookEventCollectionBuilderCmsUser builder)
{
builder.Builder
.Append<UserLockedWebhookEvent>()
.Append<UserLoginFailedWebhookEvent>()
.Append<UserLoginRequiresVerificationWebhookEvent>()
.Append<UserLoginSuccessWebhookEvent>()
.Append<UserLogoutSuccessWebhookEvent>()
.Append<UserTwoFactorRequestedWebhookEvent>()
.Append<UserUnlockedWebhookEvent>();
return builder;
}
/// <summary>
/// Adds the user password events.
/// </summary>
/// <param name="builder">The builder.</param>
/// <returns>
/// The builder.
/// </returns>
public static WebhookEventCollectionBuilderCmsUser AddPassword(this WebhookEventCollectionBuilderCmsUser builder)
{
builder.Builder
.Append<UserForgotPasswordRequestedWebhookEvent>()
.Append<UserPasswordChangedWebhookEvent>()
.Append<UserPasswordResetWebhookEvent>();
return builder;
}
/// <summary>
/// Adds the user group events.
/// </summary>
/// <param name="builder">The builder.</param>
/// <returns>
/// The builder.
/// </returns>
public static WebhookEventCollectionBuilderCmsUser AddGroup(this WebhookEventCollectionBuilderCmsUser builder)
{
builder.Builder
.Append<AssignedUserGroupPermissionsWebhookEvent>()
.Append<UserGroupDeletedWebhookEvent>()
.Append<UserGroupSavedWebhookEvent>();
return builder;
}
}