Exemplo n.º 1
0
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            // There aren't any valid scenarios if the olderActivity is ModifySecurityEntityOwnerActivity or MoveSecurityEntityActivity

            var createSecurityEntityActivity = olderActivity as CreateSecurityEntityActivity;

            if (createSecurityEntityActivity != null)
            {
                return(this.AllEntityIds.Contains(createSecurityEntityActivity.EntityId));
            }

            var deleteSecurityEntityActivity = olderActivity as DeleteSecurityEntityActivity;

            if (deleteSecurityEntityActivity != null)
            {
                return(DependencyTools.AnyIsInTree(this.Context, this.AllEntityIds, deleteSecurityEntityActivity.EntityId));
            }

            var setAclActivity = olderActivity as SetAclActivity;

            if (setAclActivity != null)
            {
                return(setAclActivity.AllEntityIds.Intersect(this.AllEntityIds).Any());
            }

            return(false);
        }
Exemplo n.º 2
0
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            // There aren't any valid scenarios if the olderActivity is ModifySecurityEntityOwnerActivity or SetAclActivity

            if (olderActivity is CreateSecurityEntityActivity createSecurityEntityActivity)
            {
                return(createSecurityEntityActivity.EntityId == ParentEntityId);
            }

            if (olderActivity is DeleteSecurityEntityActivity deleteSecurityEntityActivity)
            {
                return(deleteSecurityEntityActivity.EntityId == EntityId ||
                       DependencyTools.IsInTree(Context, ParentEntityId, deleteSecurityEntityActivity.EntityId));
            }

            if (olderActivity is MoveSecurityEntityActivity moveSecurityEntityActivity)
            {
                return(moveSecurityEntityActivity.SourceId == EntityId || moveSecurityEntityActivity.TargetId == EntityId);
            }

            return(false);
        }
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            // There aren't any valid scenarios if the olderActivity is ModifySecurityEntityOwnerActivity or SetAclActivity

            var createSecurityEntityActivity = olderActivity as CreateSecurityEntityActivity;

            if (createSecurityEntityActivity != null)
            {
                return(createSecurityEntityActivity.EntityId == this.ParentEntityId);
            }

            var deleteSecurityEntityActivity = olderActivity as DeleteSecurityEntityActivity;

            if (deleteSecurityEntityActivity != null)
            {
                return(deleteSecurityEntityActivity.EntityId == this.EntityId ||
                       DependencyTools.IsInTree(this.Context, this.ParentEntityId, deleteSecurityEntityActivity.EntityId));
            }

            var moveSecurityEntityActivity = olderActivity as MoveSecurityEntityActivity;

            if (moveSecurityEntityActivity != null)
            {
                return((moveSecurityEntityActivity.SourceId == this.EntityId) || (moveSecurityEntityActivity.TargetId == this.EntityId));
            }

            return(false);
        }
