public IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken seachToken)
        {
            if (entityToken is PackageElementProviderRootEntityToken)
            {
                return(GetRootChildren(seachToken));
            }
            if (entityToken is PackageElementProviderAvailablePackagesFolderEntityToken)
            {
                return(GetAvailablePackagesFolderChildren(seachToken));
            }
            if (entityToken is PackageElementProviderAvailablePackagesGroupFolderEntityToken availableGroupEntityToken)
            {
                return(GetAvailablePackageGroupFolderChildren(availableGroupEntityToken.GroupName, seachToken));
            }
            if (entityToken is PackageElementProviderInstalledPackageFolderEntityToken)
            {
                return(GetInstalledPackageFolderChildren(seachToken));
            }
            if (entityToken is PackageElementProviderPackageSourcesFolderEntityToken)
            {
                return(GetPackageSourcesFolderChildren(seachToken));
            }
            if (entityToken is PackageElementProviderInstalledPackageLocalPackagesFolderEntityToken)
            {
                return(GetInstalledLocalPackagesFolderChildren(seachToken));
            }
            if (entityToken is PackageElementProviderInstalledPackageGroupFolderEntityToken installedGroupEntityToken)
            {
                return(GetInstalledPackageGroupFolderChildren(installedGroupEntityToken.GroupName, seachToken));
            }

            throw new InvalidOperationException("Unexpected entity token type: " + entityToken.GetType());
        }
        public static ISecurityAncestorProvider GetSecurityAncestorProvider(EntityToken entityToken)
        {
            Verify.ArgumentNotNull(entityToken, "entityToken");

            ISecurityAncestorProvider securityAncestorProvider;

            Type entityTokenType = entityToken.GetType();

            if (_securityAncestorProviderCache.TryGetValue(entityTokenType, out securityAncestorProvider) == false)
            {
                lock (_lock)
                {
                    if (_securityAncestorProviderCache.TryGetValue(entityTokenType, out securityAncestorProvider) == false)
                    {
                        object[] attributes = entityTokenType.GetCustomAttributes(typeof(SecurityAncestorProviderAttribute), true);

                        Verify.That(attributes.Length > 0, "Missing {0} attribute on the entity token {1}", typeof(SecurityAncestorProviderAttribute), entityTokenType);

                        var attribute = (SecurityAncestorProviderAttribute)attributes[0];

                        Verify.IsNotNull(attribute.SecurityAncestorProviderType, "Security ancestor provider type can not be null on the entity token {0}", entityTokenType);
                        Verify.That(typeof(ISecurityAncestorProvider).IsAssignableFrom(attribute.SecurityAncestorProviderType), "Security ancestor provider '{0}' should implement the interface '{1}'", attribute.SecurityAncestorProviderType, typeof(ISecurityAncestorProvider));

                        securityAncestorProvider = (ISecurityAncestorProvider)Activator.CreateInstance(attribute.SecurityAncestorProviderType);

                        _securityAncestorProviderCache.Add(entityTokenType, securityAncestorProvider);
                    }
                }
            }


            return(securityAncestorProvider);
        }
        public static ISecurityAncestorProvider GetSecurityAncestorProvider(EntityToken entityToken)
        {
            Verify.ArgumentNotNull(entityToken, "entityToken");

            ISecurityAncestorProvider securityAncestorProvider;

            Type entityTokenType = entityToken.GetType();

            if (_securityAncestorProviderCache.TryGetValue(entityTokenType, out securityAncestorProvider) == false)
            {
                lock (_lock)
                {
                    if (_securityAncestorProviderCache.TryGetValue(entityTokenType, out securityAncestorProvider) == false)
                    {
                        object[] attributes = entityTokenType.GetCustomAttributes(typeof(SecurityAncestorProviderAttribute), true);

                        Verify.That(attributes.Length > 0, "Missing {0} attribute on the entity token {1}", typeof(SecurityAncestorProviderAttribute), entityTokenType);

                        var attribute = (SecurityAncestorProviderAttribute)attributes[0];

                        Verify.IsNotNull(attribute.SecurityAncestorProviderType, "Security ancestor provider type can not be null on the entity token {0}", entityTokenType);
                        Verify.That(typeof(ISecurityAncestorProvider).IsAssignableFrom(attribute.SecurityAncestorProviderType), "Security ancestor provider '{0}' should implement the interface '{1}'", attribute.SecurityAncestorProviderType, typeof(ISecurityAncestorProvider));

                        securityAncestorProvider = (ISecurityAncestorProvider)Activator.CreateInstance(attribute.SecurityAncestorProviderType);

                        _securityAncestorProviderCache.Add(entityTokenType, securityAncestorProvider);
                    }
                }
            }


            return securityAncestorProvider;
        }
 /// <exclude />
 public static bool IsAttachingPoint(EntityToken leftEntityToken, EntityToken rightEntityToken)
 {
     return(leftEntityToken.GetType() == rightEntityToken.GetType() &&
            leftEntityToken.Id == rightEntityToken.Id &&
            leftEntityToken.Type == rightEntityToken.Type &&
            leftEntityToken.Source == rightEntityToken.Source);
 }
        private string GetFileVirtualPath()
        {
            if (IsPageTemplate)
            {
                return(GetPageTemplateDescriptor().VirtualPath);
            }

            if (EntityToken is SharedCodeFileEntityToken)
            {
                return((EntityToken as SharedCodeFileEntityToken).VirtualPath);
            }

            throw new InvalidOperationException("Unexpected entity token type " + EntityToken.GetType().FullName);
        }
        public IEnumerable <T> GetProvidersFor(EntityToken entityToken)
        {
            var providers = new List <T>();

            var entityTokenType = entityToken.GetType();

            foreach (var kvp in _providers)
            {
                if (kvp.Key == entityTokenType || kvp.Key.IsAssignableFrom(entityTokenType))
                {
                    providers.AddRange(kvp.Value);
                }
            }

            return(providers);
        }
