We will work on a scenrio like below:Person: People picker that will be used to add a user.
Country: Listbox containing the list of subsites where we will add the user and assign roles.
Administrator type: Type of custom role where we will assign to the selected user in selected susbsite (Country).
Code :
private void AddUserToGroup(string selectedUser, string userGroupName,string subSite)
{
SPSecurity.RunWithElevatedPrivileges(delegate
{
using (SPSite spSite = new SPSite(SPContext.Current.Site.Url))
{
using (SPWeb spWeb = spSite.AllWebs[subSite
{
try
{
spWeb.AllowUnsafeUpdates = true;
SPUser spUser = spWeb.EnsureUser(selectedUser);
spWeb.RoleDefinitions.BreakInheritance(true, true);
SPRoleDefinition role;
switch(userGroupName)
{
case "Super Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
SPBasePermissions.CreateAlerts
SPBasePermissions.CreateGroups)
};
break;
case "Regional Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
SPBasePermissions.CreateAlerts
)
};
break;
case "Marketing Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
)
};
break;
case "Country Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
)
};
break;
default:
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
};
break;
}
spWeb.RoleDefinitions.Add(role);
spWeb.Update();
spWeb.RoleDefinitions.Cast<SPRoleDefinition>().First(def => def.Name == userGroupName);
SPRoleDefinition newrole = spWeb.RoleDefinitions[userGroupName];
SPRoleAssignment roleAssignment;
roleAssignment = new SPRoleAssignment(spUser.LoginName, spUser.Email, spUser.Name, "Notes about user");
roleAssignment.RoleDefinitionBindings.Add(newrole);
spWeb.RoleAssignments.Add(roleAssignment);
spWeb.Update();
lblError.Text = selectedUser + " is added to the " + userGroupName + "in subsite " + spWeb.Title;
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
finally
{
spWeb.AllowUnsafeUpdates = false;
}
}
}
});
}
Final output you can check from the site. It will look like below:
Country: Listbox containing the list of subsites where we will add the user and assign roles.
Administrator type: Type of custom role where we will assign to the selected user in selected susbsite (Country).
Code :
private void AddUserToGroup(string selectedUser, string userGroupName,string subSite)
{
SPSecurity.RunWithElevatedPrivileges(delegate
{
using (SPSite spSite = new SPSite(SPContext.Current.Site.Url))
{
using (SPWeb spWeb = spSite.AllWebs[subSite
{
try
{
spWeb.AllowUnsafeUpdates = true;
SPUser spUser = spWeb.EnsureUser(selectedUser);
spWeb.RoleDefinitions.BreakInheritance(true, true);
SPRoleDefinition role;
switch(userGroupName)
{
case "Super Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
SPBasePermissions.CreateAlerts
SPBasePermissions.CreateGroups)
};
break;
case "Regional Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
SPBasePermissions.CreateAlerts
)
};
break;
case "Marketing Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
SPBasePermissions.ViewVersions
SPBasePermissions.DeleteVersions
)
};
break;
case "Country Administrator":
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
SPBasePermissions.EditListItems
SPBasePermissions.DeleteListItems
)
};
break;
default:
role = new SPRoleDefinition
{
Name = userGroupName,Description = userGroupName,BasePermissions = SPBasePermissions.FullMask ^
(SPBasePermissions.ManagePermissions
SPBasePermissions.ManageLists
SPBasePermissions.AddListItems
};
break;
}
spWeb.RoleDefinitions.Add(role);
spWeb.Update();
spWeb.RoleDefinitions.Cast<SPRoleDefinition>().First(def => def.Name == userGroupName);
SPRoleDefinition newrole = spWeb.RoleDefinitions[userGroupName];
SPRoleAssignment roleAssignment;
roleAssignment = new SPRoleAssignment(spUser.LoginName, spUser.Email, spUser.Name, "Notes about user");
roleAssignment.RoleDefinitionBindings.Add(newrole);
spWeb.RoleAssignments.Add(roleAssignment);
spWeb.Update();
lblError.Text = selectedUser + " is added to the " + userGroupName + "in subsite " + spWeb.Title;
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
finally
{
spWeb.AllowUnsafeUpdates = false;
}
}
}
});
}
Final output you can check from the site. It will look like below:
No comments:
Post a Comment