2016-09-01 19:06:08 +02:00
|
|
|
|
using System.Web.Mvc;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
using Umbraco.Core;
|
|
|
|
|
|
using Umbraco.Core.Configuration;
|
|
|
|
|
|
using Umbraco.Core.IO;
|
2016-09-01 19:06:08 +02:00
|
|
|
|
using Umbraco.Core.Logging;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
using Umbraco.Web.Security;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Web.Install.Controllers
|
|
|
|
|
|
{
|
2014-03-11 18:09:54 +11:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The MVC Installation controller
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// NOTE: All views must have their full paths as we do not have a custom view engine for the installation views!
|
|
|
|
|
|
/// </remarks>
|
2016-09-01 19:06:08 +02:00
|
|
|
|
[InstallAuthorize]
|
2014-02-26 04:15:14 +11:00
|
|
|
|
public class InstallController : Controller
|
|
|
|
|
|
{
|
2016-11-29 10:31:25 +01:00
|
|
|
|
private readonly DatabaseBuilder _databaseBuilder;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
private readonly UmbracoContext _umbracoContext;
|
2016-09-01 19:06:08 +02:00
|
|
|
|
private readonly IRuntimeState _runtime;
|
|
|
|
|
|
private readonly ILogger _logger;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
|
2016-11-29 10:31:25 +01:00
|
|
|
|
public InstallController(UmbracoContext umbracoContext, DatabaseBuilder databaseBuilder, IRuntimeState runtime, ILogger logger)
|
2017-07-20 11:21:28 +02:00
|
|
|
|
{
|
|
|
|
|
|
_umbracoContext = umbracoContext;
|
2016-11-29 10:31:25 +01:00
|
|
|
|
_databaseBuilder = databaseBuilder;
|
2016-09-01 19:06:08 +02:00
|
|
|
|
_runtime = runtime;
|
2017-07-20 11:21:28 +02:00
|
|
|
|
_logger = logger;
|
|
|
|
|
|
}
|
2014-02-26 04:15:14 +11:00
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
|
public ActionResult Index()
|
|
|
|
|
|
{
|
2016-09-01 19:06:08 +02:00
|
|
|
|
if (_runtime.Level == RuntimeLevel.Run)
|
|
|
|
|
|
return Redirect(SystemDirectories.Umbraco.EnsureEndsWith('/'));
|
2014-02-27 10:16:30 +01:00
|
|
|
|
|
2016-09-01 19:06:08 +02:00
|
|
|
|
if (_runtime.Level == RuntimeLevel.Upgrade)
|
2015-06-22 16:22:47 +02:00
|
|
|
|
{
|
2016-09-03 10:23:17 +02:00
|
|
|
|
// Update ClientDependency version
|
2016-11-03 10:31:44 +01:00
|
|
|
|
var clientDependencyConfig = new ClientDependencyConfiguration(_logger);
|
2016-09-03 10:23:17 +02:00
|
|
|
|
var clientDependencyUpdated = clientDependencyConfig.IncreaseVersionNumber();
|
|
|
|
|
|
|
2014-02-26 04:15:14 +11:00
|
|
|
|
var result = _umbracoContext.Security.ValidateCurrentUser(false);
|
|
|
|
|
|
|
|
|
|
|
|
switch (result)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ValidateRequestAttempt.FailedNoPrivileges:
|
2015-06-22 16:22:47 +02:00
|
|
|
|
case ValidateRequestAttempt.FailedNoContextId:
|
|
|
|
|
|
return Redirect(SystemDirectories.Umbraco + "/AuthorizeUpgrade?redir=" + Server.UrlEncode(Request.RawUrl));
|
2014-02-26 04:15:14 +11:00
|
|
|
|
}
|
2015-06-22 16:22:47 +02:00
|
|
|
|
}
|
2014-02-26 16:01:31 +01:00
|
|
|
|
|
2016-09-01 19:06:08 +02:00
|
|
|
|
// gen the install base url
|
2014-03-05 22:42:51 +11:00
|
|
|
|
ViewBag.InstallApiBaseUrl = Url.GetUmbracoApiService("GetSetup", "InstallApi", "UmbracoInstall").TrimEnd("GetSetup");
|
2016-09-01 19:06:08 +02:00
|
|
|
|
|
|
|
|
|
|
// get the base umbraco folder
|
2014-03-03 08:57:00 +01:00
|
|
|
|
ViewBag.UmbracoBaseFolder = IOHelper.ResolveUrl(SystemDirectories.Umbraco);
|
2014-02-26 16:01:31 +01:00
|
|
|
|
|
2016-11-29 10:31:25 +01:00
|
|
|
|
var ih = new InstallHelper(_umbracoContext, _databaseBuilder, _logger);
|
2014-04-07 16:08:34 +02:00
|
|
|
|
ih.InstallStatus(false, "");
|
|
|
|
|
|
|
2016-09-01 19:06:08 +02:00
|
|
|
|
// always ensure full path (see NOTE in the class remarks)
|
2014-03-11 18:09:54 +11:00
|
|
|
|
return View(GlobalSettings.Path.EnsureEndsWith('/') + "install/views/index.cshtml");
|
2014-02-26 04:15:14 +11:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|