public static bool NeedToModify(this SecurityObjectBuilder securityObjectBuilder) { bool result = false; result = securityObjectBuilder.BlockedProperties.Count > 0; if (result == false) { result = securityObjectBuilder.BlockedNavigationProperties.Count > 0; } if (!result) { foreach (string propertyName in securityObjectBuilder.BlockedObjectsInListProperty.Keys) { List <object> denyObjectInList = securityObjectBuilder.BlockedObjectsInListProperty[propertyName]; if (denyObjectInList.Count > 0) { result = true; break; } } } if (!result) { foreach (string propertyName in securityObjectBuilder.ModifyObjectsInListProperty.Keys) { List <SecurityObjectBuilder> modifyObjectInList = securityObjectBuilder.ModifyObjectsInListProperty[propertyName]; if (modifyObjectInList.Count > 0) { result = true; break; } } } return(result); }
public static bool IsPropertyBlocked(this SecurityObjectBuilder securityObjectBuilder, string propertyName) { bool result = true; result = securityObjectBuilder.BlockedProperties.Contains(propertyName); if (!result) { result = securityObjectBuilder.BlockedNavigationProperties.Contains(propertyName); } return(result); }
private void FillObjects(SecurityObjectBuilder securityObjectBuilder) { ISecurityObject securityObject = securityObjectBuilder.SecurityObject as ISecurityObject; if (securityObject != null) { securityObject.BlockedMembers = securityObjectBuilder.GetBlockedMembers(); securityObject.ReadOnlyMembers = processor.GetReadOnlyMembersString(securityObject.GetType()); securityObject.ReadOnlyMembersOnLoad = GetReadOnlyMembersOnLoad(securityObjectBuilder); } }
public static string GetBlockedMembers(this SecurityObjectBuilder securityObjectBuilder) { List <string> blockedMembers = new List <string>(); if (securityObjectBuilder != null) { blockedMembers.AddRange(securityObjectBuilder.BlockedProperties); blockedMembers.AddRange(securityObjectBuilder.BlockedNavigationProperties); } blockedMembers.RemoveAll(p => string.IsNullOrWhiteSpace(p)); return(string.Join(";", blockedMembers)); }
public static List <string> GetBlockedMembers(this ISecurityObjectRepository securityObjectRepository, object securityObject) { IEnumerable <SecurityObjectBuilder> resource = securityObjectRepository.GetAllBuilders(); SecurityObjectBuilder securityObjectMetaData = resource.FirstOrDefault(p => p.SecurityObject == securityObject); List <string> blockedMembers = new List <string>(); if (securityObjectMetaData != null) { blockedMembers.AddRange(securityObjectMetaData.BlockedProperties); blockedMembers.AddRange(securityObjectMetaData.BlockedNavigationProperties); } return(blockedMembers); }
public static IEnumerable <SecurityObjectBuilder> GetDuplicateBuilders(this ISecurityObjectRepository securityObjectRepository, IEnumerable <object> objects) { List <SecurityObjectBuilder> dublicateBuilders = new List <SecurityObjectBuilder>(); IEnumerable <SecurityObjectBuilder> allBuilders = securityObjectRepository.GetAllBuilders(); foreach (object obj in objects) { SecurityObjectBuilder builder = allBuilders.FirstOrDefault(p => Equals(p.RealObject, obj) || Equals(p.SecurityObject, obj)); if (builder != null) { dublicateBuilders.Add(builder); } } return(dublicateBuilders); }
private string GetReadOnlyMembersOnLoad(SecurityObjectBuilder securityObjectBuilder) { List <string> denyMembers = new List <string>(); IEntityType entityType = model.FindEntityType(securityObjectBuilder.SecurityObject.GetType()); if (!entityType.Equals(null)) { var properties = entityType.GetProperties(); var denyMembersProperty = GetDenyMembers(properties.Select(p => p.Name), entityType.ClrType, securityObjectBuilder.RealObject); var propertiesNavigation = entityType.GetNavigations(); var denyMembersNavigationProperty = GetDenyMembers(propertiesNavigation.Select(p => p.Name), entityType.ClrType, securityObjectBuilder.RealObject); denyMembers.AddRange(denyMembersProperty); denyMembers.AddRange(denyMembersNavigationProperty); } return(string.Join(";", denyMembers)); }
public static bool TryRemoveObject(this ISecurityObjectRepository securityObjectRepository, object targetObject) { bool result; IEnumerable <SecurityObjectBuilder> resource = securityObjectRepository.GetAllBuilders(); SecurityObjectBuilder objToRemove = resource.FirstOrDefault(p => p.SecurityObject == targetObject || p.RealObject == targetObject); if (objToRemove != null) { securityObjectRepository.RemoveBuilder(objToRemove); result = true; } else { result = false; } return(result); }