provided below.
private void ResetPermissionsForLayoutElements()
{
foreach (DataProviderSettings providerSettings in Config.Get<PagesConfig>().Providers)
{
PageManager mgr = PageManager.GetManager(providerSettings.Name);
mgr.Provider.SuppressSecurityChecks = true;
var config = Config.Get<Telerik.Sitefinity.Security.Configuration.SecurityConfig>();
var setName = SecurityConstants.Sets.LayoutElement.SetName;
var actionsMask = config.Permissions[setName].Actions[SecurityConstants.Sets.LayoutElement.DropOn].Value;
var principals = new Guid[] { config.ApplicationRoles[SecurityManager.BackendUsersRoleName].Id };
List<ObjectData> controlsToUpdate = new List<ObjectData>();
var templatesToUpdate = mgr.GetControls<Telerik.Sitefinity.Pages.Model.TemplateControl>()
.Where(c => c.IsLayoutControl)
.ToArray()
.Where(c => !c.IsGranted(setName, principals, actionsMask))
.ToArray();
controlsToUpdate.AddRange(templatesToUpdate);
var templateDraftsToUpdate = mgr.GetControls<Telerik.Sitefinity.Pages.Model.TemplateDraftControl>()
.Where(c => c.IsLayoutControl)
.ToArray()
.Where(c => !c.IsGranted(setName, principals, actionsMask))
.ToArray();
controlsToUpdate.AddRange(templateDraftsToUpdate);
var pagesToUpdate = mgr.GetControls<PageControl>()
.Where(c => c.IsLayoutControl)
.ToArray()
.Where(c => !c.IsGranted(setName, principals, actionsMask))
.ToArray();
controlsToUpdate.AddRange(pagesToUpdate);
var pageDraftsToUpdate = mgr.GetControls<PageDraftControl>()
.Where(c => c.IsLayoutControl)
.ToArray()
.Where(c => !c.IsGranted(setName, principals, actionsMask))
.ToArray();
controlsToUpdate.AddRange(pageDraftsToUpdate);
foreach (var item in controlsToUpdate)
{
var secItem = (ISecuredObject)item;
var perm = secItem.Permissions
.Where(p => p.SetName == setName && p.PrincipalId == principals[0] && p.ObjectId == item.Id)
.SingleOrDefault();
if (perm == null)
{
perm = mgr.GetPermission(setName, item.Id, principals[0]);
if (perm == null)
{
perm = mgr.CreatePermission(setName, item.Id, principals[0]);
}
}
perm.GrantActions(true, SecurityConstants.Sets.LayoutElement.DropOn);
perm.UndenyActions(SecurityConstants.Sets.LayoutElement.DropOn);
if (!secItem.Permissions.Contains(perm))
secItem.Permissions.Add(perm);
}
mgr.SaveChanges();
}
}