2016-10-18 5 views
3

Есть ли у кого-нибудь какие-либо предлагаемые стратегии для предотвращения изменения пользователем имен страниц?Umbraco - Предотвращение пользователей, редактирующих название страницы

Я разрабатываю сайт на Umbraco, где у разных партнеров есть своя конкретная страница, которую они могут редактировать исключительно. Доступ к этой странице контролируется стандартными разрешениями Umbraco. Однако мы обнаружили, что некоторые из этих пользователей редактируют заголовок страницы, но мы хотели бы ограничить их только возможностью редактировать контент.

Я не вижу никакого очевидного способа контролировать это с помощью встроенных разрешений.

Возможно, можно подключить некоторый код предварительного кода на странице, который проверяет, есть ли у пользователя определенные разрешения, и если у них нет имени страницы, установленного в состояние предварительного редактирования?

Любые предложения/указатели с большой благодарностью.

ответ

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.

 Смежные вопросы

  • Нет связанных вопросов^_^