Files
Umbraco-CMS/src/Umbraco.Web/Actions/ActionCollectionBuilder.cs
2018-11-29 12:38:44 +01:00

24 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Composing;
namespace Umbraco.Web.Actions
{
internal class ActionCollectionBuilder : LazyCollectionBuilderBase<ActionCollectionBuilder, ActionCollection, IAction>
{
protected override ActionCollectionBuilder This => this;
protected override IEnumerable<IAction> CreateItems(IFactory factory)
{
var items = base.CreateItems(factory).ToList();
//validate the items, no actions should exist that do not either expose notifications or permissions
var invalidItems = items.Where(x => !x.CanBePermissionAssigned && !x.ShowInNotifier).ToList();
if (invalidItems.Count == 0) return items;
var invalidActions = string.Join(", ", invalidItems.Select(x => "'" + x.Alias + "'"));
throw new InvalidOperationException($"Invalid actions {invalidActions}'. All {typeof(IAction)} implementations must be true for either {nameof(IAction.CanBePermissionAssigned)} or {nameof(IAction.ShowInNotifier)}.");
}
}
}