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); }
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)); }
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)); } }
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())); }