Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 8
0
        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);
        }