Ejemplo n.º 7
0
        private Guid GetPageId(EntityToken entityToken)
        {
            if (entityToken is DataGroupingProviderHelperEntityToken dataGroupingEntityToken)
            {
                if (dataGroupingEntityToken.Payload.IsNullOrEmpty())
                {
                    return(Guid.Empty);
                }

                return(new Guid(dataGroupingEntityToken.Payload));
            }

            if (entityToken is AssociatedDataElementProviderHelperEntityToken pageFolderElementEntityToken)
            {
                return(new Guid(pageFolderElementEntityToken.Id));
            }

            if (entityToken is DataEntityToken dataEntityToken)
            {
                return((dataEntityToken.Data as IPageRelatedData).PageId);
            }

            throw new InvalidOperationException($"Unexpected entity token type '{entityToken.GetType().FullName}'");
        }
        private Guid GetPageId(EntityToken entityToken)
        {
            var dataGroupingEntityToken = entityToken as DataGroupingProviderHelperEntityToken;

            if (dataGroupingEntityToken != null)
            {
                if (dataGroupingEntityToken.Payload.IsNullOrEmpty())
                {
                    return(Guid.Empty);
                }

                return(new Guid(dataGroupingEntityToken.Payload));
            }

            var pageFolderElementEntityToken = entityToken as AssociatedDataElementProviderHelperEntityToken;

            if (pageFolderElementEntityToken != null)
            {
                return(new Guid(pageFolderElementEntityToken.Id));
            }

            var dataEntityToken = entityToken as DataEntityToken;

            if (dataEntityToken != null)
            {
                return((dataEntityToken.Data as IPageRelatedData).PageId);
            }

            throw new InvalidOperationException("Unexpected entity token type '{0}'".FormatWith(entityToken.GetType().FullName));
        }
