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