Exemplo n.º 4
0
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            var createSecurityEntityActivity = olderActivity as CreateSecurityEntityActivity;

            if (createSecurityEntityActivity != null)
            {
                return((createSecurityEntityActivity.EntityId == this.EntityId) ||
                       DependencyTools.IsInTree(this.Context, createSecurityEntityActivity.ParentEntityId, this.EntityId));
            }

            var deleteSecurityEntityActivity = olderActivity as DeleteSecurityEntityActivity;

            if (deleteSecurityEntityActivity != null)
            {
                return(DependencyTools.HasAncestorRelation(this.Context, this.EntityId, deleteSecurityEntityActivity.EntityId));
            }

            var modifySecurityEntityOwnerActivity = olderActivity as ModifySecurityEntityOwnerActivity;

            if (modifySecurityEntityOwnerActivity != null)
            {
                return(DependencyTools.IsInTree(this.Context, modifySecurityEntityOwnerActivity.EntityId, this.EntityId));
            }

            var moveSecurityEntityActivity = olderActivity as MoveSecurityEntityActivity;

            if (moveSecurityEntityActivity != null)
            {
                var ctx      = this.Context;
                var entities = SecurityEntity.PeekEntities(ctx, this.EntityId, moveSecurityEntityActivity.SourceId, moveSecurityEntityActivity.TargetId);

                var deleteTarget = entities[0];
                var moveSource   = entities[1];
                var moveTarget   = entities[2];

                if (DependencyTools.HasAncestorRelation(ctx, moveSource, deleteTarget))
                {
                    return(true);
                }
                if (DependencyTools.IsInTree(ctx, moveTarget, this.EntityId))
                {
                    return(true);
                }
            }

            var setAclActivity = olderActivity as SetAclActivity;

            if (setAclActivity != null)
            {
                return(DependencyTools.AnyIsInTree(this.Context, setAclActivity.AllEntityIds, this.EntityId));
            }

            return(false);
        }
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            // There aren't any valid scenarios if the olderActivity is ModifySecurityEntityOwnerActivity or SetAclActivity

            var createSecurityEntityActivity = olderActivity as CreateSecurityEntityActivity;

            if (createSecurityEntityActivity != null)
            {
                return((this.SourceId == createSecurityEntityActivity.EntityId) || (this.TargetId == createSecurityEntityActivity.EntityId));
            }

            var deleteSecurityEntityActivity = olderActivity as DeleteSecurityEntityActivity;

            if (deleteSecurityEntityActivity != null)
            {
                var ctx      = this.Context;
                var entities = SecurityEntity.PeekEntities(ctx, deleteSecurityEntityActivity.EntityId, this.SourceId, this.TargetId);

                var deleteTarget = entities[0];
                var moveSource   = entities[1];
                var moveTarget   = entities[2];

                if (DependencyTools.HasAncestorRelation(ctx, moveSource, deleteTarget))
                {
                    return(true);
                }
                if (DependencyTools.HasAncestorRelation(ctx, moveTarget, deleteTarget))
                {
                    return(true);
                }
            }
            var moveSecurityEntityActivity = olderActivity as MoveSecurityEntityActivity;

            if (moveSecurityEntityActivity != null)
            {
                var ctx         = this.Context;
                var entities    = SecurityEntity.PeekEntities(ctx, this.SourceId, this.TargetId, moveSecurityEntityActivity.SourceId, moveSecurityEntityActivity.TargetId);
                var move1Source = entities[0];
                var move1Target = entities[1];
                var move2Source = entities[2];
                var move2Target = entities[3];

                if (
                    DependencyTools.HasAncestorRelation(ctx, move1Source, move2Source) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Source, move2Target) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Target, move2Source) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Target, move2Target)
                    )
                {
                    return(true);
                }
            }
            return(false);
        }
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            // There aren't any valid scenarios if the olderActivity is ModifySecurityEntityOwnerActivity or SetAclActivity

            if (olderActivity is CreateSecurityEntityActivity createSecurityEntityActivity)
            {
                return(SourceId == createSecurityEntityActivity.EntityId || TargetId == createSecurityEntityActivity.EntityId);
            }

            if (olderActivity is DeleteSecurityEntityActivity deleteSecurityEntityActivity)
            {
                var ctx      = Context;
                var entities = ctx.SecuritySystem.EntityManager.PeekEntities(deleteSecurityEntityActivity.EntityId, SourceId, TargetId);

                var deleteTarget = entities[0];
                var moveSource   = entities[1];
                var moveTarget   = entities[2];

                if (DependencyTools.HasAncestorRelation(ctx, moveSource, deleteTarget))
                {
                    return(true);
                }
                if (DependencyTools.HasAncestorRelation(ctx, moveTarget, deleteTarget))
                {
                    return(true);
                }
            }

            if (olderActivity is MoveSecurityEntityActivity moveSecurityEntityActivity)
            {
                var ctx         = Context;
                var entities    = ctx.SecuritySystem.EntityManager.PeekEntities(SourceId, TargetId, moveSecurityEntityActivity.SourceId, moveSecurityEntityActivity.TargetId);
                var move1Source = entities[0];
                var move1Target = entities[1];
                var move2Source = entities[2];
                var move2Target = entities[3];

                if (
                    DependencyTools.HasAncestorRelation(ctx, move1Source, move2Source) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Source, move2Target) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Target, move2Source) ||
                    DependencyTools.HasAncestorRelation(ctx, move1Target, move2Target))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 7
0
        internal override bool MustWaitFor(SecurityActivity olderActivity)
        {
            if (olderActivity is MembershipActivity)
            {
                return(true);
            }

            if (olderActivity is CreateSecurityEntityActivity createSecurityEntityActivity)
            {
                return(createSecurityEntityActivity.EntityId == EntityId ||
                       DependencyTools.IsInTree(Context, createSecurityEntityActivity.ParentEntityId, EntityId));
            }

            if (olderActivity is DeleteSecurityEntityActivity deleteSecurityEntityActivity)
            {
                return(DependencyTools.HasAncestorRelation(Context, EntityId, deleteSecurityEntityActivity.EntityId));
            }

            if (olderActivity is ModifySecurityEntityOwnerActivity modifySecurityEntityOwnerActivity)
            {
                return(DependencyTools.IsInTree(Context, modifySecurityEntityOwnerActivity.EntityId, EntityId));
            }

            if (olderActivity is MoveSecurityEntityActivity moveSecurityEntityActivity)
            {
                var ctx      = Context;
                var entities = ctx.SecuritySystem.EntityManager.PeekEntities(EntityId, moveSecurityEntityActivity.SourceId, moveSecurityEntityActivity.TargetId);

                var deleteTarget = entities[0];
                var moveSource   = entities[1];
                var moveTarget   = entities[2];

                if (DependencyTools.HasAncestorRelation(ctx, moveSource, deleteTarget))
                {
                    return(true);
                }
                if (DependencyTools.IsInTree(ctx, moveTarget, EntityId))
                {
                    return(true);
                }
            }

            if (olderActivity is SetAclActivity setAclActivity)
            {
                return(DependencyTools.AnyIsInTree(Context, setAclActivity.AllEntityIds, EntityId));
            }

            return(false);
        }