private void setItemPermissions(SPDGWeb web, string listName)
        {
            var list = web.GetList(listName);

            foreach (var item in list.Items)
            {
                if (SampleData.GetRandomNumber(1, 100) < WorkingDefinition.PermissionsPercentOfListItems)
                {
                    Owner.IncrementCurrentTaskProgress("Adding permissions for item/document '" + item.DisplayName + "' in list '" + list.Title, 0);
                    if (!item.HasUniqueRoleAssignments)
                    {
                        item.BreakRoleInheritance(false);
                    }

                    for (int i = 0; i < _permissionsPerObject; i++)
                    {
                        setupNextRoleAssignment(web, item);
                    }

                    Owner.IncrementCurrentTaskProgress("Unique permissions added for item/document '" + item.DisplayName + "' in list '" + list.Title);
                }
                else
                {
                    Owner.IncrementCurrentTaskProgress("");
                }
            }
        }
        private void setupNextRoleAssignment(SPDGWeb web, SPDGSecurableObject securableObject)
        {
            SPDGPrincipal principal = null;
            var           rnd       = SampleData.GetRandomNumber(0, 100);

            if (rnd < WorkingDefinition.PermissionsPercentForUsers)
            {
                principal = _siteSpUsers[SampleData.GetRandomNumber(0, _siteSpUsers.Count - 1)];
            }
            else if (rnd < WorkingDefinition.PermissionsPercentForUsers + WorkingDefinition.PermissionsPercentForSPGroups)
            {
                principal = _siteSpGroups[SampleData.GetRandomNumber(0, _siteSpGroups.Count - 1)];
            }
            else
            {
                principal = _siteAdGroupSpUsers[SampleData.GetRandomNumber(0, _siteAdGroupSpUsers.Count - 1)];
            }

            var roleAssignment = securableObject.GetRoleAssignmentByPrincipal(principal);

            if (roleAssignment == null || roleAssignment.RoleDefinitionBindings.All(x => x.IsGuestRole))
            {
                var availableRoledefinitions = web.RoleDefinitions.Where(x => !x.IsGuestRole).ToList();

                var selected = availableRoledefinitions[SampleData.GetRandomNumber(0, availableRoledefinitions.Count - 1)];
                securableObject.AddRoleAssignment(principal, new List <SPDGRoleDefinition> {
                    selected
                });
            }
        }
Esempio n. 3
0
        internal void CreateSubsites(SPDGWeb parentWeb, int currentLevel, int maxLevels, int maxSitesToCreate, string parentBaseName)
        {
            Random rnd      = new Random();
            string baseName = "";

            int value = rnd.Next(7) + 1;

            int sitesToCreate = (int)(value / ((currentLevel + 1) / (float)maxLevels));

            Log.Write($"{parentWeb.Title} (int)({value}) / (({currentLevel + 1}) / (float){maxLevels})), sitesToCreate: {sitesToCreate}");

            for (int i = 0; i < sitesToCreate; i++)
            {
                if (SiteCounter < maxSitesToCreate)
                {
                    var childSubsite = CreateSubsite(parentWeb, parentBaseName, currentLevel, out baseName);
                    SiteCounter++;
                    if (childSubsite != null)
                    {
                        SiteInfo siteInfo = new SiteInfo();
                        siteInfo.URL = childSubsite.Url;
                        Guid siteID = childSubsite.ID;
                        siteInfo.ID = siteID;
                        Sites.Add(siteInfo);
                        if (currentLevel < maxLevels)
                        {
                            CreateSubsites(childSubsite, currentLevel + 1, maxLevels, maxSitesToCreate, baseName);
                        }
                    }
                }
            }
        }
Esempio n. 4
0
 public SPDGClientWeb(Web web, SPDGWeb parentWeb, ClientContext context, SPDGClientSite site)
 {
     _web       = web;
     _parentWeb = parentWeb;
     _context   = context;
     _site      = site;
 }
Esempio n. 5
0
        private SPDGWeb CreateSubsite(SPDGWeb parentWeb, string parentBaseName, int level, out string baseName)
        {
            string siteName, url;

            findAvailableSiteName(parentWeb, out siteName, out url, parentBaseName, level, out baseName);

            Owner.IncrementCurrentTaskProgress("Creating Site '" + parentWeb.Url + "/" + url + "'", 0);

            SPDGWeb childWeb = null;

            try
            {
                childWeb = parentWeb.AddWeb(url, siteName, null, parentWeb.Language, _templateName, false, false);
                AddToNavigationBar(childWeb);

                Owner.IncrementCurrentTaskProgress("Site created '" + childWeb.Url + "'");
            }
            catch (Exception ex)
            {
                Log.Write("Could not create site '" + url + "'");
                Owner.IncrementCurrentTaskProgress("");
                Errors.Log(ex);
            }

            return(childWeb);
        }
