コード例 #1
0
ファイル: UpdateLists.cs プロジェクト: yabroffs/mattercenter
        /// <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);
        }
コード例 #2
0
        /// <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);
        }