diff --git a/src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs b/src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs index 22fad9d99b..37200b2172 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs @@ -17,8 +17,7 @@ namespace Umbraco.Core.Persistence.Repositories { public PublicAccessRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) : base(work, cache, logger, sqlSyntax) - { - } + { } private FullDataSetRepositoryCachePolicyFactory _cachePolicyFactory; protected override IRepositoryCachePolicyFactory CachePolicyFactory @@ -46,6 +45,8 @@ namespace Umbraco.Core.Persistence.Repositories sql.Where("umbracoAccess.id IN (@ids)", new { ids = ids }); } + sql.OrderBy(x => x.NodeId, SqlSyntax); + var factory = new PublicAccessEntryFactory(); var dtos = Database.Fetch(new AccessRulesRelator().Map, sql); return dtos.Select(factory.BuildEntity); @@ -69,7 +70,7 @@ namespace Umbraco.Core.Persistence.Repositories .From(SqlSyntax) .LeftJoin(SqlSyntax) .On(SqlSyntax, left => left.Id, right => right.AccessId); - + return sql; } @@ -162,7 +163,5 @@ namespace Umbraco.Core.Persistence.Repositories { return entity.Key; } - - } } \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs index a082b847cf..04fb9e6bf9 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs @@ -133,19 +133,21 @@ namespace umbraco.presentation.umbraco.dialogs _memberGroups.ID = "Membergroups"; _memberGroups.Width = 175; var selectedGroups = ""; - var roles = Roles.GetAllRoles().OrderBy(x => x); - if (roles.Any()) + // get roles from the membership provider + var roles = Roles.GetAllRoles().OrderBy(x => x).ToArray(); + + if (roles.Length > 0) { - foreach (string role in roles) + foreach (var role in roles) { - ListItem li = new ListItem(role, role); - if (IsPostBack == false) - { - if (Access.IsProtectedByMembershipRole(int.Parse(helper.Request("nodeid")), role)) - selectedGroups += role + ","; - } - _memberGroups.Items.Add(li); + var listItem = new ListItem(role, role); + _memberGroups.Items.Add(listItem); + if (IsPostBack) continue; + + // first time, initialize selected roles + if (Access.IsProtectedByMembershipRole(documentId, role)) + selectedGroups += role + ","; } } else @@ -153,6 +155,7 @@ namespace umbraco.presentation.umbraco.dialogs p_noGroupsFound.Visible = true; rb_advanced.Enabled = false; } + _memberGroups.Value = selectedGroups; groupsSelector.Controls.Add(_memberGroups); @@ -183,7 +186,7 @@ namespace umbraco.presentation.umbraco.dialogs SimpleLoginNameValidator.IsValid = true; var provider = MembershipProviderExtensions.GetMembersMembershipProvider(); - + int pageId = int.Parse(helper.Request("nodeId")); if (e.CommandName == "simple")