Esempio n. 6
0
        internal void CreateSubsites(ref List <SiteInfo> sites, SPDGWeb parentWeb, int currentLevel, int maxLevels, ref int siteCounter, int maxSitesToCreate, string parentBaseName)
        {
            Random rnd      = new Random();
            string baseName = "";

            int sitesToCreate = (int)((rnd.Next(3) + 1) / ((currentLevel + 1) / (float)maxLevels));

            for (int i = 0; i < sitesToCreate; i++)
            {
                if (siteCounter < maxSitesToCreate)
                {
                    var childSubsite = CreateSubsite(parentWeb, parentBaseName, currentLevel, out baseName);
                    siteCounter++;
                    if (childSubsite != null)
                    {
                        SiteInfo siteInfo = new SiteInfo();
                        siteInfo.URL = childSubsite.Url;
                        Guid siteID = childSubsite.ID;
                        siteInfo.ID = siteID;
                        sites.Add(siteInfo);
                        if (currentLevel < maxLevels)
                        {
                            CreateSubsites(ref sites, childSubsite, currentLevel + 1, maxLevels, ref siteCounter, maxSitesToCreate, baseName);
                        }
                    }
                }
            }
        }
Esempio n. 7
0
 private void InitWebTemplate(SPDGWeb web)
 {
     if (!string.IsNullOrEmpty(WorkingDefinition.SiteTemplate))
     {
         foreach (var template in web.GetWebTemplates(web.Language))
         {
             if (template.Title == WorkingDefinition.SiteTemplate)
             {
                 _templateName = template.Name;
                 break;
             }
         }
     }
 }
Esempio n. 8
0
        private void findAvailableSiteName(SPDGWeb web, out string siteName, out string siteUrl, string parentBaseName, int level, out string baseName)
        {
            baseName = "";
            IList <string> primaryCollection;
            IList <string> secondaryCollection;

            if (level % 3 == 0)
            {
                primaryCollection   = SampleData.Offices;
                secondaryCollection = SampleData.Dates;
            }
            else if (level % 3 == 1)
            {
                primaryCollection   = SampleData.Departments.GroupBy(s => s.Department).Select(grp => grp.First()).Select(d => d.Department).ToList();
                secondaryCollection = SampleData.Dates;
            }
            else
            {
                primaryCollection   = SampleData.Departments.Where(s => s.Department == parentBaseName).Select(s => s.Subdepartment).ToList();
                secondaryCollection = SampleData.Dates;
            }


            string candidate = SampleData.GetSampleValueRandom(primaryCollection);
            string leafName  = Utils.GenerateSlug(candidate, 7);

            baseName = candidate;

            int i = 0;

            while (candidate == parentBaseName || web.Webs.Any(s => s.Url.Equals(web.Url + "/" + leafName)))
            {
                candidate = SampleData.GetRandomName(primaryCollection, secondaryCollection, null, ref i, out baseName);
                if (i < 3)
                {
                    leafName = Utils.GenerateSlug(candidate, 7);
                }
                else if (i < 5)
                {
                    leafName = Utils.GenerateSlug(candidate, 15);
                }
                else
                {
                    leafName = Utils.GenerateSlug(candidate, 100);
                }
            }

            siteName = candidate;
            siteUrl  = leafName;
        }
        private void setFolderPermissions(SPDGWeb web, string folderURL)
        {
            Owner.IncrementCurrentTaskProgress("Adding permissions to folder: " + folderURL + " in site: " + web.Url, 0);
            SPDGFolder folder = web.GetFolder(folderURL);

            if (!folder.Item.HasUniqueRoleAssignments)
            {
                folder.Item.BreakRoleInheritance(false);
            }

            for (int i = 0; i < _permissionsPerObject; i++)
            {
                setupNextRoleAssignment(web, folder.Item);
            }

            Owner.IncrementCurrentTaskProgress("Unique permissions added to folder: " + folderURL + " in site: " + web.Url);
        }
        private void setListPermissions(SPDGWeb web, string listName)
        {
            Owner.IncrementCurrentTaskProgress("Adding permissions to list " + web.Url + "/" + listName, 0);
            var list = web.GetList(listName);

            if (!list.HasUniqueRoleAssignments)
            {
                list.BreakRoleInheritance(false);
            }

            for (int i = 0; i < _permissionsPerObject; i++)
            {
                setupNextRoleAssignment(web, list);
            }

            Owner.IncrementCurrentTaskProgress("Unique permissions added to list: " + listName + ", site: " + web.Url);
        }
 private void setSitePermissions(SPDGWeb web)
 {
     Owner.IncrementCurrentTaskProgress("Adding permissions to site " + web.Url + "'", 0);
     if (!web.HasUniqueRoleAssignments)
     {
         web.BreakRoleInheritance(false);
     }
     for (int i = 0; i < _permissionsPerObject; i++)
     {
         try
         {
             setupNextRoleAssignment(web, web);
         }
         catch (Exception ex)
         {
             Errors.Log(ex);
         }
     }
     Log.Write("Unique permissions added to site: " + web.Url);
 }
