public static IEnumerable <IOperationPermission> GetCustomPermissions(this IXpandRoleCustomPermissions xpandRoleCustomPermissions) { var operationPermissions = xpandRoleCustomPermissions.Permissions.SelectMany(data => data.GetPermissions()); var permissions = operationPermissions.Union(PermissionProviderStorage.Instance.SelectMany(info => info.GetPermissions(xpandRoleCustomPermissions))); return(xpandRoleCustomPermissions.SecurityOperationAttributePermissions().Concat(permissions)); }
public static IEnumerable <IOperationPermission> SecurityOperationAttributePermissions(this IXpandRoleCustomPermissions xpandRoleCustomPermissions) { var operationPermissionCollectionMembers = xpandRoleCustomPermissions.OperationPermissionCollectionMembers(); var operationPermissions = new List <IOperationPermission>(); foreach (var operationPermissionCollectionMember in operationPermissionCollectionMembers) { operationPermissions.AddRange(xpandRoleCustomPermissions.ObjectOperationPermissions(operationPermissionCollectionMember)); } return(operationPermissions.Distinct()); }
static IEnumerable <XPMemberInfo> OperationPermissionCollectionMembers(this IXpandRoleCustomPermissions xpandRoleCustomPermissions) { var classInfo = ((IXPClassInfoProvider)xpandRoleCustomPermissions).ClassInfo; return(classInfo.OwnMembers.Where(info => info.IsAssociationList && info.CollectionElementType.HasAttribute(typeof(SecurityOperationsAttribute)))); }