Exemple #1
0
        /// <exclude />
        public static ClientElement GetRoot()
        {
            List <Element> roots = ElementFacade.GetRoots(null).ToList();

            if (roots.Count == 0)
            {
                // user with out any access logging in - return "empty root"
                roots = ElementFacade.GetRootsWithNoSecurity().ToList();
                if (roots.Count == 0)
                {
                    throw new InvalidOperationException("No roots specified");
                }
                if (roots.Count > 1)
                {
                    throw new InvalidOperationException("More than one root specified");
                }

                var emptyElement = new Element(new ElementHandle("nullRoot", new NullRootEntityToken()));
                emptyElement.VisualData = new ElementVisualizedData {
                    HasChildren = false, Label = "nullroot", Icon = CommonElementIcons.Folder
                };

                roots.Clear();
                roots.Add(emptyElement);
            }
            else if (roots.Count > 1)
            {
                throw new InvalidOperationException("More than one root specified");
            }

            return(roots[0].GetClientElement());
        }
        private void CreateHooks(string parentId, IEnumerable <VirtualElementConfigurationElement> elements, List <EntityTokenHook> foundHooks)
        {
            var entityToken     = new VirtualElementProviderEntityToken(_context.ProviderName, parentId);
            var entityTokenHook = new EntityTokenHook(entityToken);

            foreach (var attachProviderElement in elements.OfType <AttachProviderVirtualElement>())
            {
                lock (_notLoadedVirtualElements)
                {
                    if (_notLoadedVirtualElements.Contains(attachProviderElement.Name))
                    {
                        continue;
                    }
                }


                string providerName  = attachProviderElement.ProviderName;
                var    childElements = ElementFacade.GetRootsWithNoSecurity(new ElementProviderHandle(providerName), null).ToList();

                foreach (Element childElement in childElements)
                {
                    entityTokenHook.AddHookie(childElement.ElementHandle.EntityToken);
                }
            }

            foundHooks.Add(entityTokenHook);

            foreach (var simpleElement in elements.OfType <SimpleVirtualElement>())
            {
                CreateHooks(simpleElement.Name, simpleElement.Elements, foundHooks);
            }
        }
Exemple #3
0
        /// <exclude />
        public ActivePerspectiveFormsHelper(string fieldLabel, string multiSelectLabel, string multiSelectHelp)
        {
            this.FieldLabel       = fieldLabel;
            this.MultiSelectLabel = multiSelectLabel;
            this.MultiSelectHelp  = multiSelectHelp;

            _perspectiveElements = ElementFacade.GetPerspectiveElementsWithNoSecurity().ToList();
        }
Exemple #4
0
        public static bool ExecuteElementDraggedAndDropped(ElementHandle draggedElementHandle, ElementHandle newParentdElementHandle, int dropIndex, string consoleId, bool isCopy)
        {
            var flowServicesContainer = new FlowControllerServicesContainer(
                new ManagementConsoleMessageService(consoleId),
                new ElementDataExchangeService(draggedElementHandle.ProviderName),
                new ActionExecutionService(draggedElementHandle.ProviderName, consoleId)
                );

            return(ElementFacade.ExecuteElementDraggedAndDropped(draggedElementHandle, newParentdElementHandle, dropIndex, isCopy, flowServicesContainer));
        }
        /// <summary>
        /// This method returns true if the given username <paramref name="username"/> has admin rights on the root element.
        /// This is normal way of creating a administrator in C1.
        /// </summary>
        /// <param name="username">Username to test</param>
        /// <returns>True if the given username has admin rights on the root element.</returns>
        public static bool IsAdministrator(string username)
        {
            UserToken userToken = new UserToken(username);

            EntityToken rootEntityToken = ElementFacade.GetRootsWithNoSecurity().First().ElementHandle.EntityToken;

            IEnumerable <PermissionType> permissions = GetPermissions(userToken, rootEntityToken);

            return(permissions.Contains(PermissionType.Administrate));
        }
