Composite.C1Console.Security.EntityToken.EqualsWithVersionIgnore C# (CSharp) Method

EqualsWithVersionIgnore() public method

public EqualsWithVersionIgnore ( object obj ) : bool
obj object
return bool
        public bool EqualsWithVersionIgnore(object obj)
        {
            EntityToken entityToken = obj as EntityToken;

            if (entityToken == null) return false;


            ValidateEntityToken();

            if (entityToken.GetHashCode() != GetHashCode()) return false;

            return entityToken.Id == this.Id &&
                   entityToken.Type == this.Type &&
                   entityToken.Source == this.Source &&
                   entityToken.GetType() == this.GetType();
        }

Usage Example

Example #1
0
        private static IReadOnlyCollection <PermissionType> RecursiveUpdateCurrentUserPermissionTypes(UserToken userToken, EntityToken entityToken, IEnumerable <UserPermissionDefinition> userPermissionDefinitions, HashSet <EntityTokenPair> alreadyProcessedTokens)
        {
            IReadOnlyCollection <PermissionType> cached = PermissionTypeFacadeCaching.GetUserPermissionTypes(userToken, entityToken);

            if (cached != null)
            {
                return(cached);
            }

            UserPermissionDefinition userPermissionDefinition = userPermissionDefinitions
                                                                .Where(f => entityToken.EqualsWithVersionIgnore(f.EntityToken)).SingleOrDefaultOrException("More then one UserPermissionDefinition for the same entity token");

            var thisPermisstionTypes = new List <PermissionType>();

            if (userPermissionDefinition != null)
            {
                thisPermisstionTypes.AddRange(userPermissionDefinition.PermissionTypes);
            }


            if (thisPermisstionTypes.Count > 0)
            {
                thisPermisstionTypes = thisPermisstionTypes.Distinct().ToList();

                if (thisPermisstionTypes.Contains(PermissionType.ClearPermissions))
                {
                    thisPermisstionTypes = new List <PermissionType>();
                }

                PermissionTypeFacadeCaching.SetUserPermissionTypes(userToken, entityToken, thisPermisstionTypes);

                // Local defined permission overrules all other permissions
                return(thisPermisstionTypes);
            }

            // Call resursively on all parents
            List <EntityToken> parentEntityTokens = ParentsFacade.GetAllParents(entityToken);

            IEnumerable <PermissionType> parentsPermisstionTypes = new List <PermissionType>();

            foreach (EntityToken parentEntityToken in parentEntityTokens)
            {
                EntityTokenPair pair = new EntityTokenPair(entityToken, parentEntityToken);
                if (alreadyProcessedTokens.Contains(pair) == false)
                {
                    alreadyProcessedTokens.Add(pair);

                    IEnumerable <PermissionType> thisParentPermisstionTypes = RecursiveUpdateCurrentUserPermissionTypes(userToken, parentEntityToken, userPermissionDefinitions, alreadyProcessedTokens);

                    parentsPermisstionTypes = parentsPermisstionTypes.Concat(thisParentPermisstionTypes);
                }
            }

            List <PermissionType> permisstionTypes = parentsPermisstionTypes.Distinct().ToList();

            PermissionTypeFacadeCaching.SetUserPermissionTypes(userToken, entityToken, permisstionTypes);

            return(permisstionTypes);
        }
All Usage Examples Of Composite.C1Console.Security.EntityToken::EqualsWithVersionIgnore