mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 06:24:24 +01:00
Rename and clean up properties
This commit is contained in:
@@ -35,16 +35,16 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
var walletEnabled = derivationSchemes.Any(scheme => !string.IsNullOrEmpty(scheme.Value) && scheme.Enabled);
|
var walletEnabled = derivationSchemes.Any(scheme => !string.IsNullOrEmpty(scheme.Value) && scheme.Enabled);
|
||||||
var lightningEnabled = lightningNodes.Any(ln => !string.IsNullOrEmpty(ln.Address) && ln.Enabled);
|
var lightningEnabled = lightningNodes.Any(ln => !string.IsNullOrEmpty(ln.Address) && ln.Enabled);
|
||||||
var cryptoCode = _NetworkProvider.DefaultNetwork.CryptoCode;
|
var cryptoCode = _networkProvider.DefaultNetwork.CryptoCode;
|
||||||
var vm = new StoreDashboardViewModel
|
var vm = new StoreDashboardViewModel
|
||||||
{
|
{
|
||||||
WalletEnabled = walletEnabled,
|
WalletEnabled = walletEnabled,
|
||||||
LightningEnabled = lightningEnabled,
|
LightningEnabled = lightningEnabled,
|
||||||
LightningSupported = _NetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode)?.SupportLightning is true,
|
LightningSupported = _networkProvider.GetNetwork<BTCPayNetwork>(cryptoCode)?.SupportLightning is true,
|
||||||
StoreId = CurrentStore.Id,
|
StoreId = CurrentStore.Id,
|
||||||
StoreName = CurrentStore.StoreName,
|
StoreName = CurrentStore.StoreName,
|
||||||
CryptoCode = cryptoCode,
|
CryptoCode = cryptoCode,
|
||||||
Network = _NetworkProvider.DefaultNetwork,
|
Network = _networkProvider.DefaultNetwork,
|
||||||
IsSetUp = walletEnabled || lightningEnabled
|
IsSetUp = walletEnabled || lightningEnabled
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ namespace BTCPayServer.Controllers
|
|||||||
blob.EmailRules = vm.Rules;
|
blob.EmailRules = vm.Rules;
|
||||||
if (store.SetStoreBlob(blob))
|
if (store.SetStoreBlob(blob))
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
message += "Store email rules saved. ";
|
message += "Store email rules saved. ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ namespace BTCPayServer.Controllers
|
|||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
storeBlob.EmailSettings.Password = null;
|
storeBlob.EmailSettings.Password = null;
|
||||||
store.SetStoreBlob(storeBlob);
|
store.SetStoreBlob(storeBlob);
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Email server password reset";
|
TempData[WellKnownTempData.SuccessMessage] = "Email server password reset";
|
||||||
}
|
}
|
||||||
if (useCustomSMTP)
|
if (useCustomSMTP)
|
||||||
@@ -255,7 +255,7 @@ namespace BTCPayServer.Controllers
|
|||||||
}
|
}
|
||||||
storeBlob.EmailSettings = model.Settings;
|
storeBlob.EmailSettings = model.Settings;
|
||||||
store.SetStoreBlob(storeBlob);
|
store.SetStoreBlob(storeBlob);
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Email settings modified";
|
TempData[WellKnownTempData.SuccessMessage] = "Email settings modified";
|
||||||
}
|
}
|
||||||
return RedirectToAction(nameof(StoreEmailSettings), new { storeId });
|
return RedirectToAction(nameof(StoreEmailSettings), new { storeId });
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
private async Task<Data.WebhookDeliveryData?> LastDeliveryForWebhook(string webhookId)
|
private async Task<Data.WebhookDeliveryData?> LastDeliveryForWebhook(string webhookId)
|
||||||
{
|
{
|
||||||
return (await _Repo.GetWebhookDeliveries(CurrentStore.Id, webhookId, 1)).ToList().FirstOrDefault();
|
return (await _storeRepo.GetWebhookDeliveries(CurrentStore.Id, webhookId, 1)).ToList().FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{storeId}/webhooks")]
|
[HttpGet("{storeId}/webhooks")]
|
||||||
public async Task<IActionResult> Webhooks()
|
public async Task<IActionResult> Webhooks()
|
||||||
{
|
{
|
||||||
var webhooks = await _Repo.GetWebhooks(CurrentStore.Id);
|
var webhooks = await _storeRepo.GetWebhooks(CurrentStore.Id);
|
||||||
return View(nameof(Webhooks), new WebhooksViewModel()
|
return View(nameof(Webhooks), new WebhooksViewModel()
|
||||||
{
|
{
|
||||||
Webhooks = webhooks.Select(async w =>
|
Webhooks = webhooks.Select(async w =>
|
||||||
@@ -63,7 +63,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> DeleteWebhook(string webhookId)
|
public async Task<IActionResult> DeleteWebhook(string webhookId)
|
||||||
{
|
{
|
||||||
var webhook = await _Repo.GetWebhook(CurrentStore.Id, webhookId);
|
var webhook = await _storeRepo.GetWebhook(CurrentStore.Id, webhookId);
|
||||||
if (webhook is null)
|
if (webhook is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
@@ -74,11 +74,11 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> DeleteWebhookPost(string webhookId)
|
public async Task<IActionResult> DeleteWebhookPost(string webhookId)
|
||||||
{
|
{
|
||||||
var webhook = await _Repo.GetWebhook(CurrentStore.Id, webhookId);
|
var webhook = await _storeRepo.GetWebhook(CurrentStore.Id, webhookId);
|
||||||
if (webhook is null)
|
if (webhook is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
await _Repo.DeleteWebhook(CurrentStore.Id, webhookId);
|
await _storeRepo.DeleteWebhook(CurrentStore.Id, webhookId);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Webhook successfully deleted";
|
TempData[WellKnownTempData.SuccessMessage] = "Webhook successfully deleted";
|
||||||
return RedirectToAction(nameof(Webhooks), new { storeId = CurrentStore.Id });
|
return RedirectToAction(nameof(Webhooks), new { storeId = CurrentStore.Id });
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return View(nameof(ModifyWebhook), viewModel);
|
return View(nameof(ModifyWebhook), viewModel);
|
||||||
|
|
||||||
await _Repo.CreateWebhook(CurrentStore.Id, viewModel.CreateBlob());
|
await _storeRepo.CreateWebhook(CurrentStore.Id, viewModel.CreateBlob());
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "The webhook has been created";
|
TempData[WellKnownTempData.SuccessMessage] = "The webhook has been created";
|
||||||
return RedirectToAction(nameof(Webhooks), new { storeId });
|
return RedirectToAction(nameof(Webhooks), new { storeId });
|
||||||
}
|
}
|
||||||
@@ -99,12 +99,12 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> ModifyWebhook(string webhookId)
|
public async Task<IActionResult> ModifyWebhook(string webhookId)
|
||||||
{
|
{
|
||||||
var webhook = await _Repo.GetWebhook(CurrentStore.Id, webhookId);
|
var webhook = await _storeRepo.GetWebhook(CurrentStore.Id, webhookId);
|
||||||
if (webhook is null)
|
if (webhook is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
var blob = webhook.GetBlob();
|
var blob = webhook.GetBlob();
|
||||||
var deliveries = await _Repo.GetWebhookDeliveries(CurrentStore.Id, webhookId, 20);
|
var deliveries = await _storeRepo.GetWebhookDeliveries(CurrentStore.Id, webhookId, 20);
|
||||||
return View(nameof(ModifyWebhook), new EditWebhookViewModel(blob)
|
return View(nameof(ModifyWebhook), new EditWebhookViewModel(blob)
|
||||||
{
|
{
|
||||||
Deliveries = deliveries
|
Deliveries = deliveries
|
||||||
@@ -116,13 +116,13 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> ModifyWebhook(string webhookId, EditWebhookViewModel viewModel)
|
public async Task<IActionResult> ModifyWebhook(string webhookId, EditWebhookViewModel viewModel)
|
||||||
{
|
{
|
||||||
var webhook = await _Repo.GetWebhook(CurrentStore.Id, webhookId);
|
var webhook = await _storeRepo.GetWebhook(CurrentStore.Id, webhookId);
|
||||||
if (webhook is null)
|
if (webhook is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return View(nameof(ModifyWebhook), viewModel);
|
return View(nameof(ModifyWebhook), viewModel);
|
||||||
|
|
||||||
await _Repo.UpdateWebhook(CurrentStore.Id, webhookId, viewModel.CreateBlob());
|
await _storeRepo.UpdateWebhook(CurrentStore.Id, webhookId, viewModel.CreateBlob());
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "The webhook has been updated";
|
TempData[WellKnownTempData.SuccessMessage] = "The webhook has been updated";
|
||||||
return RedirectToAction(nameof(Webhooks), new { storeId = CurrentStore.Id });
|
return RedirectToAction(nameof(Webhooks), new { storeId = CurrentStore.Id });
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> TestWebhook(string webhookId)
|
public async Task<IActionResult> TestWebhook(string webhookId)
|
||||||
{
|
{
|
||||||
var webhook = await _Repo.GetWebhook(CurrentStore.Id, webhookId);
|
var webhook = await _storeRepo.GetWebhook(CurrentStore.Id, webhookId);
|
||||||
if (webhook is null)
|
if (webhook is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> TestWebhook(string webhookId, TestWebhookViewModel viewModel, CancellationToken cancellationToken)
|
public async Task<IActionResult> TestWebhook(string webhookId, TestWebhookViewModel viewModel, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var result = await WebhookNotificationManager.TestWebhook(CurrentStore.Id, webhookId, viewModel.Type, cancellationToken);
|
var result = await _webhookNotificationManager.TestWebhook(CurrentStore.Id, webhookId, viewModel.Type, cancellationToken);
|
||||||
|
|
||||||
if (result.Success)
|
if (result.Success)
|
||||||
{
|
{
|
||||||
@@ -160,11 +160,11 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> RedeliverWebhook(string webhookId, string deliveryId)
|
public async Task<IActionResult> RedeliverWebhook(string webhookId, string deliveryId)
|
||||||
{
|
{
|
||||||
var delivery = await _Repo.GetWebhookDelivery(CurrentStore.Id, webhookId, deliveryId);
|
var delivery = await _storeRepo.GetWebhookDelivery(CurrentStore.Id, webhookId, deliveryId);
|
||||||
if (delivery is null)
|
if (delivery is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
var newDeliveryId = await WebhookNotificationManager.Redeliver(deliveryId);
|
var newDeliveryId = await _webhookNotificationManager.Redeliver(deliveryId);
|
||||||
if (newDeliveryId is null)
|
if (newDeliveryId is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> WebhookDelivery(string webhookId, string deliveryId)
|
public async Task<IActionResult> WebhookDelivery(string webhookId, string deliveryId)
|
||||||
{
|
{
|
||||||
var delivery = await _Repo.GetWebhookDelivery(CurrentStore.Id, webhookId, deliveryId);
|
var delivery = await _storeRepo.GetWebhookDelivery(CurrentStore.Id, webhookId, deliveryId);
|
||||||
if (delivery is null)
|
if (delivery is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace BTCPayServer.Controllers
|
|||||||
};
|
};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
model.Link = await service.GetLink(Request.GetAbsoluteUriNoPathBase(), _BtcpayServerOptions.NetworkType);
|
model.Link = await service.GetLink(Request.GetAbsoluteUriNoPathBase(), _btcpayServerOptions.NetworkType);
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
@@ -108,7 +108,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (store == null)
|
if (store == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
var network = _ExplorerProvider.GetNetwork(vm.CryptoCode);
|
var network = _explorerProvider.GetNetwork(vm.CryptoCode);
|
||||||
var oldConf = _handlers.GetLightningConfig(store, network);
|
var oldConf = _handlers.GetLightningConfig(store, network);
|
||||||
|
|
||||||
vm.CanUseInternalNode = CanUseInternalLightning(vm.CryptoCode);
|
vm.CanUseInternalNode = CanUseInternalLightning(vm.CryptoCode);
|
||||||
@@ -159,7 +159,7 @@ namespace BTCPayServer.Controllers
|
|||||||
LUD12Enabled = false
|
LUD12Enabled = false
|
||||||
});
|
});
|
||||||
|
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning node updated.";
|
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning node updated.";
|
||||||
return RedirectToAction(nameof(LightningSettings), new { storeId, cryptoCode });
|
return RedirectToAction(nameof(LightningSettings), new { storeId, cryptoCode });
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ namespace BTCPayServer.Controllers
|
|||||||
return View(vm);
|
return View(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
var network = _ExplorerProvider.GetNetwork(vm.CryptoCode);
|
var network = _explorerProvider.GetNetwork(vm.CryptoCode);
|
||||||
var needUpdate = false;
|
var needUpdate = false;
|
||||||
var blob = store.GetStoreBlob();
|
var blob = store.GetStoreBlob();
|
||||||
blob.LightningDescriptionTemplate = vm.LightningDescriptionTemplate ?? string.Empty;
|
blob.LightningDescriptionTemplate = vm.LightningDescriptionTemplate ?? string.Empty;
|
||||||
@@ -277,7 +277,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
if (needUpdate)
|
if (needUpdate)
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning settings successfully updated.";
|
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning settings successfully updated.";
|
||||||
}
|
}
|
||||||
@@ -296,7 +296,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (cryptoCode == null)
|
if (cryptoCode == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
var network = _ExplorerProvider.GetNetwork(cryptoCode);
|
var network = _explorerProvider.GetNetwork(cryptoCode);
|
||||||
var lightning = GetConfig<LightningPaymentMethodConfig>(PaymentTypes.LN.GetPaymentMethodId(cryptoCode), store);
|
var lightning = GetConfig<LightningPaymentMethodConfig>(PaymentTypes.LN.GetPaymentMethodId(cryptoCode), store);
|
||||||
if (lightning == null)
|
if (lightning == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
@@ -309,7 +309,7 @@ namespace BTCPayServer.Controllers
|
|||||||
storeBlob.SetExcluded(PaymentTypes.LNURL.GetPaymentMethodId(network.CryptoCode), true);
|
storeBlob.SetExcluded(PaymentTypes.LNURL.GetPaymentMethodId(network.CryptoCode), true);
|
||||||
}
|
}
|
||||||
store.SetStoreBlob(storeBlob);
|
store.SetStoreBlob(storeBlob);
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning payments are now {(enabled ? "enabled" : "disabled")} for this store.";
|
TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning payments are now {(enabled ? "enabled" : "disabled")} for this store.";
|
||||||
|
|
||||||
return RedirectToAction(nameof(LightningSettings), new { storeId, cryptoCode });
|
return RedirectToAction(nameof(LightningSettings), new { storeId, cryptoCode });
|
||||||
@@ -317,7 +317,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
private bool CanUseInternalLightning(string cryptoCode)
|
private bool CanUseInternalLightning(string cryptoCode)
|
||||||
{
|
{
|
||||||
return LightningNetworkOptions.InternalLightningByCryptoCode.ContainsKey(cryptoCode.ToUpperInvariant()) && (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)
|
private void SetExistingValues(StoreData store, LightningNodeViewModel vm)
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ namespace BTCPayServer.Controllers
|
|||||||
DerivationSchemeSettings strategy = null;
|
DerivationSchemeSettings strategy = null;
|
||||||
PaymentMethodId paymentMethodId = PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode);
|
PaymentMethodId paymentMethodId = PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode);
|
||||||
BitcoinLikePaymentHandler handler = (BitcoinLikePaymentHandler)_handlers[paymentMethodId];
|
BitcoinLikePaymentHandler handler = (BitcoinLikePaymentHandler)_handlers[paymentMethodId];
|
||||||
var wallet = _WalletProvider.GetWallet(network);
|
var wallet = _walletProvider.GetWallet(network);
|
||||||
if (wallet == null)
|
if (wallet == null)
|
||||||
{
|
{
|
||||||
return NotFound();
|
return NotFound();
|
||||||
@@ -185,8 +185,8 @@ namespace BTCPayServer.Controllers
|
|||||||
ModelState.AddModelError(nameof(vm.DerivationScheme), "Invalid derivation scheme");
|
ModelState.AddModelError(nameof(vm.DerivationScheme), "Invalid derivation scheme");
|
||||||
return View(vm.ViewName, vm);
|
return View(vm.ViewName, vm);
|
||||||
}
|
}
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
_EventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(vm.StoreId, vm.CryptoCode) });
|
_eventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(vm.StoreId, vm.CryptoCode) });
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] = $"Wallet settings for {network.CryptoCode} have been updated.";
|
TempData[WellKnownTempData.SuccessMessage] = $"Wallet settings for {network.CryptoCode} have been updated.";
|
||||||
|
|
||||||
@@ -198,11 +198,11 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
private string ProtectString(string str)
|
private string ProtectString(string str)
|
||||||
{
|
{
|
||||||
return Convert.ToBase64String(DataProtector.Protect(Encoding.UTF8.GetBytes(str)));
|
return Convert.ToBase64String(_dataProtector.Protect(Encoding.UTF8.GetBytes(str)));
|
||||||
}
|
}
|
||||||
private string UnprotectString(string str)
|
private string UnprotectString(string str)
|
||||||
{
|
{
|
||||||
return Encoding.UTF8.GetString(DataProtector.Unprotect(Convert.FromBase64String(str)));
|
return Encoding.UTF8.GetString(_dataProtector.Unprotect(Convert.FromBase64String(str)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{storeId}/onchain/{cryptoCode}/generate/{method?}")]
|
[HttpGet("{storeId}/onchain/{cryptoCode}/generate/{method?}")]
|
||||||
@@ -264,7 +264,7 @@ namespace BTCPayServer.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
var handler = _handlers.GetBitcoinHandler(cryptoCode);
|
var handler = _handlers.GetBitcoinHandler(cryptoCode);
|
||||||
var client = _ExplorerProvider.GetExplorerClient(cryptoCode);
|
var client = _explorerProvider.GetExplorerClient(cryptoCode);
|
||||||
var isImport = method == WalletSetupMethod.Seed;
|
var isImport = method == WalletSetupMethod.Seed;
|
||||||
var vm = new WalletSetupViewModel
|
var vm = new WalletSetupViewModel
|
||||||
{
|
{
|
||||||
@@ -351,7 +351,7 @@ namespace BTCPayServer.Controllers
|
|||||||
IsStored = request.SavePrivateKeys,
|
IsStored = request.SavePrivateKeys,
|
||||||
ReturnUrl = Url.Action(nameof(GenerateWalletConfirm), new { storeId, cryptoCode })
|
ReturnUrl = Url.Action(nameof(GenerateWalletConfirm), new { storeId, cryptoCode })
|
||||||
};
|
};
|
||||||
if (_BTCPayEnv.IsDeveloping)
|
if (_btcPayEnv.IsDeveloping)
|
||||||
{
|
{
|
||||||
GenerateWalletResponse = response;
|
GenerateWalletResponse = response;
|
||||||
}
|
}
|
||||||
@@ -403,7 +403,7 @@ namespace BTCPayServer.Controllers
|
|||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
var excludeFilters = storeBlob.GetExcludedPaymentMethods();
|
var excludeFilters = storeBlob.GetExcludedPaymentMethods();
|
||||||
(bool canUseHotWallet, bool rpcImport) = await CanUseHotWallet();
|
(bool canUseHotWallet, bool rpcImport) = await CanUseHotWallet();
|
||||||
var client = _ExplorerProvider.GetExplorerClient(network);
|
var client = _explorerProvider.GetExplorerClient(network);
|
||||||
|
|
||||||
var handler = _handlers.GetBitcoinHandler(cryptoCode);
|
var handler = _handlers.GetBitcoinHandler(cryptoCode);
|
||||||
var vm = new WalletSettingsViewModel
|
var vm = new WalletSettingsViewModel
|
||||||
@@ -546,14 +546,14 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
store.SetPaymentMethodConfig(handler, derivation);
|
store.SetPaymentMethodConfig(handler, derivation);
|
||||||
|
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(errorMessage))
|
if (string.IsNullOrEmpty(errorMessage))
|
||||||
{
|
{
|
||||||
var successMessage = "Wallet settings successfully updated.";
|
var successMessage = "Wallet settings successfully updated.";
|
||||||
if (enabledChanged)
|
if (enabledChanged)
|
||||||
{
|
{
|
||||||
_EventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(vm.StoreId, vm.CryptoCode) });
|
_eventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(vm.StoreId, vm.CryptoCode) });
|
||||||
successMessage += $" {vm.CryptoCode} on-chain payments are now {(vm.Enabled ? "enabled" : "disabled")} for this store.";
|
successMessage += $" {vm.CryptoCode} on-chain payments are now {(vm.Enabled ? "enabled" : "disabled")} for this store.";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -599,7 +599,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
if (needUpdate)
|
if (needUpdate)
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Payment settings successfully updated";
|
TempData[WellKnownTempData.SuccessMessage] = "Payment settings successfully updated";
|
||||||
|
|
||||||
@@ -644,7 +644,7 @@ namespace BTCPayServer.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var client = _ExplorerProvider.GetExplorerClient(network);
|
var client = _explorerProvider.GetExplorerClient(network);
|
||||||
if (await GetSeed(client, derivation) != null)
|
if (await GetSeed(client, derivation) != null)
|
||||||
{
|
{
|
||||||
var mnemonic = await client.GetMetadataAsync<string>(derivation.AccountDerivation,
|
var mnemonic = await client.GetMetadataAsync<string>(derivation.AccountDerivation,
|
||||||
@@ -746,8 +746,8 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
store.SetPaymentMethodConfig(PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode), null);
|
store.SetPaymentMethodConfig(PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode), null);
|
||||||
|
|
||||||
await _Repo.UpdateStore(store);
|
await _storeRepo.UpdateStore(store);
|
||||||
_EventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(storeId, cryptoCode) });
|
_eventAggregator.Publish(new WalletChangedEvent { WalletId = new WalletId(storeId, cryptoCode) });
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] =
|
TempData[WellKnownTempData.SuccessMessage] =
|
||||||
$"On-Chain payment for {network.CryptoCode} has been removed.";
|
$"On-Chain payment for {network.CryptoCode} has been removed.";
|
||||||
@@ -785,7 +785,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private ActionResult IsAvailable(string cryptoCode, out StoreData store, out BTCPayNetwork network)
|
private ActionResult IsAvailable(string cryptoCode, out StoreData store, out BTCPayNetwork network)
|
||||||
{
|
{
|
||||||
store = HttpContext.GetStoreData();
|
store = HttpContext.GetStoreData();
|
||||||
network = cryptoCode == null ? null : _ExplorerProvider.GetNetwork(cryptoCode);
|
network = cryptoCode == null ? null : _explorerProvider.GetNetwork(cryptoCode);
|
||||||
|
|
||||||
return store == null || network == null ? NotFound() : null;
|
return store == null || network == null ? NotFound() : null;
|
||||||
}
|
}
|
||||||
@@ -820,9 +820,9 @@ namespace BTCPayServer.Controllers
|
|||||||
? ""
|
? ""
|
||||||
: " or imported it into an external wallet. If you no longer have access to your private key (recovery seed), immediately replace the wallet";
|
: " or imported it into an external wallet. If you no longer have access to your private key (recovery seed), immediately replace the wallet";
|
||||||
return
|
return
|
||||||
$"<p class=\"text-danger fw-bold\">Please note that this is a <strong>{Html.Encode(walletType)} wallet</strong>!</p>" +
|
$"<p class=\"text-danger fw-bold\">Please note that this is a <strong>{_html.Encode(walletType)} wallet</strong>!</p>" +
|
||||||
$"<p class=\"text-danger fw-bold\">Do not proceed if you have not backed up the wallet{Html.Encode(additionalText)}.</p>" +
|
$"<p class=\"text-danger fw-bold\">Do not proceed if you have not backed up the wallet{_html.Encode(additionalText)}.</p>" +
|
||||||
$"<p class=\"text-start mb-0\">This action will erase the current wallet data from the server. {Html.Encode(info)}</p>";
|
$"<p class=\"text-start mb-0\">This action will erase the current wallet data from the server. {_html.Encode(info)}</p>";
|
||||||
}
|
}
|
||||||
|
|
||||||
private string WalletReplaceWarning(bool isHotWallet)
|
private string WalletReplaceWarning(bool isHotWallet)
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ namespace BTCPayServer.Controllers
|
|||||||
vm.SetExchangeRates(exchanges, storeBlob.PreferredExchange ?? storeBlob.GetRecommendedExchange());
|
vm.SetExchangeRates(exchanges, storeBlob.PreferredExchange ?? storeBlob.GetRecommendedExchange());
|
||||||
vm.Spread = (double)(storeBlob.Spread * 100m);
|
vm.Spread = (double)(storeBlob.Spread * 100m);
|
||||||
vm.StoreId = CurrentStore.Id;
|
vm.StoreId = CurrentStore.Id;
|
||||||
vm.Script = storeBlob.GetRateRules(_NetworkProvider).ToString();
|
vm.Script = storeBlob.GetRateRules(_networkProvider).ToString();
|
||||||
vm.DefaultScript = storeBlob.GetDefaultRateRules(_NetworkProvider).ToString();
|
vm.DefaultScript = storeBlob.GetDefaultRateRules(_networkProvider).ToString();
|
||||||
vm.AvailableExchanges = exchanges;
|
vm.AvailableExchanges = exchanges;
|
||||||
vm.DefaultCurrencyPairs = storeBlob.GetDefaultCurrencyPairString();
|
vm.DefaultCurrencyPairs = storeBlob.GetDefaultCurrencyPairString();
|
||||||
vm.ShowScripting = storeBlob.RateScripting;
|
vm.ShowScripting = storeBlob.RateScripting;
|
||||||
@@ -71,7 +71,7 @@ namespace BTCPayServer.Controllers
|
|||||||
model.PreferredExchange = model.PreferredExchange.Trim().ToLowerInvariant();
|
model.PreferredExchange = model.PreferredExchange.Trim().ToLowerInvariant();
|
||||||
|
|
||||||
var blob = CurrentStore.GetStoreBlob();
|
var blob = CurrentStore.GetStoreBlob();
|
||||||
model.DefaultScript = blob.GetDefaultRateRules(_NetworkProvider).ToString();
|
model.DefaultScript = blob.GetDefaultRateRules(_networkProvider).ToString();
|
||||||
model.AvailableExchanges = exchanges;
|
model.AvailableExchanges = exchanges;
|
||||||
|
|
||||||
blob.PreferredExchange = model.PreferredExchange;
|
blob.PreferredExchange = model.PreferredExchange;
|
||||||
@@ -102,7 +102,7 @@ namespace BTCPayServer.Controllers
|
|||||||
model.Script = blob.RateScript;
|
model.Script = blob.RateScript;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rules = blob.GetRateRules(_NetworkProvider);
|
rules = blob.GetRateRules(_networkProvider);
|
||||||
|
|
||||||
if (command == "Test")
|
if (command == "Test")
|
||||||
{
|
{
|
||||||
@@ -124,7 +124,7 @@ namespace BTCPayServer.Controllers
|
|||||||
pairs.Add(currencyPair);
|
pairs.Add(currencyPair);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fetchs = _RateFactory.FetchRates(pairs.ToHashSet(), rules, cancellationToken);
|
var fetchs = _rateFactory.FetchRates(pairs.ToHashSet(), rules, cancellationToken);
|
||||||
var testResults = new List<RatesViewModel.TestResultViewModel>();
|
var testResults = new List<RatesViewModel.TestResultViewModel>();
|
||||||
foreach (var fetch in fetchs)
|
foreach (var fetch in fetchs)
|
||||||
{
|
{
|
||||||
@@ -144,7 +144,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
if (CurrentStore.SetStoreBlob(blob))
|
if (CurrentStore.SetStoreBlob(blob))
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(CurrentStore);
|
await _storeRepo.UpdateStore(CurrentStore);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Rate settings updated";
|
TempData[WellKnownTempData.SuccessMessage] = "Rate settings updated";
|
||||||
}
|
}
|
||||||
return RedirectToAction(nameof(Rates), new
|
return RedirectToAction(nameof(Rates), new
|
||||||
@@ -175,16 +175,16 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
var blob = CurrentStore.GetStoreBlob();
|
var blob = CurrentStore.GetStoreBlob();
|
||||||
blob.RateScripting = scripting;
|
blob.RateScripting = scripting;
|
||||||
blob.RateScript = blob.GetDefaultRateRules(_NetworkProvider).ToString();
|
blob.RateScript = blob.GetDefaultRateRules(_networkProvider).ToString();
|
||||||
CurrentStore.SetStoreBlob(blob);
|
CurrentStore.SetStoreBlob(blob);
|
||||||
await _Repo.UpdateStore(CurrentStore);
|
await _storeRepo.UpdateStore(CurrentStore);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Rate rules scripting " + (scripting ? "activated" : "deactivated");
|
TempData[WellKnownTempData.SuccessMessage] = "Rate rules scripting " + (scripting ? "activated" : "deactivated");
|
||||||
return RedirectToAction(nameof(Rates), new { storeId = CurrentStore.Id });
|
return RedirectToAction(nameof(Rates), new { storeId = CurrentStore.Id });
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<RateSourceInfo> GetSupportedExchanges()
|
private IEnumerable<RateSourceInfo> GetSupportedExchanges()
|
||||||
{
|
{
|
||||||
return _RateFactory.RateProviderFactory.AvailableRateProviders
|
return _rateFactory.RateProviderFactory.AvailableRateProviders
|
||||||
.OrderBy(s => s.DisplayName, StringComparer.OrdinalIgnoreCase);
|
.OrderBy(s => s.DisplayName, StringComparer.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,9 +129,9 @@ namespace BTCPayServer.Controllers
|
|||||||
return View("Confirm",
|
return View("Confirm",
|
||||||
roleData.IsUsed is true
|
roleData.IsUsed is true
|
||||||
? new ConfirmModel("Delete role",
|
? new ConfirmModel("Delete role",
|
||||||
$"Unable to proceed: The role <strong>{Html.Encode(roleData.Role)}</strong> is currently assigned to one or more users, it cannot be removed.")
|
$"Unable to proceed: The role <strong>{_html.Encode(roleData.Role)}</strong> is currently assigned to one or more users, it cannot be removed.")
|
||||||
: new ConfirmModel("Delete role",
|
: new ConfirmModel("Delete role",
|
||||||
$"The role <strong>{Html.Encode(roleData.Role)}</strong> will be permanently deleted. Are you sure?",
|
$"The role <strong>{_html.Encode(roleData.Role)}</strong> will be permanently deleted. Are you sure?",
|
||||||
"Delete"));
|
"Delete"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace BTCPayServer.Controllers
|
|||||||
DefaultCurrency = storeBlob.DefaultCurrency,
|
DefaultCurrency = storeBlob.DefaultCurrency,
|
||||||
BOLT11Expiration = (long)storeBlob.RefundBOLT11Expiration.TotalDays,
|
BOLT11Expiration = (long)storeBlob.RefundBOLT11Expiration.TotalDays,
|
||||||
Archived = store.Archived,
|
Archived = store.Archived,
|
||||||
CanDelete = _Repo.CanDeleteStores()
|
CanDelete = _storeRepo.CanDeleteStores()
|
||||||
};
|
};
|
||||||
|
|
||||||
return View(vm);
|
return View(vm);
|
||||||
@@ -177,7 +177,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
if (needUpdate)
|
if (needUpdate)
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(CurrentStore);
|
await _storeRepo.UpdateStore(CurrentStore);
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store successfully updated";
|
TempData[WellKnownTempData.SuccessMessage] = "Store successfully updated";
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,7 @@ namespace BTCPayServer.Controllers
|
|||||||
public async Task<IActionResult> ToggleArchive(string storeId)
|
public async Task<IActionResult> ToggleArchive(string storeId)
|
||||||
{
|
{
|
||||||
CurrentStore.Archived = !CurrentStore.Archived;
|
CurrentStore.Archived = !CurrentStore.Archived;
|
||||||
await _Repo.UpdateStore(CurrentStore);
|
await _storeRepo.UpdateStore(CurrentStore);
|
||||||
|
|
||||||
TempData[WellKnownTempData.SuccessMessage] = CurrentStore.Archived
|
TempData[WellKnownTempData.SuccessMessage] = CurrentStore.Archived
|
||||||
? "The store has been archived and will no longer appear in the stores list by default."
|
? "The store has been archived and will no longer appear in the stores list by default."
|
||||||
@@ -216,7 +216,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> DeleteStorePost(string storeId)
|
public async Task<IActionResult> DeleteStorePost(string storeId)
|
||||||
{
|
{
|
||||||
await _Repo.DeleteStore(CurrentStore.Id);
|
await _storeRepo.DeleteStore(CurrentStore.Id);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store successfully deleted.";
|
TempData[WellKnownTempData.SuccessMessage] = "Store successfully deleted.";
|
||||||
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
@@ -264,7 +264,7 @@ namespace BTCPayServer.Controllers
|
|||||||
vm.DisplayExpirationTimer = (int)storeBlob.DisplayExpirationTimer.TotalMinutes;
|
vm.DisplayExpirationTimer = (int)storeBlob.DisplayExpirationTimer.TotalMinutes;
|
||||||
vm.ReceiptOptions = CheckoutAppearanceViewModel.ReceiptOptionsViewModel.Create(storeBlob.ReceiptOptions);
|
vm.ReceiptOptions = CheckoutAppearanceViewModel.ReceiptOptionsViewModel.Create(storeBlob.ReceiptOptions);
|
||||||
vm.AutoDetectLanguage = storeBlob.AutoDetectLanguage;
|
vm.AutoDetectLanguage = storeBlob.AutoDetectLanguage;
|
||||||
vm.SetLanguages(_LangService, storeBlob.DefaultLang);
|
vm.SetLanguages(_langService, storeBlob.DefaultLang);
|
||||||
|
|
||||||
return View(vm);
|
return View(vm);
|
||||||
}
|
}
|
||||||
@@ -282,7 +282,7 @@ namespace BTCPayServer.Controllers
|
|||||||
CurrentStore.SetDefaultPaymentId(defaultPaymentMethodId);
|
CurrentStore.SetDefaultPaymentId(defaultPaymentMethodId);
|
||||||
}
|
}
|
||||||
SetCryptoCurrencies(model, CurrentStore);
|
SetCryptoCurrencies(model, CurrentStore);
|
||||||
model.SetLanguages(_LangService, model.DefaultLang);
|
model.SetLanguages(_langService, model.DefaultLang);
|
||||||
model.PaymentMethodCriteria ??= new List<PaymentMethodCriteriaViewModel>();
|
model.PaymentMethodCriteria ??= new List<PaymentMethodCriteriaViewModel>();
|
||||||
for (var index = 0; index < model.PaymentMethodCriteria.Count; index++)
|
for (var index = 0; index < model.PaymentMethodCriteria.Count; index++)
|
||||||
{
|
{
|
||||||
@@ -409,7 +409,7 @@ namespace BTCPayServer.Controllers
|
|||||||
}
|
}
|
||||||
if (needUpdate)
|
if (needUpdate)
|
||||||
{
|
{
|
||||||
await _Repo.UpdateStore(CurrentStore);
|
await _storeRepo.UpdateStore(CurrentStore);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store successfully updated";
|
TempData[WellKnownTempData.SuccessMessage] = "Store successfully updated";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,8 +435,8 @@ namespace BTCPayServer.Controllers
|
|||||||
var defaultChoice = defaultPaymentId is not null ? defaultPaymentId.FindNearest(enabled) : null;
|
var defaultChoice = defaultPaymentId is not null ? defaultPaymentId.FindNearest(enabled) : null;
|
||||||
if (defaultChoice is null)
|
if (defaultChoice is null)
|
||||||
{
|
{
|
||||||
defaultChoice = enabled.FirstOrDefault(e => e == PaymentTypes.CHAIN.GetPaymentMethodId(_NetworkProvider.DefaultNetwork.CryptoCode)) ??
|
defaultChoice = enabled.FirstOrDefault(e => e == PaymentTypes.CHAIN.GetPaymentMethodId(_networkProvider.DefaultNetwork.CryptoCode)) ??
|
||||||
enabled.FirstOrDefault(e => e == PaymentTypes.LN.GetPaymentMethodId(_NetworkProvider.DefaultNetwork.CryptoCode)) ??
|
enabled.FirstOrDefault(e => e == PaymentTypes.LN.GetPaymentMethodId(_networkProvider.DefaultNetwork.CryptoCode)) ??
|
||||||
enabled.FirstOrDefault();
|
enabled.FirstOrDefault();
|
||||||
}
|
}
|
||||||
var choices = GetEnabledPaymentMethodChoices(storeData);
|
var choices = GetEnabledPaymentMethodChoices(storeData);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace BTCPayServer.Controllers
|
|||||||
public async Task<IActionResult> ListTokens()
|
public async Task<IActionResult> ListTokens()
|
||||||
{
|
{
|
||||||
var model = new TokensViewModel();
|
var model = new TokensViewModel();
|
||||||
var tokens = await _TokenRepository.GetTokensByStoreIdAsync(CurrentStore.Id);
|
var tokens = await _tokenRepository.GetTokensByStoreIdAsync(CurrentStore.Id);
|
||||||
model.StoreNotConfigured = StoreNotConfigured;
|
model.StoreNotConfigured = StoreNotConfigured;
|
||||||
model.Tokens = tokens.Select(t => new TokenViewModel()
|
model.Tokens = tokens.Select(t => new TokenViewModel()
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@ namespace BTCPayServer.Controllers
|
|||||||
Id = t.Value
|
Id = t.Value
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
|
||||||
model.ApiKey = (await _TokenRepository.GetLegacyAPIKeys(CurrentStore.Id)).FirstOrDefault();
|
model.ApiKey = (await _tokenRepository.GetLegacyAPIKeys(CurrentStore.Id)).FirstOrDefault();
|
||||||
if (model.ApiKey == null)
|
if (model.ApiKey == null)
|
||||||
model.EncodedApiKey = "*API Key*";
|
model.EncodedApiKey = "*API Key*";
|
||||||
else
|
else
|
||||||
@@ -44,20 +44,20 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> RevokeToken(string tokenId)
|
public async Task<IActionResult> RevokeToken(string tokenId)
|
||||||
{
|
{
|
||||||
var token = await _TokenRepository.GetToken(tokenId);
|
var token = await _tokenRepository.GetToken(tokenId);
|
||||||
if (token == null || token.StoreId != CurrentStore.Id)
|
if (token == null || token.StoreId != CurrentStore.Id)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
return View("Confirm", new ConfirmModel("Revoke the token", $"The access token with the label <strong>{Html.Encode(token.Label)}</strong> will be revoked. Do you wish to continue?", "Revoke"));
|
return View("Confirm", new ConfirmModel("Revoke the token", $"The access token with the label <strong>{_html.Encode(token.Label)}</strong> will be revoked. Do you wish to continue?", "Revoke"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("{storeId}/tokens/{tokenId}/revoke")]
|
[HttpPost("{storeId}/tokens/{tokenId}/revoke")]
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> RevokeTokenConfirm(string tokenId)
|
public async Task<IActionResult> RevokeTokenConfirm(string tokenId)
|
||||||
{
|
{
|
||||||
var token = await _TokenRepository.GetToken(tokenId);
|
var token = await _tokenRepository.GetToken(tokenId);
|
||||||
if (token == null ||
|
if (token == null ||
|
||||||
token.StoreId != CurrentStore.Id ||
|
token.StoreId != CurrentStore.Id ||
|
||||||
!await _TokenRepository.DeleteToken(tokenId))
|
!await _tokenRepository.DeleteToken(tokenId))
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "Failure to revoke this token.";
|
TempData[WellKnownTempData.ErrorMessage] = "Failure to revoke this token.";
|
||||||
else
|
else
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Token revoked";
|
TempData[WellKnownTempData.SuccessMessage] = "Token revoked";
|
||||||
@@ -68,7 +68,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> ShowToken(string tokenId)
|
public async Task<IActionResult> ShowToken(string tokenId)
|
||||||
{
|
{
|
||||||
var token = await _TokenRepository.GetToken(tokenId);
|
var token = await _tokenRepository.GetToken(tokenId);
|
||||||
if (token == null || token.StoreId != CurrentStore.Id)
|
if (token == null || token.StoreId != CurrentStore.Id)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
return View(token);
|
return View(token);
|
||||||
@@ -101,7 +101,7 @@ namespace BTCPayServer.Controllers
|
|||||||
var store = model.StoreId switch
|
var store = model.StoreId switch
|
||||||
{
|
{
|
||||||
null => CurrentStore,
|
null => CurrentStore,
|
||||||
_ => await _Repo.FindStore(storeId, userId)
|
_ => await _storeRepo.FindStore(storeId, userId)
|
||||||
};
|
};
|
||||||
if (store == null)
|
if (store == null)
|
||||||
return Challenge(AuthenticationSchemes.Cookie);
|
return Challenge(AuthenticationSchemes.Cookie);
|
||||||
@@ -114,18 +114,18 @@ namespace BTCPayServer.Controllers
|
|||||||
string? pairingCode = null;
|
string? pairingCode = null;
|
||||||
if (model.PublicKey == null)
|
if (model.PublicKey == null)
|
||||||
{
|
{
|
||||||
tokenRequest.PairingCode = await _TokenRepository.CreatePairingCodeAsync();
|
tokenRequest.PairingCode = await _tokenRepository.CreatePairingCodeAsync();
|
||||||
await _TokenRepository.UpdatePairingCode(new PairingCodeEntity()
|
await _tokenRepository.UpdatePairingCode(new PairingCodeEntity()
|
||||||
{
|
{
|
||||||
Id = tokenRequest.PairingCode,
|
Id = tokenRequest.PairingCode,
|
||||||
Label = model.Label,
|
Label = model.Label,
|
||||||
});
|
});
|
||||||
await _TokenRepository.PairWithStoreAsync(tokenRequest.PairingCode, store.Id);
|
await _tokenRepository.PairWithStoreAsync(tokenRequest.PairingCode, store.Id);
|
||||||
pairingCode = tokenRequest.PairingCode;
|
pairingCode = tokenRequest.PairingCode;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pairingCode = (await _TokenController.Tokens(tokenRequest)).Data[0].PairingCode;
|
pairingCode = (await _tokenController.Tokens(tokenRequest)).Data[0].PairingCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
GeneratedPairingCode = pairingCode;
|
GeneratedPairingCode = pairingCode;
|
||||||
@@ -147,7 +147,7 @@ namespace BTCPayServer.Controllers
|
|||||||
ViewBag.HidePublicKey = true;
|
ViewBag.HidePublicKey = true;
|
||||||
ViewBag.ShowStores = true;
|
ViewBag.ShowStores = true;
|
||||||
ViewBag.ShowMenu = false;
|
ViewBag.ShowMenu = false;
|
||||||
var stores = (await _Repo.GetStoresByUserId(userId)).Where(data => data.HasPermission(userId, Policies.CanModifyStoreSettings)).ToArray();
|
var stores = (await _storeRepo.GetStoresByUserId(userId)).Where(data => data.HasPermission(userId, Policies.CanModifyStoreSettings)).ToArray();
|
||||||
|
|
||||||
model.Stores = new SelectList(stores, nameof(CurrentStore.Id), nameof(CurrentStore.StoreName));
|
model.Stores = new SelectList(stores, nameof(CurrentStore.Id), nameof(CurrentStore.StoreName));
|
||||||
if (!model.Stores.Any())
|
if (!model.Stores.Any())
|
||||||
@@ -174,12 +174,12 @@ namespace BTCPayServer.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
if (command == "revoke")
|
if (command == "revoke")
|
||||||
{
|
{
|
||||||
await _TokenRepository.RevokeLegacyAPIKeys(CurrentStore.Id);
|
await _tokenRepository.RevokeLegacyAPIKeys(CurrentStore.Id);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "API Key revoked";
|
TempData[WellKnownTempData.SuccessMessage] = "API Key revoked";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _TokenRepository.GenerateLegacyAPIKey(CurrentStore.Id);
|
await _tokenRepository.GenerateLegacyAPIKey(CurrentStore.Id);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "API Key re-generated";
|
TempData[WellKnownTempData.SuccessMessage] = "API Key re-generated";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,20 +202,20 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
if (selectedStore != null)
|
if (selectedStore != null)
|
||||||
{
|
{
|
||||||
var store = await _Repo.FindStore(selectedStore, userId);
|
var store = await _storeRepo.FindStore(selectedStore, userId);
|
||||||
if (store == null)
|
if (store == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
HttpContext.SetStoreData(store);
|
HttpContext.SetStoreData(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
var pairing = await _TokenRepository.GetPairingAsync(pairingCode);
|
var pairing = await _tokenRepository.GetPairingAsync(pairingCode);
|
||||||
if (pairing == null)
|
if (pairing == null)
|
||||||
{
|
{
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "Unknown pairing code";
|
TempData[WellKnownTempData.ErrorMessage] = "Unknown pairing code";
|
||||||
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
|
|
||||||
var stores = (await _Repo.GetStoresByUserId(userId)).Where(data => data.HasPermission(userId, Policies.CanModifyStoreSettings)).ToArray();
|
var stores = (await _storeRepo.GetStoresByUserId(userId)).Where(data => data.HasPermission(userId, Policies.CanModifyStoreSettings)).ToArray();
|
||||||
return View(new PairingModel
|
return View(new PairingModel
|
||||||
{
|
{
|
||||||
Id = pairing.Id,
|
Id = pairing.Id,
|
||||||
@@ -237,11 +237,11 @@ namespace BTCPayServer.Controllers
|
|||||||
if (pairingCode == null)
|
if (pairingCode == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
var store = CurrentStore;
|
var store = CurrentStore;
|
||||||
var pairing = await _TokenRepository.GetPairingAsync(pairingCode);
|
var pairing = await _tokenRepository.GetPairingAsync(pairingCode);
|
||||||
if (store == null || pairing == null)
|
if (store == null || pairing == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
var pairingResult = await _TokenRepository.PairWithStoreAsync(pairingCode, store.Id);
|
var pairingResult = await _tokenRepository.PairWithStoreAsync(pairingCode, store.Id);
|
||||||
if (pairingResult == PairingResult.Complete || pairingResult == PairingResult.Partial)
|
if (pairingResult == PairingResult.Complete || pairingResult == PairingResult.Partial)
|
||||||
{
|
{
|
||||||
var excludeFilter = store.GetStoreBlob().GetExcludedPaymentMethods();
|
var excludeFilter = store.GetStoreBlob().GetExcludedPaymentMethods();
|
||||||
|
|||||||
@@ -36,16 +36,16 @@ namespace BTCPayServer.Controllers
|
|||||||
return View(vm);
|
return View(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
var roles = await _Repo.GetStoreRoles(CurrentStore.Id);
|
var roles = await _storeRepo.GetStoreRoles(CurrentStore.Id);
|
||||||
if (roles.All(role => role.Id != vm.Role))
|
if (roles.All(role => role.Id != vm.Role))
|
||||||
{
|
{
|
||||||
ModelState.AddModelError(nameof(vm.Role), "Invalid role");
|
ModelState.AddModelError(nameof(vm.Role), "Invalid role");
|
||||||
return View(vm);
|
return View(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
var user = await _UserManager.FindByEmailAsync(vm.Email);
|
var user = await _userManager.FindByEmailAsync(vm.Email);
|
||||||
var isExistingUser = user is not null;
|
var isExistingUser = user is not null;
|
||||||
var isExistingStoreUser = isExistingUser && await _Repo.GetStoreUser(storeId, user!.Id) is not null;
|
var isExistingStoreUser = isExistingUser && await _storeRepo.GetStoreUser(storeId, user!.Id) is not null;
|
||||||
var successInfo = string.Empty;
|
var successInfo = string.Empty;
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
@@ -58,11 +58,11 @@ namespace BTCPayServer.Controllers
|
|||||||
Created = DateTimeOffset.UtcNow
|
Created = DateTimeOffset.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
var result = await _UserManager.CreateAsync(user);
|
var result = await _userManager.CreateAsync(user);
|
||||||
if (result.Succeeded)
|
if (result.Succeeded)
|
||||||
{
|
{
|
||||||
var tcs = new TaskCompletionSource<Uri>();
|
var tcs = new TaskCompletionSource<Uri>();
|
||||||
var currentUser = await _UserManager.GetUserAsync(HttpContext.User);
|
var currentUser = await _userManager.GetUserAsync(HttpContext.User);
|
||||||
|
|
||||||
_eventAggregator.Publish(new UserRegisteredEvent
|
_eventAggregator.Publish(new UserRegisteredEvent
|
||||||
{
|
{
|
||||||
@@ -87,11 +87,11 @@ namespace BTCPayServer.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var roleId = await _Repo.ResolveStoreRoleId(storeId, vm.Role);
|
var roleId = await _storeRepo.ResolveStoreRoleId(storeId, vm.Role);
|
||||||
var action = isExistingUser
|
var action = isExistingUser
|
||||||
? isExistingStoreUser ? "updated" : "added"
|
? isExistingStoreUser ? "updated" : "added"
|
||||||
: "invited";
|
: "invited";
|
||||||
if (await _Repo.AddOrUpdateStoreUser(CurrentStore.Id, user.Id, roleId))
|
if (await _storeRepo.AddOrUpdateStoreUser(CurrentStore.Id, user.Id, roleId))
|
||||||
{
|
{
|
||||||
TempData.SetStatusMessageModel(new StatusMessageModel
|
TempData.SetStatusMessageModel(new StatusMessageModel
|
||||||
{
|
{
|
||||||
@@ -110,14 +110,14 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> UpdateStoreUser(string storeId, string userId, StoreUsersViewModel.StoreUserViewModel vm)
|
public async Task<IActionResult> UpdateStoreUser(string storeId, string userId, StoreUsersViewModel.StoreUserViewModel vm)
|
||||||
{
|
{
|
||||||
var roleId = await _Repo.ResolveStoreRoleId(storeId, vm.Role);
|
var roleId = await _storeRepo.ResolveStoreRoleId(storeId, vm.Role);
|
||||||
var storeUsers = await _Repo.GetStoreUsers(storeId);
|
var storeUsers = await _storeRepo.GetStoreUsers(storeId);
|
||||||
var user = storeUsers.First(user => user.Id == userId);
|
var user = storeUsers.First(user => user.Id == userId);
|
||||||
var isOwner = user.StoreRole.Id == StoreRoleId.Owner.Id;
|
var isOwner = user.StoreRole.Id == StoreRoleId.Owner.Id;
|
||||||
var isLastOwner = isOwner && storeUsers.Count(u => u.StoreRole.Id == StoreRoleId.Owner.Id) == 1;
|
var isLastOwner = isOwner && storeUsers.Count(u => u.StoreRole.Id == StoreRoleId.Owner.Id) == 1;
|
||||||
if (isLastOwner && roleId != StoreRoleId.Owner)
|
if (isLastOwner && roleId != StoreRoleId.Owner)
|
||||||
TempData[WellKnownTempData.ErrorMessage] = $"User {user.Email} is the last owner. Their role cannot be changed.";
|
TempData[WellKnownTempData.ErrorMessage] = $"User {user.Email} is the last owner. Their role cannot be changed.";
|
||||||
else if (await _Repo.AddOrUpdateStoreUser(storeId, userId, roleId))
|
else if (await _storeRepo.AddOrUpdateStoreUser(storeId, userId, roleId))
|
||||||
TempData[WellKnownTempData.SuccessMessage] = $"The role of {user.Email} has been changed to {vm.Role}.";
|
TempData[WellKnownTempData.SuccessMessage] = $"The role of {user.Email} has been changed to {vm.Role}.";
|
||||||
return RedirectToAction(nameof(StoreUsers), new { storeId, userId });
|
return RedirectToAction(nameof(StoreUsers), new { storeId, userId });
|
||||||
}
|
}
|
||||||
@@ -126,7 +126,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public async Task<IActionResult> DeleteStoreUser(string storeId, string userId)
|
public async Task<IActionResult> DeleteStoreUser(string storeId, string userId)
|
||||||
{
|
{
|
||||||
if (await _Repo.RemoveStoreUser(storeId, userId))
|
if (await _storeRepo.RemoveStoreUser(storeId, userId))
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "User removed successfully.";
|
TempData[WellKnownTempData.SuccessMessage] = "User removed successfully.";
|
||||||
else
|
else
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "Removing this user would result in the store having no owner.";
|
TempData[WellKnownTempData.ErrorMessage] = "Removing this user would result in the store having no owner.";
|
||||||
@@ -135,7 +135,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
private async Task FillUsers(StoreUsersViewModel vm)
|
private async Task FillUsers(StoreUsersViewModel vm)
|
||||||
{
|
{
|
||||||
var users = await _Repo.GetStoreUsers(CurrentStore.Id);
|
var users = await _storeRepo.GetStoreUsers(CurrentStore.Id);
|
||||||
vm.StoreId = CurrentStore.Id;
|
vm.StoreId = CurrentStore.Id;
|
||||||
vm.Users = users.Select(u => new StoreUsersViewModel.StoreUserViewModel()
|
vm.Users = users.Select(u => new StoreUsersViewModel.StoreUserViewModel()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,10 +33,9 @@ namespace BTCPayServer.Controllers
|
|||||||
public partial class UIStoresController : Controller
|
public partial class UIStoresController : Controller
|
||||||
{
|
{
|
||||||
public UIStoresController(
|
public UIStoresController(
|
||||||
IServiceProvider serviceProvider,
|
|
||||||
BTCPayServerOptions btcpayServerOptions,
|
BTCPayServerOptions btcpayServerOptions,
|
||||||
BTCPayServerEnvironment btcpayEnv,
|
BTCPayServerEnvironment btcpayEnv,
|
||||||
StoreRepository repo,
|
StoreRepository storeRepo,
|
||||||
TokenRepository tokenRepo,
|
TokenRepository tokenRepo,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
BitpayAccessTokenController tokenController,
|
BitpayAccessTokenController tokenController,
|
||||||
@@ -55,88 +54,78 @@ namespace BTCPayServer.Controllers
|
|||||||
IOptions<LightningNetworkOptions> lightningNetworkOptions,
|
IOptions<LightningNetworkOptions> lightningNetworkOptions,
|
||||||
IOptions<ExternalServicesOptions> externalServiceOptions,
|
IOptions<ExternalServicesOptions> externalServiceOptions,
|
||||||
IHtmlHelper html,
|
IHtmlHelper html,
|
||||||
LightningClientFactoryService lightningClientFactoryService,
|
|
||||||
EmailSenderFactory emailSenderFactory,
|
EmailSenderFactory emailSenderFactory,
|
||||||
WalletFileParsers onChainWalletParsers,
|
WalletFileParsers onChainWalletParsers,
|
||||||
SettingsRepository settingsRepository,
|
SettingsRepository settingsRepository,
|
||||||
EventAggregator eventAggregator)
|
EventAggregator eventAggregator)
|
||||||
{
|
{
|
||||||
_RateFactory = rateFactory;
|
_rateFactory = rateFactory;
|
||||||
_Repo = repo;
|
_storeRepo = storeRepo;
|
||||||
_TokenRepository = tokenRepo;
|
_tokenRepository = tokenRepo;
|
||||||
_UserManager = userManager;
|
_userManager = userManager;
|
||||||
_LangService = langService;
|
_langService = langService;
|
||||||
_TokenController = tokenController;
|
_tokenController = tokenController;
|
||||||
_WalletProvider = walletProvider;
|
_walletProvider = walletProvider;
|
||||||
_handlers = paymentMethodHandlerDictionary;
|
_handlers = paymentMethodHandlerDictionary;
|
||||||
_policiesSettings = policiesSettings;
|
_policiesSettings = policiesSettings;
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
_appService = appService;
|
_appService = appService;
|
||||||
_fileService = fileService;
|
_fileService = fileService;
|
||||||
DataProtector = dataProtector.CreateProtector("ConfigProtector");
|
_networkProvider = networkProvider;
|
||||||
WebhookNotificationManager = webhookNotificationManager;
|
_explorerProvider = explorerProvider;
|
||||||
LightningNetworkOptions = lightningNetworkOptions.Value;
|
_btcpayServerOptions = btcpayServerOptions;
|
||||||
_EventAggregator = eventAggregator;
|
_btcPayEnv = btcpayEnv;
|
||||||
_NetworkProvider = networkProvider;
|
|
||||||
_ExplorerProvider = explorerProvider;
|
|
||||||
_ServiceProvider = serviceProvider;
|
|
||||||
_BtcpayServerOptions = btcpayServerOptions;
|
|
||||||
_BTCPayEnv = btcpayEnv;
|
|
||||||
_externalServiceOptions = externalServiceOptions;
|
_externalServiceOptions = externalServiceOptions;
|
||||||
_lightningClientFactoryService = lightningClientFactoryService;
|
|
||||||
_emailSenderFactory = emailSenderFactory;
|
_emailSenderFactory = emailSenderFactory;
|
||||||
_onChainWalletParsers = onChainWalletParsers;
|
_onChainWalletParsers = onChainWalletParsers;
|
||||||
_settingsRepository = settingsRepository;
|
_settingsRepository = settingsRepository;
|
||||||
_eventAggregator = eventAggregator;
|
_eventAggregator = eventAggregator;
|
||||||
Html = html;
|
_html = html;
|
||||||
|
_dataProtector = dataProtector.CreateProtector("ConfigProtector");
|
||||||
|
_webhookNotificationManager = webhookNotificationManager;
|
||||||
|
_lightningNetworkOptions = lightningNetworkOptions.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly BTCPayServerOptions _BtcpayServerOptions;
|
private readonly BTCPayServerOptions _btcpayServerOptions;
|
||||||
readonly BTCPayServerEnvironment _BTCPayEnv;
|
private readonly BTCPayServerEnvironment _btcPayEnv;
|
||||||
readonly IServiceProvider _ServiceProvider;
|
private readonly BTCPayNetworkProvider _networkProvider;
|
||||||
readonly BTCPayNetworkProvider _NetworkProvider;
|
private readonly BTCPayWalletProvider _walletProvider;
|
||||||
readonly BTCPayWalletProvider _WalletProvider;
|
private readonly BitpayAccessTokenController _tokenController;
|
||||||
readonly BitpayAccessTokenController _TokenController;
|
private readonly StoreRepository _storeRepo;
|
||||||
readonly StoreRepository _Repo;
|
private readonly TokenRepository _tokenRepository;
|
||||||
readonly TokenRepository _TokenRepository;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
readonly UserManager<ApplicationUser> _UserManager;
|
private readonly RateFetcher _rateFactory;
|
||||||
readonly RateFetcher _RateFactory;
|
private readonly SettingsRepository _settingsRepository;
|
||||||
readonly SettingsRepository _settingsRepository;
|
private readonly ExplorerClientProvider _explorerProvider;
|
||||||
private readonly ExplorerClientProvider _ExplorerProvider;
|
private readonly LanguageService _langService;
|
||||||
private readonly LanguageService _LangService;
|
|
||||||
private readonly PaymentMethodHandlerDictionary _handlers;
|
private readonly PaymentMethodHandlerDictionary _handlers;
|
||||||
private readonly PoliciesSettings _policiesSettings;
|
private readonly PoliciesSettings _policiesSettings;
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
private readonly AppService _appService;
|
private readonly AppService _appService;
|
||||||
private readonly IFileService _fileService;
|
private readonly IFileService _fileService;
|
||||||
private readonly EventAggregator _EventAggregator;
|
|
||||||
private readonly IOptions<ExternalServicesOptions> _externalServiceOptions;
|
private readonly IOptions<ExternalServicesOptions> _externalServiceOptions;
|
||||||
private readonly LightningClientFactoryService _lightningClientFactoryService;
|
|
||||||
private readonly EmailSenderFactory _emailSenderFactory;
|
private readonly EmailSenderFactory _emailSenderFactory;
|
||||||
private readonly WalletFileParsers _onChainWalletParsers;
|
private readonly WalletFileParsers _onChainWalletParsers;
|
||||||
private readonly EventAggregator _eventAggregator;
|
private readonly EventAggregator _eventAggregator;
|
||||||
|
private readonly IHtmlHelper _html;
|
||||||
|
private readonly WebhookSender _webhookNotificationManager;
|
||||||
|
private readonly LightningNetworkOptions _lightningNetworkOptions;
|
||||||
|
private readonly IDataProtector _dataProtector;
|
||||||
|
|
||||||
public string? GeneratedPairingCode { get; set; }
|
public string? GeneratedPairingCode { get; set; }
|
||||||
public WebhookSender WebhookNotificationManager { get; }
|
|
||||||
public IHtmlHelper Html { get; }
|
|
||||||
public LightningNetworkOptions LightningNetworkOptions { get; }
|
|
||||||
public IDataProtector DataProtector { get; }
|
|
||||||
|
|
||||||
[TempData]
|
[TempData]
|
||||||
public bool StoreNotConfigured
|
private bool StoreNotConfigured { get; set; }
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
[HttpGet("{storeId}/index")]
|
[HttpGet("{storeId}/index")]
|
||||||
public async Task<IActionResult> Index(string storeId)
|
public async Task<IActionResult> Index(string storeId)
|
||||||
{
|
{
|
||||||
var userId = _UserManager.GetUserId(User);
|
var userId = _userManager.GetUserId(User);
|
||||||
if (string.IsNullOrEmpty(userId))
|
if (string.IsNullOrEmpty(userId))
|
||||||
return Forbid();
|
return Forbid();
|
||||||
|
|
||||||
var store = await _Repo.FindStore(storeId);
|
var store = await _storeRepo.FindStore(storeId);
|
||||||
if (store is null)
|
if (store is null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
@@ -171,7 +160,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
if (User.Identity?.AuthenticationType != AuthenticationSchemes.Cookie)
|
if (User.Identity?.AuthenticationType != AuthenticationSchemes.Cookie)
|
||||||
return null;
|
return null;
|
||||||
return _UserManager.GetUserId(User);
|
return _userManager.GetUserId(User);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user