有没有人有任何建议的策略来阻止用户编辑页面名称?
我正在Umbraco开发一个网站,其中各个合作伙伴都有他们自己可以专门编辑的特定页面。通过标准Umbraco权限控制对此页面的访问。但是,我们发现其中一些用户一直在编辑网页标题,但我们希望将其限制为仅能够编辑内容。
我无法通过内置权限看到任何明显的方法来控制它。
也许可以插入一些页面预保存代码来检查用户是否具有某些权限,如果他们没有将页面名称设置为它的预编辑状态?
非常感谢任何建议/指示。
答案 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。