Exemple #6
0
        /// <exclude />
        public static List <RefreshChildrenInfo> GetMultipleChildren(List <RefreshChildrenParams> nodesToBeRefreshed)
        {
            int t1 = Environment.TickCount;

            var result = new List <RefreshChildrenInfo>();

            foreach (RefreshChildrenParams node in nodesToBeRefreshed)
            {
                EntityToken entityToken;

                try
                {
                    entityToken = EntityTokenSerializer.Deserialize(node.EntityToken);
                }
                catch (EntityTokenSerializerException)
                {
                    continue;
                }

                var         elementHandle = new ElementHandle(node.ProviderName, entityToken, node.Piggybag);
                SearchToken searchToken   = null;
                if (!string.IsNullOrEmpty(node.SearchToken))
                {
                    searchToken = SearchToken.Deserialize(node.SearchToken);
                }

                List <Element> childElements;
                if (UserSettings.ForeignLocaleCultureInfo == null || UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo))
                {
                    childElements = ElementFacade.GetChildren(elementHandle, searchToken).ToList();
                }
                else
                {
                    childElements = ElementFacade.GetForeignChildren(elementHandle, searchToken).ToList();
                }

                result.Add(new RefreshChildrenInfo
                {
                    ElementKey     = GetElementKey(node.ProviderName, node.EntityToken, node.Piggybag),
                    ClientElements = childElements.ToClientElementList()
                });
            }

            int t2 = Environment.TickCount;

            //LoggingService.LogVerbose("TreeServiceFacade", string.Format("GetMultipleChildren: {0} ms", t2 - t1));

            return(result);
        }
Exemple #7
0
        private void UpdateFormDefinitionWithGlobalPermissions(IUserGroup userGroup, XElement bindingsElement, XElement placeHolderElement)
        {
            var helper = new GlobalPermissionsFormsHelper(
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.GlobalPermissionsFieldLabel"),
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.GlobalPermissionsMultiSelectLabel"),
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.GlobalPermissionsMultiSelectHelp")
                );

            bindingsElement.Add(helper.GetBindingsMarkup());
            placeHolderElement.Add(helper.GetFormMarkup());

            EntityToken rootEntityToken = ElementFacade.GetRootsWithNoSecurity().Select(f => f.ElementHandle.EntityToken).Single();
            IEnumerable <PermissionType> permissionTypes = PermissionTypeFacade.GetLocallyDefinedUserGroupPermissionTypes(userGroup.Id, rootEntityToken).ToList();

            helper.UpdateWithNewBindings(this.Bindings, permissionTypes);
        }
Exemple #8
0
        /// <exclude />
        public static List <ClientLabeledProperty> GetLabeledProperties(string providerName, string serializedEntityToken, string piggybag)
        {
            var elementEntityToken = EntityTokenSerializer.Deserialize(serializedEntityToken);
            var elementHandle      = new ElementHandle(providerName, elementEntityToken, piggybag);

            bool showForeign = UserSettings.ForeignLocaleCultureInfo != null &&
                               UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo);

            var labeledProperties = showForeign
                ? ElementFacade.GetForeignLabeledProperties(elementHandle)
                : ElementFacade.GetLabeledProperties(elementHandle);

            return
                ((from property in labeledProperties
                  select new ClientLabeledProperty(property)).ToList());
        }
