Hi all ,
I have tried the code that you recommended but i am getting an exception in the module clone ,
Exception occured on line # 181.
inner exception is....
StackTrace = " at System.ThrowHelper.ThrowKeyNotFoundException()\r\n at System.Collections.Generic.Dictionary`2.get_Item(TKey key)\r\n at Telerik.News.NewsModule.get_SecurityRoot()"
Below is how i used the code:
"ElxUsers" is the role whose permissions i want to copy into the newly creatd role(created at admin side). the newly created roles name is given through the parameter "RoleName".
public bool CloneModulePermissions(string RoleName)
{
IDictionary<string, Telerik.IWebModule> dict = Telerik.ModuleManager.WebModules;
foreach (KeyValuePair<string, Telerik.IWebModule> SitefinityModule in dict)
{
ISecuredModule module = Telerik.ModuleManager.WebModules[SitefinityModule.Key] as ISecuredModule;
if (module != null)
{
//GET THE APPLICATION PERMISSIONS
IDictionary<string, ApplicationPermission> permissions;
ISecured secObj = module.SecurityRoot;
if (secObj is ISecuredBase)
permissions = ((ISecuredBase)secObj).GetPermissions("Sitefinity");
else
permissions = secObj.Permissions;
//TYPE THE NAME OF YOUR CURRENT ROLE HERE
string roleName = "ElxUsers";
ApplicationPermission perm;
if (!Telerik.Security.Configuration.ConfigHelper.IsRoleUnrestricted(roleName))
{
if (permissions.TryGetValue(roleName, out perm))
{
// SET PERMISSIONS FOR THE NEWLY CREATED ROLE
string[] cloned = { RoleName };
secObj.SetPermissions(perm.Grant, perm.Deny, cloned);
}
}
}
}
return true;
}
public bool ClonePagePermissions(string RoleName)
{
var cmsManager = new CmsManager();
IList AllCmsPages = cmsManager.GetPages();
foreach (ICmsPage singlePage in AllCmsPages)
{
//GET THE APPLICATION PERMISSIONS
IDictionary<string, ApplicationPermission> permissions;
ISecured secObj = singlePage as ISecured;
if (secObj is ISecuredBase)
permissions = ((ISecuredBase)secObj).GetPermissions("Sitefinity");
else
permissions = secObj.Permissions;
//TYPE THE NAME OF YOUR ROLE HERE
string roleName = "ElxUsers";
ApplicationPermission perm;
if (!Telerik.Security.Configuration.ConfigHelper.IsRoleUnrestricted(roleName))
{
if (permissions.TryGetValue(roleName, out perm))
{
string[] cloned = { RoleName };
secObj.SetPermissions(perm.Grant, perm.Deny, cloned);
}
}
}
return true;
}
Regards,
Muhammad Saqib.