diff --git a/src/Umbraco.Web/Editors/PackageInstallController.cs b/src/Umbraco.Web/Editors/PackageInstallController.cs index 50b612b453..c96a078fe0 100644 --- a/src/Umbraco.Web/Editors/PackageInstallController.cs +++ b/src/Umbraco.Web/Editors/PackageInstallController.cs @@ -10,6 +10,8 @@ using System.Threading.Tasks; using System.Web.Http; using System.Xml; using System.Xml.Linq; +using Umbraco.Core.Auditing; +using umbraco.BusinessLogic; using umbraco.cms.businesslogic.packager.repositories; using Umbraco.Core.IO; using Umbraco.Core.Packaging.Models; @@ -35,7 +37,7 @@ namespace Umbraco.Web.Editors //our repo guid using (var our = Repository.getByGuid("65194810-1f85-11dd-bd0b-0800200c9a66")) { - path = our.fetch(packageGuid); + path = our.fetch(packageGuid, Security.CurrentUser.Id); } } @@ -44,22 +46,24 @@ namespace Umbraco.Web.Editors p.RepositoryGuid = Guid.Parse("65194810-1f85-11dd-bd0b-0800200c9a66"); p.ZipFilePath = path; //p.ZipFilePath = Path.Combine("temp", "package.umb"); + return p; } [HttpPost] public PackageInstallModel Import(PackageInstallModel model) { - var ins = new global::umbraco.cms.businesslogic.packager.Installer(); + var ins = new global::umbraco.cms.businesslogic.packager.Installer(Security.CurrentUser.Id); model.TemporaryDirectoryPath = Path.Combine(SystemDirectories.Data, ins.Import(model.ZipFilePath)); model.Id = ins.CreateManifest( IOHelper.MapPath(model.TemporaryDirectoryPath), model.PackageGuid.ToString(), model.RepositoryGuid.ToString()); + return model; } [HttpPost] public PackageInstallModel InstallFiles(PackageInstallModel model) { - var ins = new global::umbraco.cms.businesslogic.packager.Installer(); + var ins = new global::umbraco.cms.businesslogic.packager.Installer(Security.CurrentUser.Id); ins.LoadConfig(IOHelper.MapPath(model.TemporaryDirectoryPath)); ins.InstallFiles(model.Id, IOHelper.MapPath(model.TemporaryDirectoryPath)); return model; @@ -69,7 +73,7 @@ namespace Umbraco.Web.Editors [HttpPost] public PackageInstallModel InstallData(PackageInstallModel model) { - var ins = new global::umbraco.cms.businesslogic.packager.Installer(); + var ins = new global::umbraco.cms.businesslogic.packager.Installer(Security.CurrentUser.Id); ins.LoadConfig(IOHelper.MapPath(model.TemporaryDirectoryPath)); ins.InstallBusinessLogic(model.Id, IOHelper.MapPath(model.TemporaryDirectoryPath)); return model; @@ -79,7 +83,7 @@ namespace Umbraco.Web.Editors [HttpPost] public PackageInstallModel CleanUp(PackageInstallModel model) { - var ins = new global::umbraco.cms.businesslogic.packager.Installer(); + var ins = new global::umbraco.cms.businesslogic.packager.Installer(Security.CurrentUser.Id); ins.LoadConfig(IOHelper.MapPath(model.TemporaryDirectoryPath)); ins.InstallCleanUp(model.Id, IOHelper.MapPath(model.TemporaryDirectoryPath)); diff --git a/src/Umbraco.Web/Install/Controllers/InstallPackageController.cs b/src/Umbraco.Web/Install/Controllers/InstallPackageController.cs index 08507af2b8..fc4a8962b8 100644 --- a/src/Umbraco.Web/Install/Controllers/InstallPackageController.cs +++ b/src/Umbraco.Web/Install/Controllers/InstallPackageController.cs @@ -71,9 +71,9 @@ namespace Umbraco.Web.Install.Controllers new { success = false, error = "cannot_connect" }, HttpStatusCode.OK); } - var installer = new global::umbraco.cms.businesslogic.packager.Installer(); + var installer = new global::umbraco.cms.businesslogic.packager.Installer(UmbracoContext.Current.Security.CurrentUser.Id); - var tempFile = installer.Import(repo.fetch(model.KitGuid.ToString())); + var tempFile = installer.Import(repo.fetch(model.KitGuid.ToString(), UmbracoContext.Current.Security.CurrentUser.Id)); installer.LoadConfig(tempFile); var pId = installer.CreateManifest(tempFile, model.KitGuid.ToString(), RepoGuid); return Json(new @@ -94,7 +94,7 @@ namespace Umbraco.Web.Install.Controllers public HttpResponseMessage InstallPackageFiles(InstallPackageModel model) { model.PackageFile = HttpUtility.UrlDecode(model.PackageFile); - var installer = new global::umbraco.cms.businesslogic.packager.Installer(); + var installer = new global::umbraco.cms.businesslogic.packager.Installer(UmbracoContext.Current.Security.CurrentUser.Id); installer.LoadConfig(model.PackageFile); installer.InstallFiles(model.ManifestId, model.PackageFile); return Json(new @@ -150,7 +150,7 @@ namespace Umbraco.Web.Install.Controllers public HttpResponseMessage InstallBusinessLogic(InstallPackageModel model) { model.PackageFile = HttpUtility.UrlDecode(model.PackageFile); - var installer = new global::umbraco.cms.businesslogic.packager.Installer(); + var installer = new global::umbraco.cms.businesslogic.packager.Installer(UmbracoContext.Current.Security.CurrentUser.Id); installer.LoadConfig(model.PackageFile); installer.InstallBusinessLogic(model.ManifestId, model.PackageFile); return Json(new @@ -171,7 +171,7 @@ namespace Umbraco.Web.Install.Controllers public HttpResponseMessage CleanupInstallation(InstallPackageModel model) { model.PackageFile = HttpUtility.UrlDecode(model.PackageFile); - var installer = new global::umbraco.cms.businesslogic.packager.Installer(); + var installer = new global::umbraco.cms.businesslogic.packager.Installer(UmbracoContext.Current.Security.CurrentUser.Id); installer.LoadConfig(model.PackageFile); installer.InstallCleanUp(model.ManifestId, model.PackageFile); diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs index f258ecf323..78bde7b98c 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs @@ -26,7 +26,7 @@ namespace umbraco.presentation.developer.packages { string repoGuid = "65194810-1f85-11dd-bd0b-0800200c9a66"; //Hardcoded official package repo key. - var p = new cms.businesslogic.packager.Installer(); + var p = new cms.businesslogic.packager.Installer(Umbraco.Web.UmbracoContext.Current.Security.CurrentUser.Id); var repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); if (repo == null) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs index ed88c2de73..6146590293 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs @@ -362,7 +362,7 @@ namespace umbraco.presentation.developer.packages protected void delPack(object sender, EventArgs e) { - _pack.Delete(); + _pack.Delete(UmbracoUser.Id); pane_uninstalled.Visible = true; pane_uninstall.Visible = false; } @@ -545,7 +545,7 @@ namespace umbraco.presentation.developer.packages } } _pack.Save(); - _pack.Delete(); + _pack.Delete(UmbracoUser.Id); pane_uninstalled.Visible = true; pane_uninstall.Visible = false; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs index a78e2293f0..351015ddd8 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs @@ -30,11 +30,12 @@ namespace umbraco.presentation.developer.packages public Installer() { CurrentApp = DefaultApps.developer.ToString(); + _installer = new cms.businesslogic.packager.Installer(UmbracoUser.Id); } private Control _configControl; private cms.businesslogic.packager.repositories.Repository _repo; - private readonly cms.businesslogic.packager.Installer _installer = new cms.businesslogic.packager.Installer(); + private readonly cms.businesslogic.packager.Installer _installer = null; private string _tempFileName = ""; protected string RefreshQueryString { get; set; } @@ -81,7 +82,7 @@ namespace umbraco.presentation.developer.packages if (!pack.Protected) { //if it isn't then go straigt to the accept licens screen - tempFile.Value = _installer.Import(_repo.fetch(Request.GetItemAsString("guid"))); + tempFile.Value = _installer.Import(_repo.fetch(Request.GetItemAsString("guid"), UmbracoUser.Id)); UpdateSettings(); } diff --git a/src/umbraco.cms/businesslogic/Packager/Installer.cs b/src/umbraco.cms/businesslogic/Packager/Installer.cs index dfb76d1f7c..0a6fbe2124 100644 --- a/src/umbraco.cms/businesslogic/Packager/Installer.cs +++ b/src/umbraco.cms/businesslogic/Packager/Installer.cs @@ -6,6 +6,7 @@ using System.Xml; using System.Linq; using ICSharpCode.SharpZipLib.Zip; using Umbraco.Core; +using Umbraco.Core.Auditing; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Packaging; @@ -42,6 +43,8 @@ namespace umbraco.cms.businesslogic.packager private readonly Dictionary _conflictingStyleSheetNames = new Dictionary(); private readonly List _binaryFileErrors = new List(); + private int _currentUserId = -1; + public string Name { get; private set; } public string Version { get; private set; } @@ -93,6 +96,17 @@ namespace umbraco.cms.businesslogic.packager /// Constructor /// public Installer() + { + initialize(); + } + + public Installer(int currentUserId) + { + initialize(); + _currentUserId = currentUserId; + } + + private void initialize() { ContainsBinaryFileErrors = false; ContainsTemplateConflicts = false; @@ -253,6 +267,7 @@ namespace umbraco.cms.businesslogic.packager //PPH log file install insPack.Data.Files.Add(XmlHelper.GetNodeValue(n.SelectSingleNode("orgPath")) + "/" + XmlHelper.GetNodeValue(n.SelectSingleNode("orgName"))); + } catch (Exception ex) { @@ -260,6 +275,14 @@ namespace umbraco.cms.businesslogic.packager } } + // log that a user has install files + if (_currentUserId > -1) + { + Audit.Add(AuditTypes.PackagerInstall, + string.Format("Package '{0}' files in installed. Package guid: {1}", insPack.Data.Name, insPack.Data.PackageGuid), + _currentUserId, -1); + } + insPack.Save(); diff --git a/src/umbraco.cms/businesslogic/Packager/PackageInstance/InstalledPackage.cs b/src/umbraco.cms/businesslogic/Packager/PackageInstance/InstalledPackage.cs index 5351bda083..83b86cc771 100644 --- a/src/umbraco.cms/businesslogic/Packager/PackageInstance/InstalledPackage.cs +++ b/src/umbraco.cms/businesslogic/Packager/PackageInstance/InstalledPackage.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Umbraco.Core.Auditing; using Umbraco.Core.Logging; using Umbraco.Core.IO; @@ -59,6 +60,11 @@ namespace umbraco.cms.businesslogic.packager { set { m_data = value; } } + public void Delete(int userId) + { + Audit.Add(AuditTypes.PackagerUninstall, string.Format("Package '{0}' files in installed. Package guid: {1}", Data.Name, Data.PackageGuid), userId, -1); + Delete(); + } public void Delete() { this.FireBeforeDelete(EventArgs.Empty); diff --git a/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs b/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs index 67dc7ace19..3ffa0e9054 100644 --- a/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs +++ b/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs @@ -6,6 +6,7 @@ using System.Xml; using System.IO; using System.Net; using Umbraco.Core; +using Umbraco.Core.Auditing; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using Umbraco.Core.IO; @@ -148,6 +149,15 @@ namespace umbraco.cms.businesslogic.packager.repositories } + public string fetch(string packageGuid, int userId) + { + // log + Audit.Add(AuditTypes.PackagerInstall, + string.Format("Package {0} fetched from {1}", packageGuid, this.Guid), + userId, -1); + return fetch(packageGuid); + } + public bool HasConnection() { @@ -223,6 +233,8 @@ namespace umbraco.cms.businesslogic.packager.repositories } } + // log + return ""; }