Пример #1
0
        public static Role EnsureAllRole([NotNull] string roleKind)
        {
            // ensure "sitecore\Bloggr All (role)" -> "sitecore\Bloggr All Users" -> "sitecore\Authors"
            Assert.ArgumentNotNull(roleKind, "roleKind");

            var all       = "sitecore\\Bloggr All " + roleKind;
            var allExists = Role.Exists(all);

            if (!allExists)
            {
                Log.Info("Creating role: " + all, typeof(BloggrInstallHook));
                Roles.CreateRole(all);
            }

            var allRole = Role.FromName(all);

            Assert.IsNotNull(allRole, "Role does not exist: " + all);

            if (!allExists)
            {
                RolesInRolesManager.AddRoleToRole(allRole, EnsureAllUsersRole());
            }

            return(allRole);
        }
Пример #2
0
        protected virtual void DeserializeRole(IRoleData role)
        {
            bool addedRole = false;

            // Add role if needed
            var name = role.RoleName;

            if (!System.Web.Security.Roles.RoleExists(name))
            {
                _loaderLogger.AddedNewRole(role);
                addedRole = true;
                System.Web.Security.Roles.CreateRole(name);
            }

            Role targetRole           = Role.FromName(name);
            var  currentSourceParents = new SitecoreRoleData(targetRole).MemberOfRoles;
            var  currentTargetParents = role.MemberOfRoles;

            var addedRoleMembership   = new List <string>();
            var removedRoleMembership = new List <string>();
            var deferredUpdateLog     = new DeferredLogWriter <IRoleLoaderLogger>();

            // Loop over the serialized parent roles and set db roles if needed
            foreach (var serializedMemberRoleName in currentTargetParents)
            {
                var memberRole = Role.FromName(serializedMemberRoleName);

                // add nonexistant parent role if needed. NOTE: parent role need not be one we have serialized or included.
                if (!Role.Exists(serializedMemberRoleName))
                {
                    deferredUpdateLog.AddEntry(log => log.AddedNewRoleMembership(new SitecoreRoleData(memberRole)));
                    System.Web.Security.Roles.CreateRole(serializedMemberRoleName);
                }

                // Add membership if not already in the parent role
                if (!RolesInRolesManager.IsRoleInRole(targetRole, memberRole, false))
                {
                    addedRoleMembership.Add(memberRole.Name);
                    RolesInRolesManager.AddRoleToRole(targetRole, memberRole);
                }
            }

            // Loop over parent roles that exist in the database but not in serialized and remove them
            var membershipToRemove = currentSourceParents.Where(parent => !currentTargetParents.Contains(parent, StringComparer.OrdinalIgnoreCase));

            foreach (var roleToRemove in membershipToRemove)
            {
                removedRoleMembership.Add(roleToRemove);
                RolesInRolesManager.RemoveRoleFromRole(targetRole, Role.FromName(roleToRemove));
            }

            if (!addedRole && (addedRoleMembership.Count > 0 || removedRoleMembership.Count > 0))
            {
                _loaderLogger.RoleMembershipChanged(role, addedRoleMembership.ToArray(), removedRoleMembership.ToArray());
            }

            deferredUpdateLog.ExecuteDeferredActions(_loaderLogger);
        }
Пример #3
0
        protected override void ProcessRecord()
        {
            var name = Identity.Name;

            if (Role.Exists(name))
            {
                var targetRole = Role.FromName(name);

                foreach (var member in Members)
                {
                    if (User.Exists(member.Name))
                    {
                        var user = User.FromName(member.Name, false);
                        if (user.IsInRole(targetRole))
                        {
                            continue;
                        }

                        if (!ShouldProcess(targetRole.Name, $"Add user '{user.Name}' to role"))
                        {
                            continue;
                        }

                        var profile = UserRoles.FromUser(user);
                        profile.Add(targetRole);
                    }
                    else if (Role.Exists(member.Name))
                    {
                        var role = Role.FromName(member.Name);
                        if (RolesInRolesManager.IsRoleInRole(role, targetRole, false))
                        {
                            continue;
                        }

                        if (ShouldProcess(targetRole.Name, $"Add role '{role.Name}' to role"))
                        {
                            RolesInRolesManager.AddRoleToRole(role, targetRole);
                        }
                    }
                    else
                    {
                        WriteError(typeof(ObjectNotFoundException), $"Cannot find an account with identity '{member}'.",
                                   ErrorIds.AccountNotFound, ErrorCategory.ObjectNotFound, member);
                    }
                }
            }
            else
            {
                WriteError(typeof(ObjectNotFoundException), $"Cannot find an account with identity '{name}'.",
                           ErrorIds.AccountNotFound, ErrorCategory.ObjectNotFound, Identity);
            }
        }