Esempio n. 12
0
        private string findAvailableListName(SPDGWeb web)
        {
            string candidate = SampleData.GetSampleValueRandom(SampleData.BusinessDocsTypes);

            if (_lastTemplateType == SPDGListTemplateType.Tasks)
            {
                candidate += " Tasks";
            }
            else if (_lastTemplateType == SPDGListTemplateType.Events)
            {
                candidate += " Calendar";
            }

            while (web.TryGetList(candidate) != null)
            {
                candidate = SampleData.GetSampleValueRandom(SampleData.BusinessDocsTypes);
            }

            return(candidate);
        }
Esempio n. 13
0
        private List <SiteInfo> getSubsites(SPDGWeb parentWeb, int maxDepth = 32)
        {
            List <SiteInfo> sites = new List <SiteInfo>();

            sites.Add(new SiteInfo()
            {
                URL = parentWeb.Url, ID = parentWeb.ID
            });

            if (parentWeb.Webs.Count() == 0 || maxDepth == 0)
            {
                return(sites);
            }

            foreach (var subsite in parentWeb.Webs)
            {
                sites.AddRange(getSubsites(subsite, maxDepth - 1));
            }

            return(sites);
        }
Esempio n. 14
0
 public SPDGClientList(SPDGWeb web, List list, ClientContext context)
 {
     _web     = web;
     _list    = list;
     _context = context;
 }
        private void EnsureUsersAndGroups(SPDGWeb web)
        {
            /// ENSURE AD USERS TO SHAREPOINT
            var availableUsers = GetAvailableUsersInDirectory();
            int numOfUsers     = availableUsers.Count > 20 ? 20 : availableUsers.Count;

            for (int i = 0; i < numOfUsers; i++)
            {
                string userName = availableUsers[SampleData.GetRandomNumber(0, availableUsers.Count)];

                if (userName == string.Empty)
                {
                    continue;
                }

                try
                {
                    var user = web.EnsureUser(userName);
                    Log.Write("Ensured user:"******" for site: " + web.Url);
                }
                catch (Exception ex)
                {
                    Errors.Log(ex);
                    Log.Write("Error adding user:"******"Ensured user:"******" for site: " + web.Url);
                }
                catch (Exception ex)
                {
                    Errors.Log(ex);
                    Log.Write("Error adding user:"******" Group";
                    try
                    {
                        web.AddSiteGroup(nameCandidate,
                                         web.CurrentUser,
                                         web.CurrentUser,
                                         "SPDG generated group");
                        createdGroups.Add(nameCandidate);
                        Log.Write("Created group:" + nameCandidate);
                    }
                    catch (Exception ex)
                    {
                        Errors.Log(ex);
                    }
                }
            }
            _siteSpGroups       = web.SiteGroups.ToList();
            _siteSpUsers        = web.SiteUsers.Where(x => !x.IsDomainGroup).ToList();
            _siteAdGroupSpUsers = web.SiteUsers.Where(x => x.IsDomainGroup).ToList();

            if (createdGroups.Count > 0)
            {
                var candidates = _siteSpUsers.Union(_siteAdGroupSpUsers).ToList();
                var groups     = web.SiteGroups.ToList();
                foreach (var @group in createdGroups)
                {
                    try
                    {
                        candidates.Shuffle();
                        var elementsToTake = Math.Min(candidates.Count, 10);
                        var users          = candidates.Take(elementsToTake).ToList();
                        var grp            = groups.First(x => x.Name == @group);
                        grp.AddUsers(users);
                        Log.Write(string.Format("added {0} users to group {1}:", users.Count, @group));
                    }
                    catch (Exception ex)
                    {
                        Errors.Log(ex);
                    }
                }
            }
        }
Esempio n. 16
0
 private void AddToNavigationBar(SPDGWeb childWeb)
 {
     childWeb.ParentWeb.AddNavigationNode(childWeb.Title, childWeb.ServerRelativeUrl, NavigationNodeLocation.TopNavigationBar);
 }