/// <summary> /// Get permissions of specified permission level /// </summary> /// <param name="clientContext">Client context</param> /// <param name="permissionLevelName">Name of permission level</param> /// <returns>RoleDefinition object that represents specified permission level</returns> private static RoleDefinition GetPermissionLevel(ClientContext clientContext, string permissionLevelName) { RoleDefinitionCollection roleDefCollection = clientContext.Web.RoleDefinitions; clientContext.Load(roleDefCollection, item => item); clientContext.ExecuteQuery(); RoleDefinition matterCenterContribute = roleDefCollection.Where(item => item.Name == permissionLevelName).FirstOrDefault(); return(matterCenterContribute); }
/// <summary> /// Assigns permission to group /// </summary> /// <param name="clientcontext">Client Context</param> /// <param name="matterCenterGroup">Group for which permission is to be assigned</param> /// <param name="list">List at which permission is to be assigned</param> /// <param name="listName">Name of the list</param> /// <param name="isCustomPermission">Custom permission flag</param> /// <returns>Status of operation</returns> private static bool AssignPermission(ClientContext clientcontext, Group matterCenterGroup, List list, string listName, bool isCustomPermission) { string errorFilePath = Directory.GetParent(Directory.GetCurrentDirectory()) + "/" + "ErrorLog.txt"; bool result = false; try { if (null != clientcontext && null != list && null != matterCenterGroup) { // first breaking permissions Console.WriteLine("Breaking Permissions for " + listName + " list..."); if (!list.HasUniqueRoleAssignments) { list.BreakRoleInheritance(true, true); list.Update(); clientcontext.Load(list); clientcontext.ExecuteQuery(); } //// assigning permissions Principal principal = matterCenterGroup; RoleDefinition role = null; int permission = Convert.ToInt32(ConfigurationManager.AppSettings["Permission"], CultureInfo.InvariantCulture); permission = isCustomPermission ? 3 : permission; switch (permission) { case 0: role = clientcontext.Web.RoleDefinitions.GetByType(RoleType.Contributor); break; case 1: role = clientcontext.Web.RoleDefinitions.GetByType(RoleType.Administrator); break; case 3: string permissionLevel = ConfigurationManager.AppSettings["MatterCenterContributePermission"]; RoleDefinitionCollection roles = clientcontext.Web.RoleDefinitions; clientcontext.Load(roles); clientcontext.ExecuteQuery(); role = roles.Where(item => item.Name == permissionLevel).FirstOrDefault(); break; case 2: default: role = clientcontext.Web.RoleDefinitions.GetByType(RoleType.Reader); break; } RoleDefinitionBindingCollection grpRole = new RoleDefinitionBindingCollection(clientcontext); if (null != role) { grpRole.Add(role); } list.RoleAssignments.Add(principal, grpRole); list.Update(); clientcontext.ExecuteQuery(); result = true; } } catch (Exception exception) { result = false; ErrorLogger.LogErrorToTextFile(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace); } return(result); }