private Principal BuildSharepointPrincipal(DocLibContext context, DCTRoleAssignment dctRoleAssignment) { Principal principal = null; if (dctRoleAssignment.Member.PricinpalType == DCTPrincipalType.SharePointGroup) { Group group = context.Web.SiteGroups.GetById(dctRoleAssignment.Member.ID); principal = group; } else { User user = context.Web.EnsureUser((dctRoleAssignment.Member as DCTUser).LoginName); principal = user; } return(principal); }
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); } }
private RoleDefinitionBindingCollection BuildRoleDefninitionBinding(DocLibContext context, DCTRoleAssignment dctRoleAssignment, out bool ignore) { RoleDefinitionBindingCollection binding = new RoleDefinitionBindingCollection(context); int count = 0; foreach (DCTRoleDefinition dctRoleDefinition in dctRoleAssignment.RoleDefinitions) { if (dctRoleDefinition.Name == IgnoreRole) { continue; } RoleDefinition spRoleDefinition = null; if (!string.IsNullOrEmpty(dctRoleDefinition.Name)) { spRoleDefinition = context.Web.RoleDefinitions.GetByName(dctRoleDefinition.Name); } else { spRoleDefinition = context.Web.RoleDefinitions.GetById(dctRoleDefinition.ID); } context.Load(spRoleDefinition); context.ExecuteQuery(); binding.Add(spRoleDefinition); count++; } ignore = (count == 0); return(binding); }