Ejemplo n.º 9
0
    private void PrettyPrintEntityToken(EntityToken entityToken, string color)
    {
        var idList = new List <object>();

        if (entityToken.Id.Contains("="))
        {
            Dictionary <string, string> dic = StringConversionServices.ParseKeyValueCollection(entityToken.Id);

            idList.Add(new XElement("br"));

            foreach (KeyValuePair <string, string> kvp in dic)
            {
                idList.Add(new XElement("span", new XAttribute("style", "padding-left: 15px; color: " + color),
                                        string.Format("{0} = {1}", kvp.Key, kvp.Value)));
                idList.Add(new XElement("br"));
            }
        }
        else
        {
            idList.Add(entityToken.Id);
        }


        var userPermissionsDefinedHere  = new List <object>();
        var currentUsersPermissionTypes = new List <object>();

        string serializedEntityToken = EntityTokenSerializer.Serialize(entityToken);

        var usernames = UserValidationFacade.AllUsernames.OrderBy(u => u).ToList();

        foreach (string username in usernames)
        {
            IEnumerable <PermissionType> userPermissionTypes = PermissionTypeFacade.GetLocallyDefinedUserPermissionTypes(
                new UserToken(username), entityToken);

            AddPersissionsLine(userPermissionsDefinedHere, username, userPermissionTypes);

            var currentPermissionTypes = PermissionTypeFacade.GetCurrentPermissionTypes(
                new UserToken(username), entityToken,
                PermissionTypeFacade.GetUserPermissionDefinitions(username),
                PermissionTypeFacade.GetUserGroupPermissionDefinitions(username));

            AddPersissionsLine(currentUsersPermissionTypes, username, currentPermissionTypes);
        }


        var userGroupPermissionsDefinedHere = new List <object>();
        var inheritedGroupPermissions       = new List <object>();

        var userGroups = DataFacade.GetData <IUserGroup>().OrderBy(ug => ug.Name).ToList();

        foreach (IUserGroup userGroup in userGroups)
        {
            var userGroupPermissionTypes = PermissionTypeFacade.GetLocallyDefinedUserGroupPermissionTypes(userGroup.Id, entityToken);

            AddPersissionsLine(userGroupPermissionsDefinedHere, userGroup.Name, userGroupPermissionTypes);

            IEnumerable <PermissionType> inheritedUserGroupPermissionTypes = PermissionTypeFacade.GetInheritedGroupPermissionsTypes(userGroup.Id, entityToken);

            AddPersissionsLine(inheritedGroupPermissions, userGroup.Name, inheritedUserGroupPermissionTypes);
        }



        var element =
            new XElement("div",
                         new XAttribute("style",
                                        string.Format(
                                            "border:2px; border-style: solid; border-color: {0}; margin-bottom: 2px; margin-left:5px; margin-right:5px; padding: 3px;",
                                            color)),
                         new XElement("b", "Runtime type: "),
                         entityToken.GetType().ToString(),
                         new XElement("br"),
                         new XElement("b", "Hashcode: "),
                         entityToken.GetHashCode().ToString(),
                         new XElement("br"),
                         new XElement("b", "Source: "),
                         entityToken.Source,
                         new XElement("br"),
                         new XElement("b", "Type: "),
                         entityToken.Type,
                         new XElement("br"),
                         new XElement("b", "Id: "),
                         idList,
                         new XElement("br"),
                         new XElement("b", "Serialized entity token: "),
                         serializedEntityToken,
                         new XElement("br"),
                         new XElement("br"));


        if (currentUsersPermissionTypes.Any())
        {
            element.Add(
                new XElement("b", "Resolved users permissions here: "),
                new XElement("br"),
                currentUsersPermissionTypes,
                new XElement("br"));
        }


        if (userPermissionsDefinedHere.Any())
        {
            element.Add(
                new XElement("b", "Users permissions defined here: "),
                new XElement("br"),
                userPermissionsDefinedHere,
                new XElement("br"));
        }

        if (inheritedGroupPermissions.Any())
        {
            element.Add(
                new XElement("b", "Inherted user group permissions: "),
                new XElement("br"),
                inheritedGroupPermissions,
                new XElement("br"));
        }

        if (userGroupPermissionsDefinedHere.Any())
        {
            element.Add(
                new XElement("b", "User group permissions defined here: "),
                new XElement("br"),
                userGroupPermissionsDefinedHere,
                new XElement("br"));
        }


        RelationshipGraphHolder.Controls.Add(new LiteralControl(element.ToString()));
    }
        /// <exclude />

        public void PostRefreshMessages(EntityToken specificEntityToken)
        {
            Verify.ArgumentNotNull(specificEntityToken, "specificEntityToken");

            if (_postRefreshMessagesCalled)
            {
                throw new InvalidOperationException("Only one PostRefreshMessages call is allowed");
            }

            IManagementConsoleMessageService messageService = _flowControllerServicesContainer.GetService <IManagementConsoleMessageService>();

            messageService.RefreshTreeSection(specificEntityToken);

            Log.LogVerbose(GetType().Name, "Refreshing EntityToken: Type = {0}, Source = {1}, Id = {2}, EntityTokenType = {3}", specificEntityToken.Type, specificEntityToken.Source, specificEntityToken.Id, specificEntityToken.GetType());
        }
 /// <exclude />
 public static bool IsAttachingPoint(EntityToken entityToken, AttachingPoint attachingPoint)
 {
     return(attachingPoint.Id == entityToken.Id &&
            attachingPoint.Source == entityToken.Source &&
            attachingPoint.EntityTokenType == entityToken.GetType());
 }
        /// <exclude />
        public static FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer, TaskManagerEvent taskManagerEvent)
        {
            if (entityToken == null)
            {
                throw new ArgumentNullException("entityToken");
            }
            if (actionToken == null)
            {
                throw new ArgumentNullException("actionToken");
            }


            string username = UserValidationFacade.GetUsername();

#if NO_SECURITY
#else
            HookingFacade.EnsureInitialization();

            IEnumerable <UserPermissionDefinition>      userPermissionDefinitions      = PermissionTypeFacade.GetUserPermissionDefinitions(username);
            IEnumerable <UserGroupPermissionDefinition> userGroupPermissionDefinitions = PermissionTypeFacade.GetUserGroupPermissionDefinitions(username);
            SecurityResult securityResult = SecurityResolver.Resolve(UserValidationFacade.GetUserToken(), actionToken, entityToken, userPermissionDefinitions, userGroupPermissionDefinitions);
            if ((securityResult != SecurityResult.Allowed) && (entityToken.GetType() != typeof(SecurityViolationWorkflowEntityToken)))
            {
                return(ExecuteSecurityViolation(actionToken, entityToken, flowControllerServicesContainer));
            }
#endif

            bool ignoreLocking = actionToken.IsIgnoreEntityTokenLocking();

            if ((ignoreLocking) ||
                (ActionLockingFacade.IsLocked(entityToken) == false))
            {
                IActionExecutor actionExecutor = ActionExecutorCache.GetActionExecutor(actionToken);

                ActionEventSystemFacade.FireOnBeforeActionExecution(entityToken, actionToken);

                FlowToken flowToken;
                using (TaskContainer taskContainer = TaskManagerFacade.CreateNewTasks(entityToken, actionToken, taskManagerEvent))
                {
                    ITaskManagerFlowControllerService taskManagerService = null;
                    if (flowControllerServicesContainer.GetService(typeof(ITaskManagerFlowControllerService)) == null)
                    {
                        taskManagerService = new TaskManagerFlowControllerService(taskContainer);
                        flowControllerServicesContainer.AddService(taskManagerService);
                    }

                    try
                    {
                        if ((actionExecutor is IActionExecutorSerializedParameters))
                        {
                            string serializedEntityToken = EntityTokenSerializer.Serialize(entityToken);
                            string serializedActionToken = ActionTokenSerializer.Serialize(actionToken);

                            flowToken = Execute(actionExecutor as IActionExecutorSerializedParameters,
                                                serializedEntityToken, serializedActionToken, actionToken,
                                                flowControllerServicesContainer);
                        }
                        else
                        {
                            flowToken = Execute(actionExecutor, entityToken, actionToken,
                                                flowControllerServicesContainer);
                        }
                    }
                    finally
                    {
                        if (taskManagerService != null)
                        {
                            flowControllerServicesContainer.RemoveService(taskManagerService);
                        }
                    }

                    taskContainer.SetOnIdleTaskManagerEvent(new FlowTaskManagerEvent(flowToken));
                    taskContainer.UpdateTasksWithFlowToken(flowToken);

                    taskContainer.SaveTasks();
                }

                ActionEventSystemFacade.FireOnAfterActionExecution(entityToken, actionToken, flowToken);

                IManagementConsoleMessageService managementConsoleMessageService = flowControllerServicesContainer.GetService <IManagementConsoleMessageService>();
                if (managementConsoleMessageService != null)
                {
                    FlowControllerFacade.RegisterNewFlowInformation(flowToken, entityToken, actionToken, managementConsoleMessageService.CurrentConsoleId);
                }
                else
                {
                    LoggingService.LogWarning("ActionExecutorFacade", "Missing ManagementConsoleMessageService, can not register the flow");
                }

                return(flowToken);
            }
            else
            {
                return(ExecuteEntityTokenLocked(actionToken, entityToken, flowControllerServicesContainer));
            }
        }
