Example #1
0
        public BaseCollection <DCTPermission> DCMGetRolePermissions(DCTRoleDefinition role)
        {
            (role.ID <= 0 && string.IsNullOrEmpty(role.Name)).TrueThrow <ArgumentException>("角色中必须包含名称或ID.");

            using (DocLibContext context = new DocLibContext(ServiceHelper.GetDocumentLibraryName()))
            {
                RoleDefinition roleDef = null;

                if (!string.IsNullOrEmpty(role.Name))
                {
                    roleDef = context.Web.RoleDefinitions.GetByName(role.Name);
                }
                else
                {
                    roleDef = context.Web.RoleDefinitions.GetById(role.ID);
                }

                context.Load(roleDef);
                context.ExecuteQuery();

                BaseCollection <DCTPermission> permissions = new BaseCollection <DCTPermission>();

                if (roleDef.BasePermissions.Has(PermissionKind.ViewListItems))
                {
                    permissions.Add(DCTPermission.ViewFileOrFolder);
                }

                if (roleDef.BasePermissions.Has(PermissionKind.AddListItems))
                {
                    permissions.Add(DCTPermission.AddFileOrFolder);
                }

                if (roleDef.BasePermissions.Has(PermissionKind.EditListItems))
                {
                    permissions.Add(DCTPermission.UpdateFileOrFolder);
                }

                if (roleDef.BasePermissions.Has(PermissionKind.DeleteListItems))
                {
                    permissions.Add(DCTPermission.DeleteFileOrFolder);
                }


                return(permissions);
            }
        }
Example #2
0
        public BaseCollection <DCTRoleAssignment> DCMGetRoleAssignments(int storageObjID)
        {
            (storageObjID <= 0).TrueThrow <ArgumentException>("ID:{0}无效,请传入大于0的值.", storageObjID);

            using (DocLibContext context = new DocLibContext(ServiceHelper.GetDocumentLibraryName()))
            {
                ListItem listItem = GetListItemById(storageObjID, context);
                if (null == listItem)
                {
                    return(new BaseCollection <DCTRoleAssignment>());
                }
                context.Load(listItem);
                context.Load(listItem.RoleAssignments);
                context.ExecuteQuery();

                RoleAssignmentCollection           roleAssignments = listItem.RoleAssignments;
                BaseCollection <DCTRoleAssignment> results         = new BaseCollection <DCTRoleAssignment>();

                foreach (RoleAssignment roleAssignment in roleAssignments)
                {
                    DCTRoleAssignment dctRoleAssignment = new DCTRoleAssignment();
                    context.Load(roleAssignment.Member);
                    context.Load(roleAssignment.RoleDefinitionBindings);
                    context.ExecuteQuery();

                    dctRoleAssignment.Member = GetPrinciple(roleAssignment.Member.PrincipalType);
                    DCTConverterHelper.Convert(roleAssignment.Member, dctRoleAssignment.Member);

                    dctRoleAssignment.RoleDefinitions = new BaseCollection <DCTRoleDefinition>();
                    RoleDefinitionBindingCollection bindingCollection = roleAssignment.RoleDefinitionBindings;
                    foreach (RoleDefinition roleDefinition in bindingCollection)
                    {
                        DCTRoleDefinition dctRoleDefinition = new DCTRoleDefinition();
                        DCTConverterHelper.Convert(roleDefinition, dctRoleDefinition);
                        dctRoleAssignment.RoleDefinitions.Add(dctRoleDefinition);
                    }

                    results.Add(dctRoleAssignment);
                }

                return(results);
            }
        }
Example #3
0
        public DCTRoleDefinition DCMCreateRole(string rolename, string descriptioin)
        {
            using (DocLibContext context = new DocLibContext(ServiceHelper.GetDocumentLibraryName()))
            {
                RoleDefinitionCreationInformation roleCreationInfo = new RoleDefinitionCreationInformation()
                {
                    BasePermissions = new BasePermissions(), Name = rolename, Description = descriptioin
                };
                context.Web.RoleDefinitions.Add(roleCreationInfo);
                context.Load(context.Web.RoleDefinitions);
                context.ExecuteQuery();

                RoleDefinition roleDefinition = context.Web.RoleDefinitions.GetByName(rolename);
                context.Load(roleDefinition);
                context.ExecuteQuery();

                DCTRoleDefinition dctRoleDefinition = new DCTRoleDefinition();
                DCTConverterHelper.Convert(roleDefinition, dctRoleDefinition);

                return(dctRoleDefinition);
            }
        }
Example #4
0
        public void DCMSetRolePermissions(DCTRoleDefinition role, BaseCollection <DCTPermission> permissions)
        {
            (role.ID <= 0 && string.IsNullOrEmpty(role.Name)).TrueThrow <ArgumentException>("角色中必须包含名称或ID.");


            if (permissions == null || permissions.Count == 0)
            {
                return;
            }

            using (DocLibContext context = new DocLibContext(ServiceHelper.GetDocumentLibraryName()))
            {
                RoleDefinition roleDef = null;

                if (!string.IsNullOrEmpty(role.Name))
                {
                    roleDef = context.Web.RoleDefinitions.GetByName(role.Name);
                }
                else
                {
                    roleDef = context.Web.RoleDefinitions.GetById(role.ID);
                }

                context.Load(roleDef);
                context.ExecuteQuery();

                BasePermissions basePerm = new BasePermissions();

                foreach (DCTPermission permission in permissions)
                {
                    basePerm.Set((PermissionKind)permission);
                }

                roleDef.BasePermissions = basePerm;
                roleDef.Update();
                context.ExecuteQuery();
            }
        }