using Microsoft.AspNetCore.Http; using Nop.Core; using Nop.Data; namespace Nop.Services.Installation; /// /// Represents middleware that checks whether database is installed and redirects to installation URL in otherwise /// public partial class InstallUrlMiddleware { #region Fields protected readonly RequestDelegate _next; #endregion #region Ctor public InstallUrlMiddleware(RequestDelegate next) { _next = next; } #endregion #region Methods /// /// Invoke middleware actions /// /// HTTP context /// Web helper /// A task that represents the asynchronous operation public async Task InvokeAsync(HttpContext context, IWebHelper webHelper) { //whether database is installed if (!DataSettingsManager.IsDatabaseInstalled()) { var installUrl = $"{webHelper.GetStoreLocation()}{NopInstallationDefaults.InstallPath}"; if (!webHelper.GetThisPageUrl(false).StartsWith(installUrl, StringComparison.InvariantCultureIgnoreCase)) { //redirect context.Response.Redirect(installUrl); return; } } //or call the next middleware in the request pipeline await _next(context); } #endregion }