Exemple #9
0
        /// <exclude />
        public static List <string> GetLocaleAwarePerspectiveElements()
        {
            IEnumerable <Element> elements = ElementFacade.GetPerspectiveElements(true);

            List <string> clientElementKeys = new List <string>();

            foreach (Element element in elements)
            {
                if (element.IsLocaleAware)
                {
                    clientElementKeys.Add(element.GetClientElement().ElementKey);
                }
            }

            return(clientElementKeys);
        }
        public void Initialize()
        {
            using (_resourceLocker.Locker)
            {
                var resources = _resourceLocker.Resources;

                if (!GlobalInitializerFacade.IsReinitializingTheSystem)
                {
                    DataEvents <IDataItemTreeAttachmentPoint> .OnAfterAdd     += OnUpdateTreeAttachmentPoints;
                    DataEvents <IDataItemTreeAttachmentPoint> .OnDeleted      += OnUpdateTreeAttachmentPoints;
                    DataEvents <IDataItemTreeAttachmentPoint> .OnStoreChanged += OnTreeAttachmentPointsStoreChange;

                    GeneratedTypesFacade.SubscribeToUpdateTypeEvent(OnDataTypeChanged);

                    var treeAuxiliaryAncestorProvider = new TreeAuxiliaryAncestorProvider();
                    var entityTokenTypes = new[]
                    {
                        typeof(TreeSimpleElementEntityToken),
                        typeof(TreeFunctionElementGeneratorEntityToken),
                        typeof(TreeDataFieldGroupingElementEntityToken),
                        typeof(DataEntityToken),
                        typeof(TreePerspectiveEntityToken)
                    };

                    entityTokenTypes.ForEach(type => AuxiliarySecurityAncestorFacade
                                             .AddAuxiliaryAncestorProvider(type, treeAuxiliaryAncestorProvider, true));

                    resources.PersistentAttachmentPoints = new Dictionary <string, List <IAttachmentPoint> >();

                    LoadAllTrees();
                    InitializeTreeAttachmentPoints();
                    TreeSharedRootsFacade.Clear();

                    var fileWatcher = new C1FileSystemWatcher(TreeDefinitionsFolder, "*.xml");
                    fileWatcher.Created            += OnReloadTrees;
                    fileWatcher.Deleted            += OnReloadTrees;
                    fileWatcher.Changed            += OnReloadTrees;
                    fileWatcher.Renamed            += OnReloadTrees;
                    fileWatcher.EnableRaisingEvents = true;

                    resources.FileSystemWatcher = fileWatcher;

                    resources.RootEntityToken = ElementFacade.GetRootsWithNoSecurity().First().ElementHandle.EntityToken;
                }
            }
        }
        private string GetCurrentPath()
        {
            if (this.EntityToken is WebsiteFileElementProviderRootEntityToken)
            {
                string rootPath = (string)ElementFacade.GetData(new ElementProviderHandle(this.EntityToken.Source), "RootPath");

                return(rootPath);
            }
            else if (this.EntityToken is WebsiteFileElementProviderEntityToken)
            {
                return((this.EntityToken as WebsiteFileElementProviderEntityToken).Path);
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Exemple #12
0
        /// <exclude />
        public static List <ClientElement> GetChildren(string providerName, string serializedEntityToken, string piggybag, string serializedSearchToken)
        {
            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", "----- Start -----------------------------------------------");

            int t1 = Environment.TickCount;

            EntityToken   entityToken   = EntityTokenSerializer.Deserialize(serializedEntityToken);
            ElementHandle elementHandle = new ElementHandle(providerName, entityToken, piggybag);

            //int t2 = Environment.TickCount;

            SearchToken searchToken = null;

            if (!string.IsNullOrEmpty(serializedSearchToken))
            {
                searchToken = SearchToken.Deserialize(serializedSearchToken);
            }

            List <Element> childElements;

            if (UserSettings.ForeignLocaleCultureInfo == null || UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo))
            {
                childElements = ElementFacade.GetChildren(elementHandle, searchToken).ToList();
            }
            else
            {
                childElements = ElementFacade.GetForeignChildren(elementHandle, searchToken).ToList();
            }

            //int t3 = Environment.TickCount;

            List <ClientElement> resultList = childElements.ToClientElementList();

            int t4 = Environment.TickCount;

            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", string.Format("ElementHandle: {0} ms", t2 - t1));
            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", string.Format("GetChildren: {0} ms", t3 - t2));
            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", string.Format("ToClientElementList: {0} ms", t4 - t3));
            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", string.Format("Total: {0} ms", t4 - t1));
            //LoggingService.LogVerbose("RGB(255, 0, 255)TreeServiceFacade", "----- End -------------------------------------------------");

            //LoggingService.LogVerbose("TreeServiceFacade", string.Format("GetChildren: {0} ms", t4 - t1));

            return(resultList);
        }
        public IEnumerable <EntityToken> GetParents(EntityToken entityToken)
        {
            if ((entityToken is SqlFunctionProviderRootEntityToken))
            {
                return(new EntityToken[] { });
            }
            else if ((entityToken is SqlFunctionProviderFolderEntityToken))
            {
                SqlFunctionProviderFolderEntityToken token = entityToken as SqlFunctionProviderFolderEntityToken;

                NamespaceTreeBuilder builder = (NamespaceTreeBuilder)ElementFacade.GetData(new ElementProviderHandle(token.Source), token.ConnectionId);

                NamespaceTreeBuilderFolder folder = builder.FindFolder(f => StringExtensionMethods.CreateNamespace(f.Namespace, f.Name, '.') == token.Id);

                if (folder == null)
                {
                    return(null);
                }
                else
                {
                    int idx = token.Id.LastIndexOf('.');
                    if (idx != -1)
                    {
                        return(new EntityToken[] { new SqlFunctionProviderFolderEntityToken(token.Id.Remove(idx), token.Source, token.ConnectionId) });
                    }
                    else
                    {
                        Guid           id            = new Guid(token.ConnectionId);
                        ISqlConnection sqlConnection = DataFacade.GetData <ISqlConnection>(f => f.Id == id).SingleOrDefault();

                        if (sqlConnection == null)
                        {
                            return(new EntityToken[] { });
                        }

                        return(new EntityToken[] { sqlConnection.GetDataEntityToken() });
                    }
                }
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Exemple #14
0
        private void saveCodeActivity_Save_ExecuteCode(object sender, EventArgs e)
        {
            IUserGroup    userGroup = this.GetBinding <IUserGroup>("UserGroup");
            List <string> newUserGroupEntityTokens = ActivePerspectiveFormsHelper.GetSelectedSerializedEntityTokens(this.Bindings).ToList();

            // If current user belongs to currently edited group -> checking that user won't lost access "Users" perspective
            if (!ValidateUserPreservesAdminRights(userGroup, newUserGroupEntityTokens))
            {
                return;
            }

            UpdateTreeRefresher updateTreeRefresher = CreateUpdateTreeRefresher(this.EntityToken);

            EntityToken rootEntityToken = ElementFacade.GetRootsWithNoSecurity().Select(f => f.ElementHandle.EntityToken).Single();
            IEnumerable <PermissionType> newPermissionTypes = GlobalPermissionsFormsHelper.GetSelectedPermissionTypes(this.Bindings);

            UserGroupPermissionDefinition userGroupPermissionDefinition =
                new ConstructorBasedUserGroupPermissionDefinition(
                    userGroup.Id,
                    newPermissionTypes,
                    EntityTokenSerializer.Serialize(rootEntityToken)
                    );

            PermissionTypeFacade.SetUserGroupPermissionDefinition(userGroupPermissionDefinition);

            UserGroupPerspectiveFacade.SetSerializedEntityTokens(userGroup.Id, newUserGroupEntityTokens);

            SetSaveStatus(true);

            LoggingService.LogEntry("UserManagement",
                                    $"C1 Console user group '{userGroup.Name}' updated by '{UserValidationFacade.GetUsername()}'.",
                                    LoggingService.Category.Audit,
                                    TraceEventType.Information);

            if (userGroup.Name != this.GetBinding <string>("OldName"))
            {
                DataFacade.Update(userGroup);

                this.UpdateBinding("OldName", userGroup.Name);

                updateTreeRefresher.PostRefreshMesseges(userGroup.GetDataEntityToken());
            }
        }
Exemple #15
0
        private static IEnumerable <PermissionType> FilterParentPermissions(
            UserToken userToken, EntityToken entityToken, IReadOnlyCollection <PermissionType> permissions)
        {
            if (!permissions.Any() ||
                !ElementFacade.IsPerspectiveEntityToken(entityToken))
            {
                return(permissions);
            }

            bool perspectiveVisible = UserPerspectiveFacade.PerspectiveVisible(userToken.Username, entityToken);

            if (perspectiveVisible)
            {
                return(permissions);
            }

            return(GlobalSettingsFacade.InheritGlobalReadPermissionOnHiddenPerspectives
                ? permissions.Where(p => p == PermissionType.Read)
                : Enumerable.Empty <PermissionType>());
        }
Exemple #16
0
        private void UpdateFormDefinitionWithActiveLocalePermissions(IUserGroup userGroup, XElement bindingsElement, XElement placeHolderElement)
        {
            var helper = new ActiveLocalesFormsHelper(
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.ActiveLocalesFieldLabel"),
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.ActiveLocalesMultiSelectLabel"),
                SR.GetString("Composite.Plugins.UserGroupElementProvider", "EditUserGroup.EditUserGroupStep1.ActiveLocalesMultiSelectHelp")
                );

            bindingsElement.Add(helper.GetBindingsMarkup());
            placeHolderElement.Add(helper.GetFormMarkup());

            EntityToken rootEntityToken = ElementFacade.GetRootsWithNoSecurity().Select(f => f.ElementHandle.EntityToken).Single();

            using (var connection = new DataConnection())
            {
                IEnumerable <CultureInfo> activeCultures = null;
                activeCultures = connection.Get <IUserGroupActiveLocale>().Where(f => f.UserGroupId == userGroup.Id).Select(f => new CultureInfo(f.CultureName));
                helper.UpdateWithNewBindings(this.Bindings, activeCultures);
            }
        }
Exemple #17
0
        /// <exclude />
        public static List <ClientLabeledProperty> GetLabeledProperties(string providerName, string serializedEntityToken, string piggybag)
        {
            EntityToken   elementEntityToken = EntityTokenSerializer.Deserialize(serializedEntityToken);
            ElementHandle elementHandle      = new ElementHandle(providerName, elementEntityToken, piggybag);

            IEnumerable <LabeledProperty> labeledProperties;

            if (UserSettings.ForeignLocaleCultureInfo == null || UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo))
            {
                labeledProperties = ElementFacade.GetLabeledProperties(elementHandle);
            }
            else
            {
                labeledProperties = ElementFacade.GetForeignLabeledProperties(elementHandle);
            }


            return
                ((from property in labeledProperties
                  select new ClientLabeledProperty(property)).ToList());
        }
Exemple #18
0
        /// <exclude />
        public static List <ClientElement> GetRoots(string providerHandle, string serializedSearchToken)
        {
            SearchToken searchToken = null;

            if (!string.IsNullOrEmpty(serializedSearchToken))
            {
                searchToken = SearchToken.Deserialize(serializedSearchToken);
            }

            List <Element> roots;

            if (UserSettings.ForeignLocaleCultureInfo == null || UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo))
            {
                roots = ElementFacade.GetRoots(new ElementProviderHandle(providerHandle), searchToken).ToList();
            }
            else
            {
                roots = ElementFacade.GetForeignRoots(new ElementProviderHandle(providerHandle), searchToken).ToList();
            }

            return(roots.ToClientElementList());
        }
        private Element CreateElement(SimpleVirtualElement simpleElementNode)
        {
            EntityToken entityToken = new VirtualElementProviderEntityToken(_context.ProviderName, simpleElementNode.Name);

            Element element = new Element(_context.CreateElementHandle(entityToken))
            {
                TagValue   = simpleElementNode.Tag,
                VisualData = new ElementVisualizedData
                {
                    Label       = StringResourceSystemFacade.ParseString(simpleElementNode.Label),
                    HasChildren = true // fixing refresh problem easy way... was: HasChildren(baseElementNode)
                }
            };



            Action <IEnumerable> collectProviders = null;

            // Recursively searching for attached providers
            var attachedProviders = new List <AttachProviderVirtualElement>();

            collectProviders = currentElements =>
            {
                attachedProviders.AddRange(currentElements.OfType <AttachProviderVirtualElement>());
                currentElements.OfType <SimpleVirtualElement>().ForEach(e => collectProviders(e.Elements));
            };
            collectProviders(simpleElementNode.Elements);


            foreach (var attachedProvider in attachedProviders)
            {
                if (ElementFacade.ContainsLocalizedData(new ElementProviderHandle(attachedProvider.ProviderName)))
                {
                    element.IsLocaleAware = true;
                }
            }


            if (element.VisualData.HasChildren)
            {
                ResourceHandle openHandle  = IconResourceSystemFacade.GetResourceHandle(simpleElementNode.OpenFolderIconName);
                ResourceHandle closeHandle = IconResourceSystemFacade.GetResourceHandle(simpleElementNode.CloseFolderIconName);

                closeHandle = closeHandle ?? openHandle;
                openHandle  = openHandle ?? closeHandle;

                if (openHandle == null)
                {
                    openHandle  = CommonElementIcons.Folder;
                    closeHandle = CommonElementIcons.FolderOpen;
                }

                element.VisualData.Icon       = openHandle;
                element.VisualData.OpenedIcon = closeHandle;
            }
            else
            {
                element.VisualData.Icon = CommonElementIcons.FolderDisabled;
            }


            return(element);
        }
Exemple #20
0
        /// <summary>
        /// Used for "first time" login on systems configured for this. A way to create the first user. This only works on systems
        /// with no users and with a valid "auto create admin username" specified by the global settings.
        /// </summary>
        /// <param name="userName">The user name - must match GlobalSettingsProvider.AutoCreatedAdministratorUserName</param>
        /// <param name="password">A password that meets a minimum requirement.</param>
        /// <param name="email">THe users email.</param>
        /// <param name="validateAutoCreateUserName">When true only the username specified in Composite.config as auto createable (usually 'admin') is allowed. Set to false to use a different user name.</param>
        /// <returns>true if the user was auto created. Otherwise false.</returns>
        public static void AutoCreateAdministrator(string userName, string password, string email, bool validateAutoCreateUserName = true)
        {
            if (validateAutoCreateUserName && !CanBeAutoCreated(userName))
            {
                throw new InvalidOperationException("Unable to auto create account. Either the user name is not eligble for auto creation or other users exists in the system. This feature only works for a specific user name and when no users exists.");
            }

            if (!LoginProviderPluginFacade.CanAddNewUser)
            {
                throw new InvalidOperationException("Unable to auto create account. The current login provider does not support adding users");
            }

            if (!PermissionTypeFacade.CanAlterDefinitions)
            {
                throw new InvalidOperationException("Unable to auto create account. The current permission defintion provider does not support changes");
            }

            //PasswordValidator validator = new PasswordValidator();
            //ValidationResults validationResults = validator.Validate(password);
            //if (validationResults.IsValid == false)
            //{
            //    throw new InvalidOperationException("Unable to auto create account. The specified password is not strong enough.");
            //}


            // All seems bo be ok green light go for auto creating the user.
            string group = StringResourceSystemFacade.GetString("Composite.C1Console.Users", "AdministratorAutoCreator.DefaultGroupName");

            LoginProviderPluginFacade.FormAddNewUser(userName, password, group, email);
            Log.LogVerbose("AdministratorAutoCreator", String.Format("Auto Created Administrator with user name '{0}'.", userName), LoggingService.Category.Audit);

            IUser      user      = DataFacade.GetData <IUser>().Where(f => f.Username == userName).SingleOrDefault();
            IUserGroup userGroup = DataFacade.GetData <IUserGroup>().Where(f => f.Name == "Administrator").SingleOrDefault();

            if (user != null && userGroup != null)
            {
                IUserUserGroupRelation userUserGroupRelation = DataFacade.BuildNew <IUserUserGroupRelation>();
                userUserGroupRelation.UserId      = user.Id;
                userUserGroupRelation.UserGroupId = userGroup.Id;
                DataFacade.AddNew <IUserUserGroupRelation>(userUserGroupRelation);
            }
            else
            {
                foreach (Element appRootElement in ElementFacade.GetRootsWithNoSecurity())
                {
                    string serializedEntityToken = EntityTokenSerializer.Serialize(appRootElement.ElementHandle.EntityToken);
                    LoggingService.LogVerbose("AdministratorAutoCreator", String.Format("Adding '{0}' on element '{1}' ('{2}').", userName, appRootElement.VisualData.Label ?? "(no label)", serializedEntityToken), LoggingService.Category.Audit);

                    UserPermissionDefinition userPermissionDefinition = new ConstructorBasedUserPermissionDefinition(userName, PermissionTypeFacade.GrantingPermissionTypes, serializedEntityToken);
                    PermissionTypeFacade.SetUserPermissionDefinition(userPermissionDefinition);
                }

                Log.LogVerbose("AdministratorAutoCreator", string.Format("Activating all known perspectives for user '{0}'", userName));
                IEnumerable <EntityToken> perspectiveEntityTokens = ElementFacade.GetPerspectiveElementsWithNoSecurity().Select(f => f.ElementHandle.EntityToken);
                UserPerspectiveFacade.SetEntityTokens(userName, perspectiveEntityTokens);
            }

            foreach (CultureInfo cultureInfo in DataLocalizationFacade.ActiveLocalizationCultures)
            {
                UserSettings.AddActiveLocaleCultureInfo(userName, cultureInfo);

                if (Core.Localization.LocalizationFacade.IsDefaultLocale(cultureInfo))
                {
                    UserSettings.SetCurrentActiveLocaleCultureInfo(userName, cultureInfo);
                    UserSettings.SetForeignLocaleCultureInfo(userName, cultureInfo);
                }
            }
        }
Exemple #21
0
        private void saveCodeActivity_Save_ExecuteCode(object sender, EventArgs e)
        {
            IUserGroup    userGroup = this.GetBinding <IUserGroup>("UserGroup");
            List <string> newUserGroupEntityTokens = ActivePerspectiveFormsHelper.GetSelectedSerializedEntityTokens(this.Bindings).ToList();

            // If current user belongs to currently edited group -> checking that user won't lost access "Users" perspective
            if (!ValidateUserPreservesAdminRights(userGroup, newUserGroupEntityTokens))
            {
                return;
            }

            UpdateTreeRefresher updateTreeRefresher = CreateUpdateTreeRefresher(this.EntityToken);

            EntityToken rootEntityToken = ElementFacade.GetRootsWithNoSecurity().Select(f => f.ElementHandle.EntityToken).Single();
            IEnumerable <PermissionType> newPermissionTypes = GlobalPermissionsFormsHelper.GetSelectedPermissionTypes(this.Bindings);

            UserGroupPermissionDefinition userGroupPermissionDefinition =
                new ConstructorBasedUserGroupPermissionDefinition(
                    userGroup.Id,
                    newPermissionTypes,
                    EntityTokenSerializer.Serialize(rootEntityToken)
                    );

            PermissionTypeFacade.SetUserGroupPermissionDefinition(userGroupPermissionDefinition);

            UserGroupPerspectiveFacade.SetSerializedEntityTokens(userGroup.Id, newUserGroupEntityTokens);

            List <CultureInfo> selectedUserGroupActiveLocales = ActiveLocalesFormsHelper.GetSelectedLocalesTypes(this.Bindings).ToList();

            using (var connection = new DataConnection())
            {
                var existingLocales = connection.Get <IUserGroupActiveLocale>().Where(f => f.UserGroupId == userGroup.Id).ToList();
                var toDelete        = existingLocales.Where(f => !selectedUserGroupActiveLocales.Contains(new CultureInfo(f.CultureName)));
                connection.Delete <IUserGroupActiveLocale>(toDelete);

                foreach (var localeToAdd in selectedUserGroupActiveLocales.Where(f => !existingLocales.Any(g => g.CultureName == f.Name)))
                {
                    var toAdd = connection.CreateNew <IUserGroupActiveLocale>();
                    toAdd.Id          = Guid.NewGuid();
                    toAdd.UserGroupId = userGroup.Id;
                    toAdd.CultureName = localeToAdd.Name;
                    connection.Add(toAdd);
                }
            }

            SetSaveStatus(true);

            LoggingService.LogEntry("UserManagement",
                                    $"C1 Console user group '{userGroup.Name}' updated by '{UserValidationFacade.GetUsername()}'.",
                                    LoggingService.Category.Audit,
                                    TraceEventType.Information);

            if (userGroup.Name != this.GetBinding <string>("OldName"))
            {
                DataFacade.Update(userGroup);

                this.UpdateBinding("OldName", userGroup.Name);

                updateTreeRefresher.PostRefreshMesseges(userGroup.GetDataEntityToken());
            }
        }
Exemple #22
0
 /// <exclude />
 public static List <ClientElement> GetPerspectiveElementsWithNoSecurity()
 {
     return(ElementFacade.GetPerspectiveElementsWithNoSecurity().ToList().ToClientElementList());
 }
        private IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken seachToken, bool useForeign)
        {
            IEnumerable <VirtualElementConfigurationElement> elementNodes;

            if (entityToken.Id == RootElementId)
            {
                elementNodes = _configuration.Perspectives;
            }
            else
            {
                SimpleVirtualElement node = FindElementNode(entityToken.Id, _configuration.Perspectives);

                Verify.IsNotNull(node, "No corresponding node was found with the id '{0}'", entityToken.Id);

                elementNodes = node.Elements;
            }

            var result = new List <Element>();

            foreach (var elementNode in elementNodes)
            {
                if (elementNode is SimpleVirtualElement)
                {
                    Element createdElement;
                    if (TryBuildElement(elementNode as SimpleVirtualElement, out createdElement))
                    {
                        result.Add(createdElement);
                    }
                    continue;
                }

                if (elementNode is AttachProviderVirtualElement)
                {
                    string providerName = (elementNode as AttachProviderVirtualElement).ProviderName;

                    var providerHandle = new ElementProviderHandle(providerName);

                    List <Element> elementsFromProvider;
                    if (useForeign && ElementFacade.IsLocaleAwareElementProvider(providerHandle))
                    {
                        elementsFromProvider = ElementFacade.GetForeignRoots(providerHandle, seachToken).ToList();
                    }
                    else
                    {
                        elementsFromProvider = ElementFacade.GetRoots(providerHandle, seachToken).ToList();
                    }

                    foreach (Element element in elementsFromProvider)
                    {
                        element.ElementExternalActionAdding = element.ElementExternalActionAdding.Remove(ElementExternalActionAdding.AllowGlobal);
                    }

                    result.AddRange(elementsFromProvider);
                    continue;
                }

                throw new NotSupportedException();
            }

            return(result);
        }
        /// <exclude />
        protected void RefreshRootEntityToken()
        {
            SpecificTreeRefresher specificTreeRefresher = this.CreateSpecificTreeRefresher();

            specificTreeRefresher.PostRefreshMesseges(ElementFacade.GetRootsWithNoSecurity().First().ElementHandle.EntityToken);
        }
Exemple #25
0
        public IEnumerable <EntityToken> GetParents(EntityToken entityToken)
        {
            VirtualElementProviderEntityToken virtualEntityToken = (VirtualElementProviderEntityToken)entityToken;

            List <EntityToken> parentEntityTokens = new List <EntityToken>();

            VirtualElementProviderEntityToken parentToken = (VirtualElementProviderEntityToken)ElementFacade.GetData(new ElementProviderHandle(virtualEntityToken.Source), virtualEntityToken.Id);

            if (parentToken != null)
            {
                parentEntityTokens.Add(parentToken);
            }

            return(parentEntityTokens);
        }