Disable internal node options if no internal node configured (#4315)

This commit is contained in:
Nicolas Dorier
2022-11-20 14:22:36 +09:00
committed by GitHub
parent 2bd4a680ad
commit 1e2acfb296
3 changed files with 9 additions and 5 deletions

View File

@@ -108,7 +108,7 @@ namespace BTCPayServer.Controllers
if (store == null)
return NotFound();
vm.CanUseInternalNode = CanUseInternalLightning();
vm.CanUseInternalNode = CanUseInternalLightning(vm.CryptoCode);
if (vm.CryptoCode == null)
{
@@ -122,7 +122,7 @@ namespace BTCPayServer.Controllers
LightningSupportedPaymentMethod? paymentMethod = null;
if (vm.LightningNodeType == LightningNodeType.Internal)
{
if (!CanUseInternalLightning())
if (!CanUseInternalLightning(network.CryptoCode))
{
ModelState.AddModelError(nameof(vm.ConnectionString), "You are not authorized to use the internal lightning node");
return View(vm);
@@ -364,14 +364,14 @@ namespace BTCPayServer.Controllers
return RedirectToAction(nameof(LightningSettings), new { storeId, cryptoCode });
}
private bool CanUseInternalLightning()
private bool CanUseInternalLightning(string cryptoCode)
{
return User.IsInRole(Roles.ServerAdmin) || _policiesSettings.AllowLightningInternalNodeForAll;
return LightningNetworkOptions.InternalLightningByCryptoCode.ContainsKey(cryptoCode.ToUpperInvariant()) && (User.IsInRole(Roles.ServerAdmin) || _policiesSettings.AllowLightningInternalNodeForAll);
}
private void SetExistingValues(StoreData store, LightningNodeViewModel vm)
{
vm.CanUseInternalNode = CanUseInternalLightning();
vm.CanUseInternalNode = CanUseInternalLightning(vm.CryptoCode);
var lightning = GetExistingLightningSupportedPaymentMethod(vm.CryptoCode, store);
if (lightning != null)