Search code examples
c#securitysitecoresitecore8usermanager

How can you set security so that a user can only see/edit their items in Sitecore?


Is there any way in Sitecore that I can create a role/user that only can view and edit their own created items? If not, how can I make this possible?


Solution

  • To fix this I have added an item:created event under sitecore/events config.

    <event name="item:created" xdt:Transform="Replace" xdt:Locator="Match(name)">
                  <handler type="Sirano.Dev.ItemEventHandlers.CustomItemEventHandler, Sirano.Dev" method="OnItemCreated" />
    </event>
    

    This event wil run the following code:

        protected void OnItemCreated(object sender, EventArgs args)
        {
            if (args == null)
            {
                return;
            }
            var parameters = Event.ExtractParameters(args);
            var item = ((ItemCreatedEventArgs)parameters[0]).Item;
            if (item == null)
            { 
                return; 
            }
    
            var user = Sitecore.Context.User;
    
            var accessRules = item.Security.GetAccessRules();
    
            accessRules.Helper.AddAccessPermission(user,
               AccessRight.ItemRead,
               PropagationType.Any,
               AccessPermission.Allow);
    
            accessRules.Helper.AddAccessPermission(user,
               AccessRight.ItemWrite,
               PropagationType.Any,
               AccessPermission.Allow);
    
            item.Editing.BeginEdit();
            item.Security.SetAccessRules(accessRules);
            item.Editing.EndEdit();
        }