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

时间:2016-10-18 20:56:44

标签: umbraco umbraco7

有没有人有任何建议的策略来阻止用户编辑页面名称?

我正在Umbraco开发一个网站,其中各个合作伙伴都有他们自己可以专门编辑的特定页面。通过标准Umbraco权限控制对此页面的访问。但是,我们发现其中一些用户一直在编辑网页标题,但我们希望将其限制为仅能够编辑内容。

我无法通过内置权限看到任何明显的方法来控制它。

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

非常感谢任何建议/指示。

1 个答案:

答案 0 :(得分:8)

是的,您可以连接到Umbraco ContentService 事件,并检查名称是否已更改,是否对此特定节点执行某些操作。您还可以添加一些额外的检查以确定是否允许用户更改名称(例如,您可以通过角色或其他任何其他内容来控制此名称。)

示例代码如下所示:

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