March 01, 2016
We recently had a client whose content authors required access to the change template functionality in the content editor Configure ribbon. Sitecore provides several out-of-the-box roles (e.g. sitecoreSitecore Client Maintaining) that grant this access, but they also grant access to other functionality in Sitecore that the content authors should not have access to. Knowing that the Sitecore roles were no longer an option, we decided to create our own custom role that would provide the required access. Given that this wasn't a task we do on a regular basis, we had to do some poking around in the core database.
Here's a bit of background information to help you understand how Sitecore ribbons are structured in the core database:
1. A ribbon item in Sitecore references a strip. Sitecore stores all of its default ribbons at /sitecore/content/Applications/Content Editor/Ribbons/Ribbons/Default.
2. A strip item contains one or more chunks. Strips are stored at /sitecore/content/Applications/Content Editor/Ribbons/Strips in the core database.
3. A chunk contains one or more buttons. Chunks are stored at /sitecore/content/Applications/Content Editor/Ribbons/Chunks in the core database. Buttons are stored as children of the chunk to which they belong.
To open up the Change button to our content authors, we had to first provide read access to the Template chunk. In our case, we didn't want to provide access to the Edit button so we blocked the permission from passing to the chunk's descendants as per the screenshot below.
We then explicitly granted read access to the Change button.
With this simple configuration we were able to assign our new role to the content authors to grant access to the change template functionality. You can use these same steps to open up the other ribbons and buttons in Sitecore as the need arises.