Ejemplo n.º 13
0
        private ITemplateDeleter GetPageTemplateDeleter(EntityToken entityToken)
        {
            if (entityToken is DataEntityToken)
            {
                return(new XmlPageTemplateDeleter(entityToken as DataEntityToken));
            }

            if (entityToken is PageTemplateEntityToken)
            {
                Guid pageTemplateId = (entityToken as PageTemplateEntityToken).TemplateId;

                var pageTemplateDescriptor = PageTemplateFacade.GetPageTemplate(pageTemplateId);

                if (pageTemplateDescriptor is RazorPageTemplateDescriptor)
                {
                    return(new RazorPageTemplateDeleter(pageTemplateDescriptor as RazorPageTemplateDescriptor));
                }

                if (pageTemplateDescriptor is MasterPagePageTemplateDescriptor)
                {
                    return(new MasterPagePageTemplateDeleter(pageTemplateDescriptor as MasterPagePageTemplateDescriptor));
                }

                throw new NotSupportedException("Not supported page template descriptor type '{0}'"
                                                .FormatWith(pageTemplateDescriptor.GetType().FullName));
            }

            throw new NotSupportedException("Not supported entity token type '{0}'".FormatWith(entityToken.GetType().FullName));
        }
 public override void Log(string title, string indention = "")
 {
     Composite.Core.Log.LogVerbose(title, "{0}Custom: Position = {1}, EntityTokenType = {2}, EntityToken = {3}",
                                   indention, this.Position, _parentEntityToken.GetType(), _parentEntityToken);
 }
    private void PrettyPrintEntityToken(EntityToken entityToken, string color)
    {
        List <object> idList = new List <object>();

        if (entityToken.Id.Contains("=") == true)
        {
            Dictionary <string, string> dic = StringConversionServices.ParseKeyValueCollection(entityToken.Id);

            idList.Add(new XElement("br"));

            foreach (KeyValuePair <string, string> kvp in dic)
            {
                idList.Add(new XElement("span", new XAttribute("style", "padding-left: 15px;"),
                                        string.Format("{0} = {1}", kvp.Key, kvp.Value)));
                idList.Add(new XElement("br"));
            }
        }
        else
        {
            idList.Add(entityToken.Id);
        }



        List <object> usersermisstionsDefinedHere  = new List <object>();
        List <object> currentUsersPermisstionTypes = new List <object>();

        string serializedEntityToken = EntityTokenSerializer.Serialize(entityToken);

        IEnumerable <string> usernames = UserValidationFacade.AllUsernames;

        foreach (string username in usernames)
        {
            IEnumerable <PermissionType> userPermissionTypes = PermissionTypeFacade.GetLocallyDefinedUserPermissionTypes(new UserToken(username), entityToken);

            StringBuilder sb = new StringBuilder();
            foreach (PermissionType permissionType in userPermissionTypes)
            {
                if (sb.ToString() != "")
                {
                    sb.Append(", ");
                }

                sb.Append(new PermissionDescriptor(permissionType).Label);
            }

            usersermisstionsDefinedHere.Add(new XElement("span", new XAttribute("style", "padding-left: 15px;"), string.Format("{0} = {1}", username, sb.ToString())));
            usersermisstionsDefinedHere.Add(new XElement("br"));



            IEnumerable <PermissionType> currentPermissionTypes = PermissionTypeFacade.GetCurrentPermissionTypes(new UserToken(username), entityToken, PermissionTypeFacade.GetUserPermissionDefinitions(username), PermissionTypeFacade.GetUserGroupPermissionDefinitions(username));


            StringBuilder currentSb = new StringBuilder();
            foreach (PermissionType permissionType in currentPermissionTypes)
            {
                if (currentSb.ToString() != "")
                {
                    currentSb.Append(", ");
                }

                currentSb.Append(new PermissionDescriptor(permissionType).Label);
            }

            currentUsersPermisstionTypes.Add(new XElement("span", new XAttribute("style", "padding-left: 15px;"), string.Format("{0} = {1}", username, currentSb.ToString())));
            currentUsersPermisstionTypes.Add(new XElement("br"));
        }


        List <object> userGroupPermissionsDefinedHere = new List <object>();
        List <object> inheritedGroupPermissions       = new List <object>();

        List <IUserGroup> userGroups = DataFacade.GetData <IUserGroup>().ToList();

        foreach (IUserGroup userGroup in userGroups)
        {
            IEnumerable <PermissionType> userGroupPermissionTypes = PermissionTypeFacade.GetLocallyDefinedUserGroupPermissionTypes(userGroup.Id, entityToken);

            StringBuilder sb = new StringBuilder();
            foreach (PermissionType permissionType in userGroupPermissionTypes)
            {
                if (sb.ToString() != "")
                {
                    sb.Append(", ");
                }

                sb.Append(new PermissionDescriptor(permissionType).Label);
            }

            userGroupPermissionsDefinedHere.Add(new XElement("span", new XAttribute("style", "padding-left: 15px;"), string.Format("{0} = {1}", userGroup.Name, sb.ToString())));
            userGroupPermissionsDefinedHere.Add(new XElement("br"));


            IEnumerable <PermissionType> inheritedUserGroupPermissionTypes = PermissionTypeFacade.GetInheritedGroupPermissionsTypes(userGroup.Id, entityToken);
            sb = new StringBuilder();
            foreach (PermissionType permissionType in inheritedUserGroupPermissionTypes)
            {
                if (sb.ToString() != "")
                {
                    sb.Append(", ");
                }

                sb.Append(new PermissionDescriptor(permissionType).Label);
            }

            inheritedGroupPermissions.Add(new XElement("span", new XAttribute("style", "padding-left: 15px;"), string.Format("{0} = {1}", userGroup.Name, sb.ToString())));
            inheritedGroupPermissions.Add(new XElement("br"));
        }



        XElement element =
            new XElement("div", new XAttribute("style", string.Format("border:2px; border-style: solid; border-color: {0}; margin-bottom: 2px; margin-left:5px; margin-right:5px; padding: 3px;", color)),
                         new XElement("b", "Runtime type: "),
                         entityToken.GetType().ToString(),
                         new XElement("br"),
                         new XElement("b", "Hashcode: "),
                         entityToken.GetHashCode().ToString(),
                         new XElement("br"),
                         new XElement("b", "Source: "),
                         entityToken.Source,
                         new XElement("br"),
                         new XElement("b", "Type: "),
                         entityToken.Type,
                         new XElement("br"),
                         new XElement("b", "Id: "),
                         idList,
                         new XElement("br"),
                         new XElement("b", "Serialized entity token: "),
                         serializedEntityToken,
                         new XElement("br"),

                         new XElement("b", "Users permissions defined here: "),
                         new XElement("br"),
                         usersermisstionsDefinedHere,
                         new XElement("br"),

                         new XElement("b", "Current users permissions here: "),
                         new XElement("br"),
                         currentUsersPermisstionTypes,
                         new XElement("br"),

                         new XElement("b", "User group permissions defined here: "),
                         new XElement("br"),
                         userGroupPermissionsDefinedHere,
                         new XElement("br"),

                         new XElement("b", "Inherted user group permissions: "),
                         new XElement("br"),
                         inheritedGroupPermissions,
                         new XElement("br")
                         );

        RelationshipGraphHolder.Controls.Add(new LiteralControl(element.ToString()));
    }