diff --git a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
index eb3cb283..3485d814 100644
--- a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
+++ b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
@@ -133,11 +133,17 @@
-
+
+
+
+
+
+
+
@@ -180,8 +186,9 @@
private string _notificationlevel = string.Empty;
private string _swagger = string.Empty;
private string _packageregistryurl = string.Empty;
+ private string _packageregistryemail = string.Empty;
- private string _log = string.Empty;
+ private string _log = string.Empty;
protected override async Task OnInitializedAsync()
{
@@ -211,7 +218,8 @@
_notificationlevel = systeminfo["Logging:LogLevel:Notify"].ToString();
_swagger = systeminfo["UseSwagger"].ToString();
_packageregistryurl = systeminfo["PackageRegistryUrl"].ToString();
- }
+ _packageregistryemail = systeminfo["PackageRegistryEmail"].ToString();
+ }
systeminfo = await SystemService.GetSystemInfoAsync("log");
if (systeminfo != null)
@@ -230,7 +238,8 @@
settings.Add("Logging:LogLevel:Notify", _notificationlevel);
settings.Add("UseSwagger", _swagger);
settings.Add("PackageRegistryUrl", _packageregistryurl);
- await SystemService.UpdateSystemInfoAsync(settings);
+ settings.Add("PackageRegistryEmail", _packageregistryemail);
+ await SystemService.UpdateSystemInfoAsync(settings);
AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success);
}
catch (Exception ex)
diff --git a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
index 76747197..48525017 100644
--- a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
@@ -220,10 +220,10 @@
You Have Been Successfully Registered For Updates
- Specify The Package Manager Service For Installing Modules, Themes, And Translations. If This Field Is Blank It Means The Package Manager Service Is Disabled For This Installation.
+ Specify The Url Of The Package Manager Service For Installing Modules, Themes, And Translations. If This Field Is Blank It Means The Package Manager Service Is Disabled For This Installation.
- Package Manager:
+ Package Manager Url:
Specify If Swagger Is Enabled For Your Server API
@@ -294,4 +294,10 @@
Process:
+
+ Package Manager Email:
+
+
+ Specify The Email Address Of The User Account Used For Interacting With The Package Manager Service. This Account Is Used For Managing Packages Across Multiple Installations.
+
\ No newline at end of file
diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs
index 795eb525..f1aba718 100644
--- a/Oqtane.Server/Controllers/PackageController.cs
+++ b/Oqtane.Server/Controllers/PackageController.cs
@@ -12,6 +12,8 @@ using Oqtane.Infrastructure;
using Oqtane.Enums;
using System.Net.Http.Headers;
using System.Text.Json;
+using Oqtane.Managers;
+using System.Net;
// ReSharper disable PartialTypeWithSinglePart
namespace Oqtane.Controllers
@@ -20,13 +22,15 @@ namespace Oqtane.Controllers
public class PackageController : Controller
{
private readonly IInstallationManager _installationManager;
+ private readonly IUserManager _userManager;
private readonly IWebHostEnvironment _environment;
private readonly IConfigManager _configManager;
private readonly ILogManager _logger;
- public PackageController(IInstallationManager installationManager, IWebHostEnvironment environment, IConfigManager configManager, ILogManager logger)
+ public PackageController(IInstallationManager installationManager, IUserManager userManager, IWebHostEnvironment environment, IConfigManager configManager, ILogManager logger)
{
_installationManager = installationManager;
+ _userManager = userManager;
_environment = environment;
_configManager = configManager;
_logger = logger;
@@ -45,7 +49,7 @@ namespace Oqtane.Controllers
{
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
- packages = await GetJson>(client, url + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}&price={price}&package={package}&sort={sort}");
+ packages = await GetJson>(client, url + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={WebUtility.UrlEncode(search)}&price={price}&package={package}&sort={sort}&email={WebUtility.UrlEncode(GetPackageRegistryEmail())}");
}
}
return packages;
@@ -64,7 +68,7 @@ namespace Oqtane.Controllers
{
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
- packages = await GetJson>(client, url + $"/api/registry/updates/?id={_configManager.GetInstallationId()}&version={Constants.Version}&type={type}");
+ packages = await GetJson>(client, url + $"/api/registry/updates/?id={_configManager.GetInstallationId()}&version={Constants.Version}&type={type}&email={WebUtility.UrlEncode(GetPackageRegistryEmail())}");
}
}
return packages;
@@ -83,7 +87,7 @@ namespace Oqtane.Controllers
{
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
- package = await GetJson(client, url + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}&download={download}");
+ package = await GetJson(client, url + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}&download={download}&email={WebUtility.UrlEncode(GetPackageRegistryEmail())}");
}
if (package != null)
@@ -117,6 +121,24 @@ namespace Oqtane.Controllers
return package;
}
+ private string GetPackageRegistryEmail()
+ {
+ var email = _configManager.GetSetting("PackageRegistryEmail", "");
+ if (string.IsNullOrEmpty(email))
+ {
+ if (User.Identity.IsAuthenticated)
+ {
+ var user = _userManager.GetUser(User.Identity.Name, -1);
+ if (user != null)
+ {
+ email = user.Email;
+ _configManager.AddOrUpdateSetting("PackageRegistryEmail", email, false);
+ }
+ }
+ }
+ return email;
+ }
+
private async Task GetJson(HttpClient httpClient, string url)
{
try
diff --git a/Oqtane.Server/Controllers/SystemController.cs b/Oqtane.Server/Controllers/SystemController.cs
index b34611f4..74aa9a27 100644
--- a/Oqtane.Server/Controllers/SystemController.cs
+++ b/Oqtane.Server/Controllers/SystemController.cs
@@ -54,6 +54,7 @@ namespace Oqtane.Controllers
systeminfo.Add("Logging:LogLevel:Notify", _configManager.GetSetting("Logging:LogLevel:Notify", "Error"));
systeminfo.Add("UseSwagger", _configManager.GetSetting("UseSwagger", "true"));
systeminfo.Add("PackageRegistryUrl", _configManager.GetSetting("PackageRegistryUrl", Constants.PackageRegistryUrl));
+ systeminfo.Add("PackageRegistryEmail", _configManager.GetSetting("PackageRegistryEmail", ""));
break;
case "log":
string log = "";