Пример #4
0
        public static void EnsureBlogRoles([NotNull] string blogName)
        {
            Assert.ArgumentNotNull(blogName, "blogName");

            foreach (var roleKind in RoleKinds)
            {
                var globalRole = EnsureAllRole(roleKind);

                // ensure "sitecore\Bloggr (role) - (blog)" -> "sitecore\Bloggr All (role)" -> "sitecore\Bloggr All Users" -> "sitecore\Authors"
                var blogRoleName   = "sitecore\\Bloggr " + roleKind + " - " + blogName;
                var blogRoleExists = Role.Exists(blogRoleName);
                if (!blogRoleExists)
                {
                    Log.Info("Creating role: " + blogRoleName, typeof(BloggrInstallHook));
                    Roles.CreateRole(blogRoleName);
                    RolesInRolesManager.AddRoleToRole(Role.FromName(blogRoleName), globalRole);
                }
            }
        }
 private static void CreateRolInRols(List <string> rols)
 {
     foreach (var line in rols)
     {
         var splitted = line.Split(',');
         if (splitted.Length == 3 && splitted[0] == "role")
         {
             var rol = Sitecore.Security.Accounts.Role.FromName(splitted[1]);
             foreach (var subrolstring in splitted[2].Split('|'))
             {
                 var subrol = Sitecore.Security.Accounts.Role.FromName(subrolstring);
                 if (rol != null && subrol != null)
                 {
                     if (RolesInRolesManager.RolesInRolesSupported && !RolesInRolesManager.IsRoleInRole(subrol, rol, false))
                     {
                         RolesInRolesManager.AddRoleToRole(subrol, rol);
                     }
                 }
             }
         }
     }
 }
Пример #6
0
        private static Role EnsureAllUsersRole()
        {
            Role allUsersRole;
            var  allUsers       = "sitecore\\Bloggr All Users";
            var  allUsersExists = Role.Exists(allUsers);

            if (!allUsersExists)
            {
                Log.Info("Creating role: " + allUsers, typeof(BloggrInstallHook));
                Roles.CreateRole(allUsers);
            }

            allUsersRole = Role.FromName(allUsers);
            Assert.IsNotNull(allUsersRole, "Role does not exist: " + allUsers);

            if (!allUsersExists)
            {
                RolesInRolesManager.AddRoleToRole(allUsersRole, Role.FromName("sitecore\\Author"));
            }

            return(allUsersRole);
        }
Пример #7
0
        private static void EnsureRoles()
        {
            // ensure "sitecore\Bloggr All Users" -> "sitecore\Authors"
            var allUsersRole = EnsureAllUsersRole();

            // ensure "sitecore\Bloggr Global Administrators" -> "sitecore\Bloggr All Users" -> "sitecore\Author"
            Role globalAdminsRole;
            var  globalAdmins       = "sitecore\\Bloggr Global Administrators";
            var  globalAdminsExists = Role.Exists(globalAdmins);

            if (!globalAdminsExists)
            {
                Log.Info("Creating role: " + globalAdmins, typeof(BloggrInstallHook));
                Roles.CreateRole(globalAdmins);
            }

            globalAdminsRole = Role.FromName(globalAdmins);
            Assert.IsNotNull(globalAdminsRole, "Role does not exist: " + globalAdmins);

            if (!globalAdminsExists)
            {
                RolesInRolesManager.AddRoleToRole(globalAdminsRole, allUsersRole);
            }

            var blogNames = BloggrFactory.GetBlogNames();

            foreach (var roleKind in RoleKinds)
            {
                EnsureAllRole(roleKind);
            }

            foreach (var blogName in blogNames)
            {
                EnsureBlogRoles(blogName);
            }
        }