diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs index 52582998f5..0ab2e683b8 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs @@ -1,116 +1,9 @@ -using System; -using System.IO; using System.Linq; -using System.Xml.Linq; using Umbraco.Core.Configuration; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.DatabaseModelDefinitions; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero { - [Migration("7.3.0", 7, GlobalSettings.UmbracoMigrationName)] - public class MovePublicAccessXmlDataToDb : MigrationBase - { - public override void Up() - { - var xmlFile = IOHelper.MapPath(SystemFiles.AccessXml); - using (var fileStream = File.OpenRead(xmlFile)) - { - var xml = XDocument.Load(fileStream); - - foreach (var page in xml.Root.Elements("page")) - { - var pageId = (int?) page.Attribute("id"); - var loginPageId = (int?) page.Attribute("loginPage"); - var noRightsPageId = (int?)page.Attribute("noRightsPage"); - if (pageId.HasValue == false || loginPageId.HasValue == false || noRightsPageId.HasValue == false) - continue; - - //ensure this page exists! - var umbracoNode = Context.Database.FirstOrDefault("WHERE id = @Id", new {Id = pageId.Value}); - if (umbracoNode != null) - { - var loginNode = Context.Database.FirstOrDefault("WHERE id = @Id", new { Id = loginPageId.Value }); - if (loginNode != null) - { - var noRightsPage = Context.Database.FirstOrDefault("WHERE id = @Id", new { Id = noRightsPageId.Value }); - if (noRightsPage != null) - { - var accessId = Guid.NewGuid(); - Insert.IntoTable("umbracoAccess").Row(new - { - id = accessId, - nodeId = umbracoNode.UniqueId, - loginNodeId = loginNode.UniqueId, - noAccessNodeId = noRightsPage.UniqueId, - createDate = DateTime.Now, - updateDate = DateTime.Now - }); - - //if a memberId has been specified, then add that as a rule - var memberId = (string) page.Attribute("memberId"); - if (memberId.IsNullOrWhiteSpace() == false) - { - Insert.IntoTable("umbracoAccessRule").Row(new - { - id = Guid.NewGuid(), - accessId = accessId, - claim = memberId, - claimType = Constants.Conventions.PublicAccess.MemberIdClaimType, - createDate = DateTime.Now, - updateDate = DateTime.Now - }); - } - - //now there should be a member group defined here - var memberGroupElement = page.Element("group"); - if (memberGroupElement != null) - { - var memberGroup = (string)memberGroupElement.Attribute("id"); - if (memberGroup.IsNullOrWhiteSpace() == false) - { - //create a member group rule - Insert.IntoTable("umbracoAccessRule").Row(new - { - id = Guid.NewGuid(), - accessId = accessId, - claim = memberGroup, - claimType = Constants.Conventions.PublicAccess.MemberGroupClaimType, - createDate = DateTime.Now, - updateDate = DateTime.Now - }); - } - } - - } - else - { - Logger.Warn("No umbracoNode could be found with id " + noRightsPageId.Value); - } - } - else - { - Logger.Warn("No umbracoNode could be found with id " + loginPageId.Value); - } - - } - else - { - Logger.Warn("No umbracoNode could be found with id " + pageId.Value); - } - } - - } - - } - - public override void Down() - { - } - } - [Migration("7.3.0", 6, GlobalSettings.UmbracoMigrationName)] public class AddPublicAccessTables : MigrationBase { diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MovePublicAccessXmlDataToDb.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MovePublicAccessXmlDataToDb.cs new file mode 100644 index 0000000000..ee37cd9eb2 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MovePublicAccessXmlDataToDb.cs @@ -0,0 +1,118 @@ +using System; +using System.IO; +using System.Linq; +using System.Xml.Linq; +using Umbraco.Core.Configuration; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; +using Umbraco.Core.Models.Rdbms; + +namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero +{ + [Migration("7.3.0", 7, GlobalSettings.UmbracoMigrationName)] + public class MovePublicAccessXmlDataToDb : MigrationBase + { + + + public override void Up() + { + //don't run if data is already there. + var dataExists = Context.Database.Fetch(new Sql().Select("*").From(SqlSyntax)); + if (dataExists.Any()) return; + + var xmlFile = IOHelper.MapPath(SystemFiles.AccessXml); + using (var fileStream = File.OpenRead(xmlFile)) + { + var xml = XDocument.Load(fileStream); + + foreach (var page in xml.Root.Elements("page")) + { + var pageId = (int?) page.Attribute("id"); + var loginPageId = (int?) page.Attribute("loginPage"); + var noRightsPageId = (int?)page.Attribute("noRightsPage"); + if (pageId.HasValue == false || loginPageId.HasValue == false || noRightsPageId.HasValue == false) + continue; + + //ensure this page exists! + var umbracoNode = Context.Database.FirstOrDefault("WHERE id = @Id", new {Id = pageId.Value}); + if (umbracoNode != null) + { + var loginNode = Context.Database.FirstOrDefault("WHERE id = @Id", new { Id = loginPageId.Value }); + if (loginNode != null) + { + var noRightsPage = Context.Database.FirstOrDefault("WHERE id = @Id", new { Id = noRightsPageId.Value }); + if (noRightsPage != null) + { + var accessId = Guid.NewGuid(); + Insert.IntoTable("umbracoAccess").Row(new + { + id = accessId, + nodeId = umbracoNode.UniqueId, + loginNodeId = loginNode.UniqueId, + noAccessNodeId = noRightsPage.UniqueId, + createDate = DateTime.Now, + updateDate = DateTime.Now + }); + + //if a memberId has been specified, then add that as a rule + var memberId = (string) page.Attribute("memberId"); + if (memberId.IsNullOrWhiteSpace() == false) + { + Insert.IntoTable("umbracoAccessRule").Row(new + { + id = Guid.NewGuid(), + accessId = accessId, + claim = memberId, + claimType = Constants.Conventions.PublicAccess.MemberIdClaimType, + createDate = DateTime.Now, + updateDate = DateTime.Now + }); + } + + //now there should be a member group defined here + var memberGroupElement = page.Element("group"); + if (memberGroupElement != null) + { + var memberGroup = (string)memberGroupElement.Attribute("id"); + if (memberGroup.IsNullOrWhiteSpace() == false) + { + //create a member group rule + Insert.IntoTable("umbracoAccessRule").Row(new + { + id = Guid.NewGuid(), + accessId = accessId, + claim = memberGroup, + claimType = Constants.Conventions.PublicAccess.MemberGroupClaimType, + createDate = DateTime.Now, + updateDate = DateTime.Now + }); + } + } + + } + else + { + Logger.Warn("No umbracoNode could be found with id " + noRightsPageId.Value); + } + } + else + { + Logger.Warn("No umbracoNode could be found with id " + loginPageId.Value); + } + + } + else + { + Logger.Warn("No umbracoNode could be found with id " + pageId.Value); + } + } + + } + + } + + public override void Down() + { + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index ab9d578fbf..7b53829c30 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -332,6 +332,7 @@ +