Umbraco -阻止用户编辑页面名称



谁有任何建议的策略来防止用户编辑页面名称?

我正在Umbraco上开发一个网站,其中各种合作伙伴有他们自己的特定页面,他们可以独家编辑。通过标准Umbraco权限控制对该页面的访问。然而,我们发现其中一些用户一直在编辑页面标题,但我们希望限制他们只能编辑内容。

我看不出有什么明显的方法可以通过内置的权限来控制这个。

也许有可能插入一些页面预保存代码,检查用户是否具有某些权限,如果他们没有,页面名称设置为预编辑状态?

是的,您可以连接到Umbraco ContentService事件并检查Name是否已更改,并对该特定节点做或不做某事。你还可以添加一些额外的检查来确定用户是否被允许更改名称(例如,你可以通过角色或其他任何你需要的东西来控制这个)。

示例代码如下所示:
public class UmbracoEvents : ApplicationEventHandler
{
    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        ContentService.Saving += ContentService_Saving;
    }
    private void ContentService_Saving(IContentService sender, Umbraco.Core.Events.SaveEventArgs<Umbraco.Core.Models.IContent> e)
    {
        foreach (var changedItem in e.SavedEntities)
        {
            var currentVersion = sender.GetById(changedItem.Id);
            if (!currentVersion.Name.InvariantEquals(changedItem.Name))
            {
                // Additional checks here (or in the above condition) - role / property / etc...
                item.Name = currentVersion.Name;
            }
        }
    }
}

您也可以在这里阅读更多关于具体事件的信息:https://our.umbraco.org/documentation/reference/events/contentservice-events.

最新更新