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); } }
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); } }
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); } }
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(); } }