using Microsoft.AspNetCore.Routing; using Nop.Core; using Nop.Services.Common; using Nop.Services.Plugins; using Nop.Services.Security; using Nop.Web.Framework; using Nop.Web.Framework.Menu; namespace Nop.Plugin.Misc.WebApi.Frontend; /// /// Represents the Web API frontend plugin /// public class WebApiFrontendPlugin : BasePlugin, IAdminMenuPlugin, IMiscPlugin { #region Fields protected readonly IPermissionService _permissionService; protected readonly IWebHelper _webHelper; #endregion #region Ctor public WebApiFrontendPlugin(IPermissionService permissionService, IWebHelper webHelper) { _permissionService = permissionService; _webHelper = webHelper; } #endregion #region Methods /// /// Gets a configuration page URL /// public override string GetConfigurationPageUrl() { return $"{_webHelper.GetStoreLocation()}Admin/WebApiFrontend/Configure"; } /// /// Install the plugin /// /// A task that represents the asynchronous operation public override async Task InstallAsync() { await base.InstallAsync(); } public async Task ManageSiteMapAsync(SiteMapNode rootNode) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManagePlugins)) return; var config = rootNode.ChildNodes.FirstOrDefault(node => node.SystemName.Equals("Configuration")); if (config == null) return; var plugins = config.ChildNodes.FirstOrDefault(node => node.SystemName.Equals("Local plugins")); if (plugins == null) return; var index = config.ChildNodes.IndexOf(plugins); if (index < 0) return; config.ChildNodes.Insert(index, new SiteMapNode { SystemName = "nopCommerce Web API plugin", Title = "Web API", ControllerName = "WebApiFrontend", ActionName = "Configure", IconClass = "far fa-dot-circle", Visible = true, RouteValues = new RouteValueDictionary { { "area", AreaNames.ADMIN } } }); } /// /// Uninstall the plugin /// /// A task that represents the asynchronous operation public override async Task UninstallAsync() { await base.UninstallAsync(); } #endregion }