mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-17 22:14:26 +01:00
Rename UI controllers
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
|
|
||||||
<li class="nav-item"><a asp-controller="TestExtension" asp-action="Index" class="nav-link js-scroll-trigger" >Dear Nicolas Dorier</a></li>
|
<li class="nav-item"><a asp-controller="UITestExtension" asp-action="Index" class="nav-link js-scroll-trigger" >Dear Nicolas Dorier</a></li>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
Assert.Equal(3, invoice.CryptoInfo.Length);
|
Assert.Equal(3, invoice.CryptoInfo.Length);
|
||||||
|
|
||||||
var controller = user.GetController<StoresController>();
|
var controller = user.GetController<UIStoresController>();
|
||||||
var lightningVm = (LightningNodeViewModel)Assert.IsType<ViewResult>(await controller.SetupLightningNode(user.StoreId, cryptoCode)).Model;
|
var lightningVm = (LightningNodeViewModel)Assert.IsType<ViewResult>(await controller.SetupLightningNode(user.StoreId, cryptoCode)).Model;
|
||||||
Assert.True(lightningVm.Enabled);
|
Assert.True(lightningVm.Enabled);
|
||||||
var response = await controller.SetLightningNodeEnabled(user.StoreId, cryptoCode, false);
|
var response = await controller.SetLightningNodeEnabled(user.StoreId, cryptoCode, false);
|
||||||
@@ -200,7 +200,7 @@ namespace BTCPayServer.Tests
|
|||||||
invoice = user.BitPay.GetInvoice(invoice.Id);
|
invoice = user.BitPay.GetInvoice(invoice.Id);
|
||||||
Assert.Equal("paid", invoice.Status);
|
Assert.Equal("paid", invoice.Status);
|
||||||
});
|
});
|
||||||
var wallet = tester.PayTester.GetController<WalletsController>();
|
var wallet = tester.PayTester.GetController<UIWalletsController>();
|
||||||
var psbt = wallet.CreatePSBT(btcNetwork, onchainBTC,
|
var psbt = wallet.CreatePSBT(btcNetwork, onchainBTC,
|
||||||
new WalletSendModel()
|
new WalletSendModel()
|
||||||
{
|
{
|
||||||
@@ -310,7 +310,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
Assert.Single(invoice.CryptoInfo); // Only BTC should be presented
|
Assert.Single(invoice.CryptoInfo); // Only BTC should be presented
|
||||||
|
|
||||||
var controller = tester.PayTester.GetController<InvoiceController>(null);
|
var controller = tester.PayTester.GetController<UIInvoiceController>(null);
|
||||||
var checkout =
|
var checkout =
|
||||||
(Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id)
|
(Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id)
|
||||||
.GetAwaiter().GetResult()).Value;
|
.GetAwaiter().GetResult()).Value;
|
||||||
@@ -493,7 +493,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
Assert.Single(invoice.CryptoInfo); // Only BTC should be presented
|
Assert.Single(invoice.CryptoInfo); // Only BTC should be presented
|
||||||
|
|
||||||
var controller = tester.PayTester.GetController<InvoiceController>(null);
|
var controller = tester.PayTester.GetController<UIInvoiceController>(null);
|
||||||
var checkout =
|
var checkout =
|
||||||
(Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id, null)
|
(Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id, null)
|
||||||
.GetAwaiter().GetResult()).Value;
|
.GetAwaiter().GetResult()).Value;
|
||||||
@@ -555,7 +555,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.False((bool)((JValue)invoice.ExceptionStatus).Value);
|
Assert.False((bool)((JValue)invoice.ExceptionStatus).Value);
|
||||||
});
|
});
|
||||||
|
|
||||||
controller = tester.PayTester.GetController<InvoiceController>(null);
|
controller = tester.PayTester.GetController<UIInvoiceController>(null);
|
||||||
checkout = (Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id, "LTC")
|
checkout = (Models.InvoicingModels.PaymentModel)((JsonResult)controller.GetStatus(invoice.Id, "LTC")
|
||||||
.GetAwaiter().GetResult()).Value;
|
.GetAwaiter().GetResult()).Value;
|
||||||
Assert.Equal(2, checkout.AvailableCryptos.Count);
|
Assert.Equal(2, checkout.AvailableCryptos.Count);
|
||||||
@@ -608,7 +608,7 @@ namespace BTCPayServer.Tests
|
|||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
user.RegisterDerivationScheme("LTC");
|
user.RegisterDerivationScheme("LTC");
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
vm.AppName = "test";
|
vm.AppName = "test";
|
||||||
vm.SelectedAppType = AppType.PointOfSale.ToString();
|
vm.SelectedAppType = AppType.PointOfSale.ToString();
|
||||||
@@ -639,7 +639,7 @@ donation:
|
|||||||
.IsType<ViewResult>(apps.UpdatePointOfSale(app.Id)).Model);
|
.IsType<ViewResult>(apps.UpdatePointOfSale(app.Id)).Model);
|
||||||
Assert.Equal("hello", vmpos.Title);
|
Assert.Equal("hello", vmpos.Title);
|
||||||
|
|
||||||
var publicApps = user.GetController<AppsPublicController>();
|
var publicApps = user.GetController<UIAppsPublicController>();
|
||||||
var vmview =
|
var vmview =
|
||||||
Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
||||||
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
||||||
@@ -673,7 +673,7 @@ donation:
|
|||||||
// testing custom amount
|
// testing custom amount
|
||||||
var action = Assert.IsType<RedirectToActionResult>(publicApps
|
var action = Assert.IsType<RedirectToActionResult>(publicApps
|
||||||
.ViewPointOfSale(app.Id, PosViewType.Cart, 6.6m, null, null, null, null, "donation").Result);
|
.ViewPointOfSale(app.Id, PosViewType.Cart, 6.6m, null, null, null, null, "donation").Result);
|
||||||
Assert.Equal(nameof(InvoiceController.Checkout), action.ActionName);
|
Assert.Equal(nameof(UIInvoiceController.Checkout), action.ActionName);
|
||||||
invoices = user.BitPay.GetInvoices();
|
invoices = user.BitPay.GetInvoices();
|
||||||
var donationInvoice = invoices.Single(i => i.Price == 6.6m);
|
var donationInvoice = invoices.Single(i => i.Price == 6.6m);
|
||||||
Assert.NotNull(donationInvoice);
|
Assert.NotNull(donationInvoice);
|
||||||
@@ -711,7 +711,7 @@ donation:
|
|||||||
custom: true
|
custom: true
|
||||||
";
|
";
|
||||||
Assert.IsType<RedirectToActionResult>(apps.UpdatePointOfSale(app.Id, vmpos).Result);
|
Assert.IsType<RedirectToActionResult>(apps.UpdatePointOfSale(app.Id, vmpos).Result);
|
||||||
publicApps = user.GetController<AppsPublicController>();
|
publicApps = user.GetController<UIAppsPublicController>();
|
||||||
vmview = Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
vmview = Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
||||||
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
||||||
Assert.Equal(test.Code, vmview.CurrencyCode);
|
Assert.Equal(test.Code, vmview.CurrencyCode);
|
||||||
@@ -768,7 +768,7 @@ noninventoryitem:
|
|||||||
Assert.NotNull(inventoryItemInvoice);
|
Assert.NotNull(inventoryItemInvoice);
|
||||||
|
|
||||||
//let's mark the inventoryitem invoice as invalid, this should return the item to back in stock
|
//let's mark the inventoryitem invoice as invalid, this should return the item to back in stock
|
||||||
var controller = tester.PayTester.GetController<InvoiceController>(user.UserId, user.StoreId);
|
var controller = tester.PayTester.GetController<UIInvoiceController>(user.UserId, user.StoreId);
|
||||||
var appService = tester.PayTester.GetService<AppService>();
|
var appService = tester.PayTester.GetService<AppService>();
|
||||||
var eventAggregator = tester.PayTester.GetService<EventAggregator>();
|
var eventAggregator = tester.PayTester.GetService<EventAggregator>();
|
||||||
Assert.IsType<JsonResult>(await controller.ChangeInvoiceState(inventoryItemInvoice.Id, "invalid"));
|
Assert.IsType<JsonResult>(await controller.ChangeInvoiceState(inventoryItemInvoice.Id, "invalid"));
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
user.RegisterDerivationScheme("USDT");
|
user.RegisterDerivationScheme("USDT");
|
||||||
|
|
||||||
Assert.Equal(3, Assert.IsType<ListWalletsViewModel>(Assert.IsType<ViewResult>(await user.GetController<WalletsController>().ListWallets()).Model).Wallets.Count);
|
Assert.Equal(3, Assert.IsType<ListWalletsViewModel>(Assert.IsType<ViewResult>(await user.GetController<UIWalletsController>().ListWallets()).Model).Wallets.Count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ namespace BTCPayServer.Tests
|
|||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
var user2 = tester.NewAccount();
|
var user2 = tester.NewAccount();
|
||||||
await user2.GrantAccessAsync();
|
await user2.GrantAccessAsync();
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var apps2 = user2.GetController<AppsController>();
|
var apps2 = user2.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
Assert.NotNull(vm.SelectedAppType);
|
Assert.NotNull(vm.SelectedAppType);
|
||||||
Assert.Null(vm.AppName);
|
Assert.Null(vm.AppName);
|
||||||
@@ -72,7 +72,7 @@ namespace BTCPayServer.Tests
|
|||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
vm.AppName = "test";
|
vm.AppName = "test";
|
||||||
vm.SelectedAppType = AppType.Crowdfund.ToString();
|
vm.SelectedAppType = AppType.Crowdfund.ToString();
|
||||||
@@ -90,8 +90,8 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
Assert.IsType<RedirectToActionResult>(apps.UpdateCrowdfund(app.Id, crowdfundViewModel, "save").Result);
|
Assert.IsType<RedirectToActionResult>(apps.UpdateCrowdfund(app.Id, crowdfundViewModel, "save").Result);
|
||||||
|
|
||||||
var anonAppPubsController = tester.PayTester.GetController<AppsPublicController>();
|
var anonAppPubsController = tester.PayTester.GetController<UIAppsPublicController>();
|
||||||
var publicApps = user.GetController<AppsPublicController>();
|
var publicApps = user.GetController<UIAppsPublicController>();
|
||||||
|
|
||||||
Assert.IsType<NotFoundObjectResult>(await anonAppPubsController.ContributeToCrowdfund(app.Id, new ContributeToCrowdfund()
|
Assert.IsType<NotFoundObjectResult>(await anonAppPubsController.ContributeToCrowdfund(app.Id, new ContributeToCrowdfund()
|
||||||
{
|
{
|
||||||
@@ -162,7 +162,7 @@ namespace BTCPayServer.Tests
|
|||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
await user.SetNetworkFeeMode(NetworkFeeMode.Never);
|
await user.SetNetworkFeeMode(NetworkFeeMode.Never);
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
vm.AppName = "test";
|
vm.AppName = "test";
|
||||||
vm.SelectedAppType = AppType.Crowdfund.ToString();
|
vm.SelectedAppType = AppType.Crowdfund.ToString();
|
||||||
@@ -182,8 +182,8 @@ namespace BTCPayServer.Tests
|
|||||||
crowdfundViewModel.EnforceTargetAmount = true;
|
crowdfundViewModel.EnforceTargetAmount = true;
|
||||||
Assert.IsType<RedirectToActionResult>(apps.UpdateCrowdfund(app.Id, crowdfundViewModel, "save").Result);
|
Assert.IsType<RedirectToActionResult>(apps.UpdateCrowdfund(app.Id, crowdfundViewModel, "save").Result);
|
||||||
|
|
||||||
var anonAppPubsController = tester.PayTester.GetController<AppsPublicController>();
|
var anonAppPubsController = tester.PayTester.GetController<UIAppsPublicController>();
|
||||||
var publicApps = user.GetController<AppsPublicController>();
|
var publicApps = user.GetController<UIAppsPublicController>();
|
||||||
|
|
||||||
var model = Assert.IsType<ViewCrowdfundViewModel>(Assert
|
var model = Assert.IsType<ViewCrowdfundViewModel>(Assert
|
||||||
.IsType<ViewResult>(publicApps.ViewCrowdfund(app.Id, String.Empty).Result).Model);
|
.IsType<ViewResult>(publicApps.ViewCrowdfund(app.Id, String.Empty).Result).Model);
|
||||||
|
|||||||
@@ -1208,7 +1208,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
testCases.ForEach(tuple =>
|
testCases.ForEach(tuple =>
|
||||||
{
|
{
|
||||||
Assert.Equal(tuple.expectedOutput, InvoiceController.PosDataParser.ParsePosData(tuple.input));
|
Assert.Equal(tuple.expectedOutput, UIInvoiceController.PosDataParser.ParsePosData(tuple.input));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
@@ -977,7 +977,7 @@ namespace BTCPayServer.Tests
|
|||||||
var paymentTestPaymentRequest = await client.CreatePaymentRequest(user.StoreId,
|
var paymentTestPaymentRequest = await client.CreatePaymentRequest(user.StoreId,
|
||||||
new CreatePaymentRequestRequest() { Amount = 0.1m, Currency = "BTC", Title = "Payment test title" });
|
new CreatePaymentRequestRequest() { Amount = 0.1m, Currency = "BTC", Title = "Payment test title" });
|
||||||
|
|
||||||
var invoiceId = Assert.IsType<string>(Assert.IsType<OkObjectResult>(await user.GetController<PaymentRequestController>()
|
var invoiceId = Assert.IsType<string>(Assert.IsType<OkObjectResult>(await user.GetController<UIPaymentRequestController>()
|
||||||
.PayPaymentRequest(paymentTestPaymentRequest.Id, false)).Value);
|
.PayPaymentRequest(paymentTestPaymentRequest.Id, false)).Value);
|
||||||
var invoice = user.BitPay.GetInvoice(invoiceId);
|
var invoice = user.BitPay.GetInvoice(invoiceId);
|
||||||
await tester.WaitForEvent<InvoiceDataChangedEvent>(async () =>
|
await tester.WaitForEvent<InvoiceDataChangedEvent>(async () =>
|
||||||
@@ -1332,7 +1332,7 @@ namespace BTCPayServer.Tests
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
Assert.EndsWith($"/i/{newInvoice.Id}", newInvoice.CheckoutLink);
|
Assert.EndsWith($"/i/{newInvoice.Id}", newInvoice.CheckoutLink);
|
||||||
var controller = tester.PayTester.GetController<InvoiceController>(user.UserId, user.StoreId);
|
var controller = tester.PayTester.GetController<UIInvoiceController>(user.UserId, user.StoreId);
|
||||||
var model = (PaymentModel)((ViewResult)await controller.Checkout(newInvoice.Id)).Model;
|
var model = (PaymentModel)((ViewResult)await controller.Checkout(newInvoice.Id)).Model;
|
||||||
Assert.Equal("it-IT", model.DefaultLang);
|
Assert.Equal("it-IT", model.DefaultLang);
|
||||||
Assert.Equal("http://toto.com/lol", model.MerchantRefLink);
|
Assert.Equal("http://toto.com/lol", model.MerchantRefLink);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace BTCPayServer.Tests
|
|||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
vm.AppName = "test";
|
vm.AppName = "test";
|
||||||
vm.SelectedAppType = AppType.PointOfSale.ToString();
|
vm.SelectedAppType = AppType.PointOfSale.ToString();
|
||||||
@@ -52,7 +52,7 @@ donation:
|
|||||||
Assert.IsType<RedirectToActionResult>(apps.UpdatePointOfSale(app.Id, vmpos).Result);
|
Assert.IsType<RedirectToActionResult>(apps.UpdatePointOfSale(app.Id, vmpos).Result);
|
||||||
vmpos = Assert.IsType<UpdatePointOfSaleViewModel>(Assert
|
vmpos = Assert.IsType<UpdatePointOfSaleViewModel>(Assert
|
||||||
.IsType<ViewResult>(apps.UpdatePointOfSale(app.Id)).Model);
|
.IsType<ViewResult>(apps.UpdatePointOfSale(app.Id)).Model);
|
||||||
var publicApps = user.GetController<AppsPublicController>();
|
var publicApps = user.GetController<UIAppsPublicController>();
|
||||||
var vmview =
|
var vmview =
|
||||||
Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
Assert.IsType<ViewPointOfSaleViewModel>(Assert
|
||||||
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
.IsType<ViewResult>(publicApps.ViewPointOfSale(app.Id, PosViewType.Cart).Result).Model);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.Equal("paid", invoice.Status);
|
Assert.Equal("paid", invoice.Status);
|
||||||
});
|
});
|
||||||
|
|
||||||
var walletController = user.GetController<WalletsController>();
|
var walletController = user.GetController<UIWalletsController>();
|
||||||
var walletId = new WalletId(user.StoreId, "BTC");
|
var walletId = new WalletId(user.StoreId, "BTC");
|
||||||
var sendDestination = new Key().PubKey.Hash.GetAddress(user.SupportedNetwork.NBitcoinNetwork).ToString();
|
var sendDestination = new Key().PubKey.Hash.GetAddress(user.SupportedNetwork.NBitcoinNetwork).ToString();
|
||||||
var sendModel = new WalletSendModel()
|
var sendModel = new WalletSendModel()
|
||||||
|
|||||||
@@ -469,7 +469,7 @@ namespace BTCPayServer.Tests
|
|||||||
changeIndex = i;
|
changeIndex = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
var derivationSchemeSettings = alice.GetController<WalletsController>().GetDerivationSchemeSettings(new WalletId(alice.StoreId, "BTC"));
|
var derivationSchemeSettings = alice.GetController<UIWalletsController>().GetDerivationSchemeSettings(new WalletId(alice.StoreId, "BTC"));
|
||||||
var signingAccount = derivationSchemeSettings.GetSigningAccountKeySettings();
|
var signingAccount = derivationSchemeSettings.GetSigningAccountKeySettings();
|
||||||
psbt.SignAll(derivationSchemeSettings.AccountDerivation, alice.GenerateWalletResponseV.AccountHDKey, signingAccount.GetRootedKeyPath());
|
psbt.SignAll(derivationSchemeSettings.AccountDerivation, alice.GenerateWalletResponseV.AccountHDKey, signingAccount.GetRootedKeyPath());
|
||||||
using var fakeServer = new FakeServer();
|
using var fakeServer = new FakeServer();
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
await user2.GrantAccessAsync();
|
await user2.GrantAccessAsync();
|
||||||
|
|
||||||
var paymentRequestController = user.GetController<PaymentRequestController>();
|
var paymentRequestController = user.GetController<UIPaymentRequestController>();
|
||||||
var guestpaymentRequestController = user2.GetController<PaymentRequestController>();
|
var guestpaymentRequestController = user2.GetController<UIPaymentRequestController>();
|
||||||
|
|
||||||
var request = new UpdatePaymentRequestViewModel
|
var request = new UpdatePaymentRequestViewModel
|
||||||
{
|
{
|
||||||
@@ -104,7 +104,7 @@ namespace BTCPayServer.Tests
|
|||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
var paymentRequestController = user.GetController<PaymentRequestController>();
|
var paymentRequestController = user.GetController<UIPaymentRequestController>();
|
||||||
|
|
||||||
Assert.IsType<NotFoundResult>(
|
Assert.IsType<NotFoundResult>(
|
||||||
await paymentRequestController.PayPaymentRequest(Guid.NewGuid().ToString()));
|
await paymentRequestController.PayPaymentRequest(Guid.NewGuid().ToString()));
|
||||||
@@ -132,7 +132,7 @@ namespace BTCPayServer.Tests
|
|||||||
await paymentRequestController.PayPaymentRequest(response.Value.ToString()));
|
await paymentRequestController.PayPaymentRequest(response.Value.ToString()));
|
||||||
|
|
||||||
Assert.Equal("Checkout", actionResult.ActionName);
|
Assert.Equal("Checkout", actionResult.ActionName);
|
||||||
Assert.Equal("Invoice", actionResult.ControllerName);
|
Assert.Equal("UIInvoice", actionResult.ControllerName);
|
||||||
Assert.Contains(actionResult.RouteValues,
|
Assert.Contains(actionResult.RouteValues,
|
||||||
pair => pair.Key == "Id" && pair.Value.ToString() == invoiceId);
|
pair => pair.Key == "Id" && pair.Value.ToString() == invoiceId);
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
var paymentRequestController = user.GetController<PaymentRequestController>();
|
var paymentRequestController = user.GetController<UIPaymentRequestController>();
|
||||||
|
|
||||||
Assert.IsType<NotFoundResult>(await
|
Assert.IsType<NotFoundResult>(await
|
||||||
paymentRequestController.CancelUnpaidPendingInvoice(Guid.NewGuid().ToString(), false));
|
paymentRequestController.CancelUnpaidPendingInvoice(Guid.NewGuid().ToString(), false));
|
||||||
@@ -209,7 +209,7 @@ namespace BTCPayServer.Tests
|
|||||||
await paymentRequestController.PayPaymentRequest(response.Value.ToString()));
|
await paymentRequestController.PayPaymentRequest(response.Value.ToString()));
|
||||||
|
|
||||||
Assert.Equal("Checkout", actionResult.ActionName);
|
Assert.Equal("Checkout", actionResult.ActionName);
|
||||||
Assert.Equal("Invoice", actionResult.ControllerName);
|
Assert.Equal("UIInvoice", actionResult.ControllerName);
|
||||||
Assert.Contains(actionResult.RouteValues,
|
Assert.Contains(actionResult.RouteValues,
|
||||||
pair => pair.Key == "Id" && pair.Value.ToString() == invoiceId);
|
pair => pair.Key == "Id" && pair.Value.ToString() == invoiceId);
|
||||||
|
|
||||||
|
|||||||
@@ -150,8 +150,8 @@ namespace BTCPayServer.Tests
|
|||||||
s.Driver.AssertNoError();
|
s.Driver.AssertNoError();
|
||||||
Assert.Contains("/login", s.Driver.Url);
|
Assert.Contains("/login", s.Driver.Url);
|
||||||
|
|
||||||
s.GoToUrl("/Manage/Index");
|
s.GoToUrl("/UIManage/Index");
|
||||||
Assert.Contains("ReturnUrl=%2FManage%2FIndex", s.Driver.Url);
|
Assert.Contains("ReturnUrl=%2FUIManage%2FIndex", s.Driver.Url);
|
||||||
|
|
||||||
// We should be redirected to login
|
// We should be redirected to login
|
||||||
//Same User Can Log Back In
|
//Same User Can Log Back In
|
||||||
@@ -160,7 +160,7 @@ namespace BTCPayServer.Tests
|
|||||||
s.Driver.FindElement(By.Id("LoginButton")).Click();
|
s.Driver.FindElement(By.Id("LoginButton")).Click();
|
||||||
|
|
||||||
// We should be redirected to invoice
|
// We should be redirected to invoice
|
||||||
Assert.EndsWith("/Manage/Index", s.Driver.Url);
|
Assert.EndsWith("/UIManage/Index", s.Driver.Url);
|
||||||
|
|
||||||
// Should not be able to reach server settings
|
// Should not be able to reach server settings
|
||||||
s.GoToUrl("/server/users");
|
s.GoToUrl("/server/users");
|
||||||
@@ -668,6 +668,8 @@ namespace BTCPayServer.Tests
|
|||||||
s.Driver.FindElement(By.Id("Amount")).SendKeys("700");
|
s.Driver.FindElement(By.Id("Amount")).SendKeys("700");
|
||||||
s.Driver.FindElement(By.Id("Currency")).SendKeys("BTC");
|
s.Driver.FindElement(By.Id("Currency")).SendKeys("BTC");
|
||||||
s.Driver.FindElement(By.Id("SaveButton")).Click();
|
s.Driver.FindElement(By.Id("SaveButton")).Click();
|
||||||
|
var aaa = s.Driver.PageSource;
|
||||||
|
var url = s.Driver.Url;
|
||||||
s.Driver.FindElement(By.Id("ViewAppButton")).Click();
|
s.Driver.FindElement(By.Id("ViewAppButton")).Click();
|
||||||
s.Driver.SwitchTo().Window(s.Driver.WindowHandles.Last());
|
s.Driver.SwitchTo().Window(s.Driver.WindowHandles.Last());
|
||||||
Assert.Equal("Amount due", s.Driver.FindElement(By.CssSelector("[data-test='amount-due-title']")).Text);
|
Assert.Equal("Amount due", s.Driver.FindElement(By.CssSelector("[data-test='amount-due-title']")).Text);
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
public async Task<BTCPayServerClient> CreateClient(params string[] permissions)
|
public async Task<BTCPayServerClient> CreateClient(params string[] permissions)
|
||||||
{
|
{
|
||||||
var manageController = parent.PayTester.GetController<ManageController>(UserId, StoreId, IsAdmin);
|
var manageController = parent.PayTester.GetController<UIManageController>(UserId, StoreId, IsAdmin);
|
||||||
var x = Assert.IsType<RedirectToActionResult>(await manageController.AddApiKey(
|
var x = Assert.IsType<RedirectToActionResult>(await manageController.AddApiKey(
|
||||||
new ManageController.AddApiKeyViewModel()
|
new UIManageController.AddApiKeyViewModel()
|
||||||
{
|
{
|
||||||
PermissionValues = permissions.Select(s =>
|
PermissionValues = permissions.Select(s =>
|
||||||
{
|
{
|
||||||
@@ -82,11 +82,11 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
var stores = p.Where(permission => !string.IsNullOrEmpty(permission.Scope))
|
var stores = p.Where(permission => !string.IsNullOrEmpty(permission.Scope))
|
||||||
.Select(permission => permission.Scope).ToList();
|
.Select(permission => permission.Scope).ToList();
|
||||||
return new ManageController.AddApiKeyViewModel.PermissionValueItem()
|
return new UIManageController.AddApiKeyViewModel.PermissionValueItem()
|
||||||
{
|
{
|
||||||
Permission = p.Key,
|
Permission = p.Key,
|
||||||
Forbidden = false,
|
Forbidden = false,
|
||||||
StoreMode = stores.Any() ? ManageController.AddApiKeyViewModel.ApiKeyStoreMode.Specific : ManageController.AddApiKeyViewModel.ApiKeyStoreMode.AllStores,
|
StoreMode = stores.Any() ? UIManageController.AddApiKeyViewModel.ApiKeyStoreMode.Specific : UIManageController.AddApiKeyViewModel.ApiKeyStoreMode.AllStores,
|
||||||
SpecificStores = stores,
|
SpecificStores = stores,
|
||||||
Value = true
|
Value = true
|
||||||
};
|
};
|
||||||
@@ -109,7 +109,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
await RegisterAsync(isAdmin);
|
await RegisterAsync(isAdmin);
|
||||||
await CreateStoreAsync();
|
await CreateStoreAsync();
|
||||||
var store = GetController<StoresController>();
|
var store = GetController<UIStoresController>();
|
||||||
var pairingCode = BitPay.RequestClientAuthorization("test", Facade.Merchant);
|
var pairingCode = BitPay.RequestClientAuthorization("test", Facade.Merchant);
|
||||||
Assert.IsType<ViewResult>(await store.RequestPairing(pairingCode.ToString()));
|
Assert.IsType<ViewResult>(await store.RequestPairing(pairingCode.ToString()));
|
||||||
await store.Pair(pairingCode.ToString(), StoreId);
|
await store.Pair(pairingCode.ToString(), StoreId);
|
||||||
@@ -135,7 +135,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
public async Task ModifyPayment(Action<PaymentMethodsViewModel> modify)
|
public async Task ModifyPayment(Action<PaymentMethodsViewModel> modify)
|
||||||
{
|
{
|
||||||
var storeController = GetController<StoresController>();
|
var storeController = GetController<UIStoresController>();
|
||||||
var response = storeController.PaymentMethods();
|
var response = storeController.PaymentMethods();
|
||||||
PaymentMethodsViewModel paymentMethods = (PaymentMethodsViewModel)((ViewResult)response).Model;
|
PaymentMethodsViewModel paymentMethods = (PaymentMethodsViewModel)((ViewResult)response).Model;
|
||||||
modify(paymentMethods);
|
modify(paymentMethods);
|
||||||
@@ -144,7 +144,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
public async Task ModifyWalletSettings(Action<WalletSettingsViewModel> modify)
|
public async Task ModifyWalletSettings(Action<WalletSettingsViewModel> modify)
|
||||||
{
|
{
|
||||||
var storeController = GetController<StoresController>();
|
var storeController = GetController<UIStoresController>();
|
||||||
var response = await storeController.WalletSettings(StoreId, "BTC");
|
var response = await storeController.WalletSettings(StoreId, "BTC");
|
||||||
WalletSettingsViewModel walletSettings = (WalletSettingsViewModel)((ViewResult)response).Model;
|
WalletSettingsViewModel walletSettings = (WalletSettingsViewModel)((ViewResult)response).Model;
|
||||||
modify(walletSettings);
|
modify(walletSettings);
|
||||||
@@ -153,7 +153,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
public async Task ModifyOnchainPaymentSettings(Action<WalletSettingsViewModel> modify)
|
public async Task ModifyOnchainPaymentSettings(Action<WalletSettingsViewModel> modify)
|
||||||
{
|
{
|
||||||
var storeController = GetController<StoresController>();
|
var storeController = GetController<UIStoresController>();
|
||||||
var response = await storeController.WalletSettings(StoreId, "BTC");
|
var response = await storeController.WalletSettings(StoreId, "BTC");
|
||||||
WalletSettingsViewModel walletSettings = (WalletSettingsViewModel)((ViewResult)response).Model;
|
WalletSettingsViewModel walletSettings = (WalletSettingsViewModel)((ViewResult)response).Model;
|
||||||
modify(walletSettings);
|
modify(walletSettings);
|
||||||
@@ -172,7 +172,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
await RegisterAsync();
|
await RegisterAsync();
|
||||||
}
|
}
|
||||||
var store = GetController<UserStoresController>();
|
var store = GetController<UIUserStoresController>();
|
||||||
await store.CreateStore(new CreateStoreViewModel { Name = "Test Store" });
|
await store.CreateStore(new CreateStoreViewModel { Name = "Test Store" });
|
||||||
StoreId = store.CreatedStoreId;
|
StoreId = store.CreatedStoreId;
|
||||||
parent.Stores.Add(StoreId);
|
parent.Stores.Add(StoreId);
|
||||||
@@ -191,7 +191,7 @@ namespace BTCPayServer.Tests
|
|||||||
if (StoreId is null)
|
if (StoreId is null)
|
||||||
await CreateStoreAsync();
|
await CreateStoreAsync();
|
||||||
SupportedNetwork = parent.NetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode);
|
SupportedNetwork = parent.NetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode);
|
||||||
var store = parent.PayTester.GetController<StoresController>(UserId, StoreId, true);
|
var store = parent.PayTester.GetController<UIStoresController>(UserId, StoreId, true);
|
||||||
|
|
||||||
var generateRequest = new WalletSetupRequest
|
var generateRequest = new WalletSetupRequest
|
||||||
{
|
{
|
||||||
@@ -215,7 +215,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
private async Task RegisterAsync(bool isAdmin = false)
|
private async Task RegisterAsync(bool isAdmin = false)
|
||||||
{
|
{
|
||||||
var account = parent.PayTester.GetController<AccountController>();
|
var account = parent.PayTester.GetController<UIAccountController>();
|
||||||
RegisterDetails = new RegisterViewModel()
|
RegisterDetails = new RegisterViewModel()
|
||||||
{
|
{
|
||||||
Email = Guid.NewGuid() + "@toto.com",
|
Email = Guid.NewGuid() + "@toto.com",
|
||||||
@@ -271,7 +271,7 @@ namespace BTCPayServer.Tests
|
|||||||
}
|
}
|
||||||
public async Task RegisterLightningNodeAsync(string cryptoCode, LightningConnectionType? connectionType, bool isMerchant = true, string storeId = null)
|
public async Task RegisterLightningNodeAsync(string cryptoCode, LightningConnectionType? connectionType, bool isMerchant = true, string storeId = null)
|
||||||
{
|
{
|
||||||
var storeController = GetController<StoresController>();
|
var storeController = GetController<UIStoresController>();
|
||||||
|
|
||||||
var connectionString = parent.GetLightningConnectionString(connectionType, isMerchant);
|
var connectionString = parent.GetLightningConnectionString(connectionType, isMerchant);
|
||||||
var nodeType = connectionString == LightningSupportedPaymentMethod.InternalNode ? LightningNodeType.Internal : LightningNodeType.Custom;
|
var nodeType = connectionString == LightningSupportedPaymentMethod.InternalNode ? LightningNodeType.Internal : LightningNodeType.Custom;
|
||||||
@@ -285,7 +285,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
public async Task RegisterInternalLightningNodeAsync(string cryptoCode, string storeId = null)
|
public async Task RegisterInternalLightningNodeAsync(string cryptoCode, string storeId = null)
|
||||||
{
|
{
|
||||||
var storeController = GetController<StoresController>();
|
var storeController = GetController<UIStoresController>();
|
||||||
var vm = new LightningNodeViewModel { ConnectionString = "", LightningNodeType = LightningNodeType.Internal, SkipPortTest = true };
|
var vm = new LightningNodeViewModel { ConnectionString = "", LightningNodeType = LightningNodeType.Internal, SkipPortTest = true };
|
||||||
await storeController.SetupLightningNode(storeId ?? StoreId,
|
await storeController.SetupLightningNode(storeId ?? StoreId,
|
||||||
vm, "save", cryptoCode);
|
vm, "save", cryptoCode);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace BTCPayServer.Tests
|
|||||||
await tester.StartAsync();
|
await tester.StartAsync();
|
||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
var controller = tester.PayTester.GetController<ServerController>(user.UserId, user.StoreId);
|
var controller = tester.PayTester.GetController<UIServerController>(user.UserId, user.StoreId);
|
||||||
var azureBlobStorageConfiguration = Assert.IsType<AzureBlobStorageConfiguration>(Assert
|
var azureBlobStorageConfiguration = Assert.IsType<AzureBlobStorageConfiguration>(Assert
|
||||||
.IsType<ViewResult>(await controller.StorageProvider(StorageProvider.AzureBlobStorage.ToString()))
|
.IsType<ViewResult>(await controller.StorageProvider(StorageProvider.AzureBlobStorage.ToString()))
|
||||||
.Model);
|
.Model);
|
||||||
@@ -362,7 +362,7 @@ namespace BTCPayServer.Tests
|
|||||||
private static async Task<decimal> CreateInvoice(ServerTester tester, TestAccount user, string exchange,
|
private static async Task<decimal> CreateInvoice(ServerTester tester, TestAccount user, string exchange,
|
||||||
string currency = "USD")
|
string currency = "USD")
|
||||||
{
|
{
|
||||||
var storeController = user.GetController<StoresController>();
|
var storeController = user.GetController<UIStoresController>();
|
||||||
var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model;
|
var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model;
|
||||||
vm.PreferredExchange = exchange;
|
vm.PreferredExchange = exchange;
|
||||||
await storeController.Rates(vm);
|
await storeController.Rates(vm);
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ namespace BTCPayServer.Tests
|
|||||||
var acc = tester.NewAccount();
|
var acc = tester.NewAccount();
|
||||||
|
|
||||||
var sresp = Assert
|
var sresp = Assert
|
||||||
.IsType<JsonResult>(await tester.PayTester.GetController<HomeController>(acc.UserId, acc.StoreId)
|
.IsType<JsonResult>(await tester.PayTester.GetController<UIHomeController>(acc.UserId, acc.StoreId)
|
||||||
.Swagger()).Value.ToJson();
|
.Swagger()).Value.ToJson();
|
||||||
JObject swagger = JObject.Parse(sresp);
|
JObject swagger = JObject.Parse(sresp);
|
||||||
var schema = JSchema.Parse(File.ReadAllText(TestUtils.GetTestDataFullPath("OpenAPI-Specification-schema.json")));
|
var schema = JSchema.Parse(File.ReadAllText(TestUtils.GetTestDataFullPath("OpenAPI-Specification-schema.json")));
|
||||||
@@ -173,13 +173,13 @@ namespace BTCPayServer.Tests
|
|||||||
"BTCPay Server supports authenticating and authorizing users through an API Key that is generated by them. Send the API Key as a header value to Authorization with the format: `token {token}`. For a smoother experience, you can generate a url that redirects users to an API key creation screen.\n\n The following permissions are available to the context of the user creating the API Key:\n\n#OTHERPERMISSIONS#\n\nThe following permissions are available if the user is an administrator:\n\n#SERVERPERMISSIONS#\n\nThe following permissions applies to all stores of the user, you can limit to a specific store with the following format: `btcpay.store.cancreateinvoice:6HSHAEU4iYWtjxtyRs9KyPjM9GAQp8kw2T9VWbGG1FnZ`:\n\n#STOREPERMISSIONS#\n\nNote that API Keys only limits permission of a user and can never expand it. If an API Key has the permission `btcpay.server.canmodifyserversettings` but that the user account creating this API Key is not administrator, the API Key will not be able to modify the server settings.\nSome permissions may include other permissions, see [this operation](#operation/permissionsMetadata).\n";
|
"BTCPay Server supports authenticating and authorizing users through an API Key that is generated by them. Send the API Key as a header value to Authorization with the format: `token {token}`. For a smoother experience, you can generate a url that redirects users to an API key creation screen.\n\n The following permissions are available to the context of the user creating the API Key:\n\n#OTHERPERMISSIONS#\n\nThe following permissions are available if the user is an administrator:\n\n#SERVERPERMISSIONS#\n\nThe following permissions applies to all stores of the user, you can limit to a specific store with the following format: `btcpay.store.cancreateinvoice:6HSHAEU4iYWtjxtyRs9KyPjM9GAQp8kw2T9VWbGG1FnZ`:\n\n#STOREPERMISSIONS#\n\nNote that API Keys only limits permission of a user and can never expand it. If an API Key has the permission `btcpay.server.canmodifyserversettings` but that the user account creating this API Key is not administrator, the API Key will not be able to modify the server settings.\nSome permissions may include other permissions, see [this operation](#operation/permissionsMetadata).\n";
|
||||||
|
|
||||||
var storePolicies =
|
var storePolicies =
|
||||||
ManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
UIManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
||||||
Policies.IsStorePolicy(pair.Key) && !pair.Key.EndsWith(":", StringComparison.InvariantCulture));
|
Policies.IsStorePolicy(pair.Key) && !pair.Key.EndsWith(":", StringComparison.InvariantCulture));
|
||||||
var serverPolicies =
|
var serverPolicies =
|
||||||
ManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
UIManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
||||||
Policies.IsServerPolicy(pair.Key));
|
Policies.IsServerPolicy(pair.Key));
|
||||||
var otherPolicies =
|
var otherPolicies =
|
||||||
ManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
UIManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.Where(pair =>
|
||||||
!Policies.IsStorePolicy(pair.Key) && !Policies.IsServerPolicy(pair.Key));
|
!Policies.IsStorePolicy(pair.Key) && !Policies.IsServerPolicy(pair.Key));
|
||||||
|
|
||||||
description = description.Replace("#OTHERPERMISSIONS#",
|
description = description.Replace("#OTHERPERMISSIONS#",
|
||||||
@@ -191,7 +191,7 @@ namespace BTCPayServer.Tests
|
|||||||
TestLogs.LogInformation(description);
|
TestLogs.LogInformation(description);
|
||||||
|
|
||||||
var sresp = Assert
|
var sresp = Assert
|
||||||
.IsType<JsonResult>(await tester.PayTester.GetController<HomeController>(acc.UserId, acc.StoreId)
|
.IsType<JsonResult>(await tester.PayTester.GetController<UIHomeController>(acc.UserId, acc.StoreId)
|
||||||
.Swagger()).Value.ToJson();
|
.Swagger()).Value.ToJson();
|
||||||
|
|
||||||
JObject json = JObject.Parse(sresp);
|
JObject json = JObject.Parse(sresp);
|
||||||
@@ -279,7 +279,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
// Set tolerance to 50%
|
// Set tolerance to 50%
|
||||||
var stores = user.GetController<StoresController>();
|
var stores = user.GetController<UIStoresController>();
|
||||||
var response = stores.PaymentMethods();
|
var response = stores.PaymentMethods();
|
||||||
var vm = Assert.IsType<PaymentMethodsViewModel>(Assert.IsType<ViewResult>(response).Model);
|
var vm = Assert.IsType<PaymentMethodsViewModel>(Assert.IsType<ViewResult>(response).Model);
|
||||||
Assert.Equal(0.0, vm.PaymentTolerance);
|
Assert.Equal(0.0, vm.PaymentTolerance);
|
||||||
@@ -425,7 +425,7 @@ namespace BTCPayServer.Tests
|
|||||||
await tester.EnsureChannelsSetup();
|
await tester.EnsureChannelsSetup();
|
||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess(true);
|
user.GrantAccess(true);
|
||||||
var storeController = user.GetController<StoresController>();
|
var storeController = user.GetController<UIStoresController>();
|
||||||
var storeResponse = storeController.PaymentMethods();
|
var storeResponse = storeController.PaymentMethods();
|
||||||
Assert.IsType<ViewResult>(storeResponse);
|
Assert.IsType<ViewResult>(storeResponse);
|
||||||
Assert.IsType<ViewResult>(await storeController.SetupLightningNode(user.StoreId, "BTC"));
|
Assert.IsType<ViewResult>(await storeController.SetupLightningNode(user.StoreId, "BTC"));
|
||||||
@@ -538,7 +538,7 @@ namespace BTCPayServer.Tests
|
|||||||
acc.Register();
|
acc.Register();
|
||||||
acc.CreateStore();
|
acc.CreateStore();
|
||||||
|
|
||||||
var controller = acc.GetController<StoresController>();
|
var controller = acc.GetController<UIStoresController>();
|
||||||
var token = (RedirectToActionResult)await controller.CreateToken2(
|
var token = (RedirectToActionResult)await controller.CreateToken2(
|
||||||
new Models.StoreViewModels.CreateTokenViewModel()
|
new Models.StoreViewModels.CreateTokenViewModel()
|
||||||
{
|
{
|
||||||
@@ -635,14 +635,14 @@ namespace BTCPayServer.Tests
|
|||||||
var acc = tester.NewAccount();
|
var acc = tester.NewAccount();
|
||||||
acc.Register();
|
acc.Register();
|
||||||
acc.CreateStore();
|
acc.CreateStore();
|
||||||
var store = acc.GetController<StoresController>();
|
var store = acc.GetController<UIStoresController>();
|
||||||
var pairingCode = acc.BitPay.RequestClientAuthorization("test", Facade.Merchant);
|
var pairingCode = acc.BitPay.RequestClientAuthorization("test", Facade.Merchant);
|
||||||
Assert.IsType<RedirectToActionResult>(store.Pair(pairingCode.ToString(), acc.StoreId).GetAwaiter()
|
Assert.IsType<RedirectToActionResult>(store.Pair(pairingCode.ToString(), acc.StoreId).GetAwaiter()
|
||||||
.GetResult());
|
.GetResult());
|
||||||
|
|
||||||
pairingCode = acc.BitPay.RequestClientAuthorization("test1", Facade.Merchant);
|
pairingCode = acc.BitPay.RequestClientAuthorization("test1", Facade.Merchant);
|
||||||
acc.CreateStore();
|
acc.CreateStore();
|
||||||
var store2 = acc.GetController<StoresController>();
|
var store2 = acc.GetController<UIStoresController>();
|
||||||
await store2.Pair(pairingCode.ToString(), store2.CurrentStore.Id);
|
await store2.Pair(pairingCode.ToString(), store2.CurrentStore.Id);
|
||||||
Assert.Contains(nameof(PairingResult.ReusedKey),
|
Assert.Contains(nameof(PairingResult.ReusedKey),
|
||||||
(string)store2.TempData[WellKnownTempData.ErrorMessage], StringComparison.CurrentCultureIgnoreCase);
|
(string)store2.TempData[WellKnownTempData.ErrorMessage], StringComparison.CurrentCultureIgnoreCase);
|
||||||
@@ -703,11 +703,11 @@ namespace BTCPayServer.Tests
|
|||||||
acc.RegisterDerivationScheme("BTC", ScriptPubKeyType.Segwit);
|
acc.RegisterDerivationScheme("BTC", ScriptPubKeyType.Segwit);
|
||||||
var btcDerivationScheme = acc.DerivationScheme;
|
var btcDerivationScheme = acc.DerivationScheme;
|
||||||
|
|
||||||
var walletController = acc.GetController<WalletsController>();
|
var walletController = acc.GetController<UIWalletsController>();
|
||||||
|
|
||||||
var walletId = new WalletId(acc.StoreId, "BTC");
|
var walletId = new WalletId(acc.StoreId, "BTC");
|
||||||
acc.IsAdmin = true;
|
acc.IsAdmin = true;
|
||||||
walletController = acc.GetController<WalletsController>();
|
walletController = acc.GetController<UIWalletsController>();
|
||||||
|
|
||||||
var rescan =
|
var rescan =
|
||||||
Assert.IsType<RescanWalletModel>(Assert
|
Assert.IsType<RescanWalletModel>(Assert
|
||||||
@@ -857,7 +857,7 @@ namespace BTCPayServer.Tests
|
|||||||
acc.RegisterDerivationScheme("BTC");
|
acc.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
const string newVersion = "1.0.4.4";
|
const string newVersion = "1.0.4.4";
|
||||||
var ctrl = acc.GetController<NotificationsController>();
|
var ctrl = acc.GetController<UINotificationsController>();
|
||||||
var resp = await ctrl.Generate(newVersion);
|
var resp = await ctrl.Generate(newVersion);
|
||||||
|
|
||||||
var vm = Assert.IsType<Models.NotificationViewModels.IndexViewModel>(
|
var vm = Assert.IsType<Models.NotificationViewModels.IndexViewModel>(
|
||||||
@@ -903,11 +903,11 @@ namespace BTCPayServer.Tests
|
|||||||
// We don't have any default currencies, so this should be failing
|
// We don't have any default currencies, so this should be failing
|
||||||
Assert.Null(GetRatesResult?.Data);
|
Assert.Null(GetRatesResult?.Data);
|
||||||
|
|
||||||
var store = acc.GetController<StoresController>();
|
var store = acc.GetController<UIStoresController>();
|
||||||
var ratesVM = (RatesViewModel)(Assert.IsType<ViewResult>(store.Rates()).Model);
|
var ratesVM = (RatesViewModel)(Assert.IsType<ViewResult>(store.Rates()).Model);
|
||||||
ratesVM.DefaultCurrencyPairs = "BTC_USD,LTC_USD";
|
ratesVM.DefaultCurrencyPairs = "BTC_USD,LTC_USD";
|
||||||
await store.Rates(ratesVM);
|
await store.Rates(ratesVM);
|
||||||
store = acc.GetController<StoresController>();
|
store = acc.GetController<UIStoresController>();
|
||||||
rateController = acc.GetController<BitpayRateController>();
|
rateController = acc.GetController<BitpayRateController>();
|
||||||
GetRatesResult = JObject.Parse(((JsonResult)rateController.GetRates(null, default)
|
GetRatesResult = JObject.Parse(((JsonResult)rateController.GetRates(null, default)
|
||||||
.GetAwaiter().GetResult()).Value.ToJson()).ToObject<DataWrapper<Rate[]>>();
|
.GetAwaiter().GetResult()).Value.ToJson()).ToObject<DataWrapper<Rate[]>>();
|
||||||
@@ -940,7 +940,7 @@ namespace BTCPayServer.Tests
|
|||||||
private void AssertSearchInvoice(TestAccount acc, bool expected, string invoiceId, string filter, string storeId = null)
|
private void AssertSearchInvoice(TestAccount acc, bool expected, string invoiceId, string filter, string storeId = null)
|
||||||
{
|
{
|
||||||
var result =
|
var result =
|
||||||
(InvoicesModel)((ViewResult)acc.GetController<InvoiceController>()
|
(InvoicesModel)((ViewResult)acc.GetController<UIInvoiceController>()
|
||||||
.ListInvoices(new InvoicesModel { SearchTerm = filter, StoreId = storeId }).Result).Model;
|
.ListInvoices(new InvoicesModel { SearchTerm = filter, StoreId = storeId }).Result).Model;
|
||||||
Assert.Equal(expected, result.Invoices.Any(i => i.InvoiceId == invoiceId));
|
Assert.Equal(expected, result.Invoices.Any(i => i.InvoiceId == invoiceId));
|
||||||
}
|
}
|
||||||
@@ -1124,7 +1124,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
|
|
||||||
var payments = Assert.IsType<InvoiceDetailsModel>(
|
var payments = Assert.IsType<InvoiceDetailsModel>(
|
||||||
Assert.IsType<ViewResult>(await user.GetController<InvoiceController>().Invoice(invoice.Id)).Model)
|
Assert.IsType<ViewResult>(await user.GetController<UIInvoiceController>().Invoice(invoice.Id)).Model)
|
||||||
.Payments;
|
.Payments;
|
||||||
Assert.Single(payments);
|
Assert.Single(payments);
|
||||||
var paymentData = payments.First().GetCryptoPaymentData() as BitcoinLikePaymentData;
|
var paymentData = payments.First().GetCryptoPaymentData() as BitcoinLikePaymentData;
|
||||||
@@ -1181,7 +1181,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.True(user.BitPay.TestAccess(Facade.Merchant));
|
Assert.True(user.BitPay.TestAccess(Facade.Merchant));
|
||||||
|
|
||||||
// Test request pairing code client side
|
// Test request pairing code client side
|
||||||
var storeController = user.GetController<StoresController>();
|
var storeController = user.GetController<UIStoresController>();
|
||||||
storeController
|
storeController
|
||||||
.CreateToken(user.StoreId, new CreateTokenViewModel() { Label = "test2", StoreId = user.StoreId })
|
.CreateToken(user.StoreId, new CreateTokenViewModel() { Label = "test2", StoreId = user.StoreId })
|
||||||
.GetAwaiter().GetResult();
|
.GetAwaiter().GetResult();
|
||||||
@@ -1201,14 +1201,14 @@ namespace BTCPayServer.Tests
|
|||||||
// Can generate API Key
|
// Can generate API Key
|
||||||
var repo = tester.PayTester.GetService<TokenRepository>();
|
var repo = tester.PayTester.GetService<TokenRepository>();
|
||||||
Assert.Empty(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
Assert.Empty(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>()
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>()
|
||||||
.GenerateAPIKey(user.StoreId).GetAwaiter().GetResult());
|
.GenerateAPIKey(user.StoreId).GetAwaiter().GetResult());
|
||||||
|
|
||||||
var apiKey = Assert.Single(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
var apiKey = Assert.Single(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
||||||
///////
|
///////
|
||||||
|
|
||||||
// Generating a new one remove the previous
|
// Generating a new one remove the previous
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>()
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>()
|
||||||
.GenerateAPIKey(user.StoreId).GetAwaiter().GetResult());
|
.GenerateAPIKey(user.StoreId).GetAwaiter().GetResult());
|
||||||
var apiKey2 = Assert.Single(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
var apiKey2 = Assert.Single(repo.GetLegacyAPIKeys(user.StoreId).GetAwaiter().GetResult());
|
||||||
Assert.NotEqual(apiKey, apiKey2);
|
Assert.NotEqual(apiKey, apiKey2);
|
||||||
@@ -1320,7 +1320,7 @@ namespace BTCPayServer.Tests
|
|||||||
}, Facade.Merchant);
|
}, Facade.Merchant);
|
||||||
Assert.Equal(Money.Coins(1.0m), invoice1.BtcPrice);
|
Assert.Equal(Money.Coins(1.0m), invoice1.BtcPrice);
|
||||||
|
|
||||||
var storeController = user.GetController<StoresController>();
|
var storeController = user.GetController<UIStoresController>();
|
||||||
var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model;
|
var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model;
|
||||||
Assert.Equal(0.0, vm.Spread);
|
Assert.Equal(0.0, vm.Spread);
|
||||||
vm.Spread = 40;
|
vm.Spread = 40;
|
||||||
@@ -1439,7 +1439,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
var store = user.GetController<StoresController>();
|
var store = user.GetController<UIStoresController>();
|
||||||
var rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
var rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
||||||
Assert.False(rateVm.ShowScripting);
|
Assert.False(rateVm.ShowScripting);
|
||||||
Assert.Equal(CoinGeckoRateProvider.CoinGeckoName, rateVm.PreferredExchange);
|
Assert.Equal(CoinGeckoRateProvider.CoinGeckoName, rateVm.PreferredExchange);
|
||||||
@@ -1453,7 +1453,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
rateVm.ScriptTest = "BTC_JPY,BTC_CAD";
|
rateVm.ScriptTest = "BTC_JPY,BTC_CAD";
|
||||||
rateVm.Spread = 10;
|
rateVm.Spread = 10;
|
||||||
store = user.GetController<StoresController>();
|
store = user.GetController<UIStoresController>();
|
||||||
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(await store.Rates(rateVm, "Test"))
|
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(await store.Rates(rateVm, "Test"))
|
||||||
.Model);
|
.Model);
|
||||||
Assert.NotNull(rateVm.TestRateRules);
|
Assert.NotNull(rateVm.TestRateRules);
|
||||||
@@ -1466,7 +1466,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
Assert.IsType<RedirectToActionResult>(store.ShowRateRulesPost(true).Result);
|
Assert.IsType<RedirectToActionResult>(store.ShowRateRulesPost(true).Result);
|
||||||
Assert.IsType<RedirectToActionResult>(await store.Rates(rateVm, "Save"));
|
Assert.IsType<RedirectToActionResult>(await store.Rates(rateVm, "Save"));
|
||||||
store = user.GetController<StoresController>();
|
store = user.GetController<UIStoresController>();
|
||||||
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
||||||
Assert.Equal(rateVm.StoreId, user.StoreId);
|
Assert.Equal(rateVm.StoreId, user.StoreId);
|
||||||
Assert.Equal(rateVm.DefaultScript, rateVm.Script);
|
Assert.Equal(rateVm.DefaultScript, rateVm.Script);
|
||||||
@@ -1487,7 +1487,7 @@ namespace BTCPayServer.Tests
|
|||||||
.Model);
|
.Model);
|
||||||
Assert.True(rateVm.TestRateRules.All(t => !t.Error));
|
Assert.True(rateVm.TestRateRules.All(t => !t.Error));
|
||||||
Assert.IsType<RedirectToActionResult>(await store.Rates(rateVm, "Save"));
|
Assert.IsType<RedirectToActionResult>(await store.Rates(rateVm, "Save"));
|
||||||
store = user.GetController<StoresController>();
|
store = user.GetController<UIStoresController>();
|
||||||
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
rateVm = Assert.IsType<RatesViewModel>(Assert.IsType<ViewResult>(store.Rates()).Model);
|
||||||
Assert.Equal(50, rateVm.Spread);
|
Assert.Equal(50, rateVm.Spread);
|
||||||
Assert.True(rateVm.ShowScripting);
|
Assert.True(rateVm.ShowScripting);
|
||||||
@@ -1522,7 +1522,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.Equal("EUR", invoice2.Currency);
|
Assert.Equal("EUR", invoice2.Currency);
|
||||||
|
|
||||||
// via UI
|
// via UI
|
||||||
var controller = user.GetController<InvoiceController>();
|
var controller = user.GetController<UIInvoiceController>();
|
||||||
var model = await controller.CreateInvoice();
|
var model = await controller.CreateInvoice();
|
||||||
(await controller.CreateInvoice(new CreateInvoiceModel(), default)).AssertType<RedirectToActionResult>();
|
(await controller.CreateInvoice(new CreateInvoiceModel(), default)).AssertType<RedirectToActionResult>();
|
||||||
invoice = await client.GetInvoice(user.StoreId, controller.CreatedInvoiceId);
|
invoice = await client.GetInvoice(user.StoreId, controller.CreatedInvoiceId);
|
||||||
@@ -1530,7 +1530,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.Equal(InvoiceType.TopUp, invoice.Type);
|
Assert.Equal(InvoiceType.TopUp, invoice.Type);
|
||||||
|
|
||||||
// Check that the SendWallet use the default currency
|
// Check that the SendWallet use the default currency
|
||||||
var walletController = user.GetController<WalletsController>();
|
var walletController = user.GetController<UIWalletsController>();
|
||||||
var walletSend = await walletController.WalletSend(new WalletId(user.StoreId, "BTC")).AssertViewModelAsync<WalletSendModel>();
|
var walletSend = await walletController.WalletSend(new WalletId(user.StoreId, "BTC")).AssertViewModelAsync<WalletSendModel>();
|
||||||
Assert.Equal("EUR", walletSend.Fiat);
|
Assert.Equal("EUR", walletSend.Fiat);
|
||||||
}
|
}
|
||||||
@@ -1555,13 +1555,13 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
// We allow BTC and LN, but not BTC under 5 USD, so only LN should be in the invoice
|
// We allow BTC and LN, but not BTC under 5 USD, so only LN should be in the invoice
|
||||||
var vm = Assert.IsType<CheckoutAppearanceViewModel>(Assert
|
var vm = Assert.IsType<CheckoutAppearanceViewModel>(Assert
|
||||||
.IsType<ViewResult>(user.GetController<StoresController>().CheckoutAppearance()).Model);
|
.IsType<ViewResult>(user.GetController<UIStoresController>().CheckoutAppearance()).Model);
|
||||||
Assert.Equal(2, vm.PaymentMethodCriteria.Count);
|
Assert.Equal(2, vm.PaymentMethodCriteria.Count);
|
||||||
var criteria = Assert.Single(vm.PaymentMethodCriteria.Where(m => m.PaymentMethod == btcMethod.ToString()));
|
var criteria = Assert.Single(vm.PaymentMethodCriteria.Where(m => m.PaymentMethod == btcMethod.ToString()));
|
||||||
Assert.Equal(new PaymentMethodId("BTC", BitcoinPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
Assert.Equal(new PaymentMethodId("BTC", BitcoinPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
||||||
criteria.Value = "5 USD";
|
criteria.Value = "5 USD";
|
||||||
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.GreaterThan;
|
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.GreaterThan;
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().CheckoutAppearance(vm)
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().CheckoutAppearance(vm)
|
||||||
.Result);
|
.Result);
|
||||||
|
|
||||||
var invoice = user.BitPay.CreateInvoice(
|
var invoice = user.BitPay.CreateInvoice(
|
||||||
@@ -1582,7 +1582,7 @@ namespace BTCPayServer.Tests
|
|||||||
// We allow BTC for more than 5 USD, and LN for less than 150. The default is LN, so the default
|
// We allow BTC for more than 5 USD, and LN for less than 150. The default is LN, so the default
|
||||||
// payment method should be LN.
|
// payment method should be LN.
|
||||||
vm = Assert.IsType<CheckoutAppearanceViewModel>(Assert
|
vm = Assert.IsType<CheckoutAppearanceViewModel>(Assert
|
||||||
.IsType<ViewResult>(user.GetController<StoresController>().CheckoutAppearance()).Model);
|
.IsType<ViewResult>(user.GetController<UIStoresController>().CheckoutAppearance()).Model);
|
||||||
vm.DefaultPaymentMethod = lnMethod;
|
vm.DefaultPaymentMethod = lnMethod;
|
||||||
criteria = vm.PaymentMethodCriteria.First();
|
criteria = vm.PaymentMethodCriteria.First();
|
||||||
criteria.Value = "150 USD";
|
criteria.Value = "150 USD";
|
||||||
@@ -1590,7 +1590,7 @@ namespace BTCPayServer.Tests
|
|||||||
criteria = vm.PaymentMethodCriteria.Skip(1).First();
|
criteria = vm.PaymentMethodCriteria.Skip(1).First();
|
||||||
criteria.Value = "5 USD";
|
criteria.Value = "5 USD";
|
||||||
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.GreaterThan;
|
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.GreaterThan;
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().CheckoutAppearance(vm)
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().CheckoutAppearance(vm)
|
||||||
.Result);
|
.Result);
|
||||||
invoice = user.BitPay.CreateInvoice(
|
invoice = user.BitPay.CreateInvoice(
|
||||||
new Invoice()
|
new Invoice()
|
||||||
@@ -1602,14 +1602,14 @@ namespace BTCPayServer.Tests
|
|||||||
ItemDesc = "Some description",
|
ItemDesc = "Some description",
|
||||||
FullNotifications = true
|
FullNotifications = true
|
||||||
}, Facade.Merchant);
|
}, Facade.Merchant);
|
||||||
var checkout = (await user.GetController<InvoiceController>().Checkout(invoice.Id)).AssertViewModel<PaymentModel>();
|
var checkout = (await user.GetController<UIInvoiceController>().Checkout(invoice.Id)).AssertViewModel<PaymentModel>();
|
||||||
Assert.Equal(lnMethod, checkout.PaymentMethodId);
|
Assert.Equal(lnMethod, checkout.PaymentMethodId);
|
||||||
|
|
||||||
// If we change store's default, it should change the checkout's default
|
// If we change store's default, it should change the checkout's default
|
||||||
vm.DefaultPaymentMethod = btcMethod;
|
vm.DefaultPaymentMethod = btcMethod;
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().CheckoutAppearance(vm)
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().CheckoutAppearance(vm)
|
||||||
.Result);
|
.Result);
|
||||||
checkout = (await user.GetController<InvoiceController>().Checkout(invoice.Id)).AssertViewModel<PaymentModel>();
|
checkout = (await user.GetController<UIInvoiceController>().Checkout(invoice.Id)).AssertViewModel<PaymentModel>();
|
||||||
Assert.Equal(btcMethod, checkout.PaymentMethodId);
|
Assert.Equal(btcMethod, checkout.PaymentMethodId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1641,7 +1641,7 @@ namespace BTCPayServer.Tests
|
|||||||
}, Facade.Merchant);
|
}, Facade.Merchant);
|
||||||
|
|
||||||
// validate that invoice data model doesn't have lightning string initially
|
// validate that invoice data model doesn't have lightning string initially
|
||||||
var res = await user.GetController<InvoiceController>().Checkout(invoice.Id);
|
var res = await user.GetController<UIInvoiceController>().Checkout(invoice.Id);
|
||||||
var paymentMethodFirst = Assert.IsType<PaymentModel>(
|
var paymentMethodFirst = Assert.IsType<PaymentModel>(
|
||||||
Assert.IsType<ViewResult>(res).Model
|
Assert.IsType<ViewResult>(res).Model
|
||||||
);
|
);
|
||||||
@@ -1649,15 +1649,15 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
// enable unified QR code in settings
|
// enable unified QR code in settings
|
||||||
var vm = Assert.IsType<LightningSettingsViewModel>(Assert
|
var vm = Assert.IsType<LightningSettingsViewModel>(Assert
|
||||||
.IsType<ViewResult>(await user.GetController<StoresController>().LightningSettings(user.StoreId, cryptoCode)).Model
|
.IsType<ViewResult>(await user.GetController<UIStoresController>().LightningSettings(user.StoreId, cryptoCode)).Model
|
||||||
);
|
);
|
||||||
vm.OnChainWithLnInvoiceFallback = true;
|
vm.OnChainWithLnInvoiceFallback = true;
|
||||||
Assert.IsType<RedirectToActionResult>(
|
Assert.IsType<RedirectToActionResult>(
|
||||||
user.GetController<StoresController>().LightningSettings(vm).Result
|
user.GetController<UIStoresController>().LightningSettings(vm).Result
|
||||||
);
|
);
|
||||||
|
|
||||||
// validate that QR code now has both onchain and offchain payment urls
|
// validate that QR code now has both onchain and offchain payment urls
|
||||||
res = await user.GetController<InvoiceController>().Checkout(invoice.Id);
|
res = await user.GetController<UIInvoiceController>().Checkout(invoice.Id);
|
||||||
var paymentMethodSecond = Assert.IsType<PaymentModel>(
|
var paymentMethodSecond = Assert.IsType<PaymentModel>(
|
||||||
Assert.IsType<ViewResult>(res).Model
|
Assert.IsType<ViewResult>(res).Model
|
||||||
);
|
);
|
||||||
@@ -1689,12 +1689,12 @@ namespace BTCPayServer.Tests
|
|||||||
var cryptoCode = "BTC";
|
var cryptoCode = "BTC";
|
||||||
user.GrantAccess(true);
|
user.GrantAccess(true);
|
||||||
user.RegisterLightningNode(cryptoCode, LightningConnectionType.Charge);
|
user.RegisterLightningNode(cryptoCode, LightningConnectionType.Charge);
|
||||||
var vm = user.GetController<StoresController>().CheckoutAppearance().AssertViewModel<CheckoutAppearanceViewModel>();
|
var vm = user.GetController<UIStoresController>().CheckoutAppearance().AssertViewModel<CheckoutAppearanceViewModel>();
|
||||||
var criteria = Assert.Single(vm.PaymentMethodCriteria);
|
var criteria = Assert.Single(vm.PaymentMethodCriteria);
|
||||||
Assert.Equal(new PaymentMethodId(cryptoCode, LightningPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
Assert.Equal(new PaymentMethodId(cryptoCode, LightningPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
||||||
criteria.Value = "2 USD";
|
criteria.Value = "2 USD";
|
||||||
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.LessThan;
|
criteria.Type = PaymentMethodCriteriaViewModel.CriteriaType.LessThan;
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().CheckoutAppearance(vm)
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().CheckoutAppearance(vm)
|
||||||
.Result);
|
.Result);
|
||||||
|
|
||||||
var invoice = user.BitPay.CreateInvoice(
|
var invoice = user.BitPay.CreateInvoice(
|
||||||
@@ -1709,14 +1709,14 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
// Activating LNUrl, we should still have only 1 payment criteria that can be set.
|
// Activating LNUrl, we should still have only 1 payment criteria that can be set.
|
||||||
user.RegisterLightningNode(cryptoCode, LightningConnectionType.Charge);
|
user.RegisterLightningNode(cryptoCode, LightningConnectionType.Charge);
|
||||||
var lnSettingsVm = await user.GetController<StoresController>().LightningSettings(user.StoreId, cryptoCode).AssertViewModelAsync<LightningSettingsViewModel>();
|
var lnSettingsVm = await user.GetController<UIStoresController>().LightningSettings(user.StoreId, cryptoCode).AssertViewModelAsync<LightningSettingsViewModel>();
|
||||||
lnSettingsVm.LNURLEnabled = true;
|
lnSettingsVm.LNURLEnabled = true;
|
||||||
lnSettingsVm.LNURLStandardInvoiceEnabled = true;
|
lnSettingsVm.LNURLStandardInvoiceEnabled = true;
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().LightningSettings(lnSettingsVm).Result);
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().LightningSettings(lnSettingsVm).Result);
|
||||||
vm = user.GetController<StoresController>().CheckoutAppearance().AssertViewModel<CheckoutAppearanceViewModel>();
|
vm = user.GetController<UIStoresController>().CheckoutAppearance().AssertViewModel<CheckoutAppearanceViewModel>();
|
||||||
criteria = Assert.Single(vm.PaymentMethodCriteria);
|
criteria = Assert.Single(vm.PaymentMethodCriteria);
|
||||||
Assert.Equal(new PaymentMethodId(cryptoCode, LightningPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
Assert.Equal(new PaymentMethodId(cryptoCode, LightningPaymentType.Instance).ToString(), criteria.PaymentMethod);
|
||||||
Assert.IsType<RedirectToActionResult>(user.GetController<StoresController>().CheckoutAppearance(vm).Result);
|
Assert.IsType<RedirectToActionResult>(user.GetController<UIStoresController>().CheckoutAppearance(vm).Result);
|
||||||
|
|
||||||
// However, creating an invoice should show LNURL
|
// However, creating an invoice should show LNURL
|
||||||
invoice = user.BitPay.CreateInvoice(
|
invoice = user.BitPay.CreateInvoice(
|
||||||
@@ -1748,7 +1748,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
var controller = tester.PayTester.GetController<InvoiceController>(null);
|
var controller = tester.PayTester.GetController<UIInvoiceController>(null);
|
||||||
|
|
||||||
var testCases =
|
var testCases =
|
||||||
new List<(string input, Dictionary<string, object> expectedOutput)>()
|
new List<(string input, Dictionary<string, object> expectedOutput)>()
|
||||||
@@ -1818,7 +1818,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
var networkFee = new FeeRate(invoice.MinerFees["BTC"].SatoshiPerBytes).GetFee(100);
|
var networkFee = new FeeRate(invoice.MinerFees["BTC"].SatoshiPerBytes).GetFee(100);
|
||||||
// ensure 0 invoices exported because there are no payments yet
|
// ensure 0 invoices exported because there are no payments yet
|
||||||
var jsonResult = user.GetController<InvoiceController>().Export("json").GetAwaiter().GetResult();
|
var jsonResult = user.GetController<UIInvoiceController>().Export("json").GetAwaiter().GetResult();
|
||||||
var result = Assert.IsType<ContentResult>(jsonResult);
|
var result = Assert.IsType<ContentResult>(jsonResult);
|
||||||
Assert.Equal("application/json", result.ContentType);
|
Assert.Equal("application/json", result.ContentType);
|
||||||
Assert.Equal("[]", result.Content);
|
Assert.Equal("[]", result.Content);
|
||||||
@@ -1842,7 +1842,7 @@ namespace BTCPayServer.Tests
|
|||||||
TestUtils.Eventually(() =>
|
TestUtils.Eventually(() =>
|
||||||
{
|
{
|
||||||
var jsonResultPaid =
|
var jsonResultPaid =
|
||||||
user.GetController<InvoiceController>().Export("json").GetAwaiter().GetResult();
|
user.GetController<UIInvoiceController>().Export("json").GetAwaiter().GetResult();
|
||||||
var paidresult = Assert.IsType<ContentResult>(jsonResultPaid);
|
var paidresult = Assert.IsType<ContentResult>(jsonResultPaid);
|
||||||
Assert.Equal("application/json", paidresult.ContentType);
|
Assert.Equal("application/json", paidresult.ContentType);
|
||||||
|
|
||||||
@@ -1986,7 +1986,7 @@ namespace BTCPayServer.Tests
|
|||||||
TestUtils.Eventually(() =>
|
TestUtils.Eventually(() =>
|
||||||
{
|
{
|
||||||
var exportResultPaid =
|
var exportResultPaid =
|
||||||
user.GetController<InvoiceController>().Export("csv").GetAwaiter().GetResult();
|
user.GetController<UIInvoiceController>().Export("csv").GetAwaiter().GetResult();
|
||||||
var paidresult = Assert.IsType<ContentResult>(exportResultPaid);
|
var paidresult = Assert.IsType<ContentResult>(exportResultPaid);
|
||||||
Assert.Equal("application/csv", paidresult.ContentType);
|
Assert.Equal("application/csv", paidresult.ContentType);
|
||||||
Assert.Contains($",orderId,{invoice.Id},", paidresult.Content);
|
Assert.Contains($",orderId,{invoice.Id},", paidresult.Content);
|
||||||
@@ -2009,8 +2009,8 @@ namespace BTCPayServer.Tests
|
|||||||
await user.GrantAccessAsync();
|
await user.GrantAccessAsync();
|
||||||
var user2 = tester.NewAccount();
|
var user2 = tester.NewAccount();
|
||||||
await user2.GrantAccessAsync();
|
await user2.GrantAccessAsync();
|
||||||
var apps = user.GetController<AppsController>();
|
var apps = user.GetController<UIAppsController>();
|
||||||
var apps2 = user2.GetController<AppsController>();
|
var apps2 = user2.GetController<UIAppsController>();
|
||||||
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
var vm = Assert.IsType<CreateAppViewModel>(Assert.IsType<ViewResult>(apps.CreateApp(user.StoreId)).Model);
|
||||||
Assert.NotNull(vm.SelectedAppType);
|
Assert.NotNull(vm.SelectedAppType);
|
||||||
Assert.Null(vm.AppName);
|
Assert.Null(vm.AppName);
|
||||||
@@ -2348,7 +2348,7 @@ namespace BTCPayServer.Tests
|
|||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
|
|
||||||
var serverController = user.GetController<ServerController>();
|
var serverController = user.GetController<UIServerController>();
|
||||||
var vm = Assert.IsType<LogsViewModel>(
|
var vm = Assert.IsType<LogsViewModel>(
|
||||||
Assert.IsType<ViewResult>(await serverController.LogsView()).Model);
|
Assert.IsType<ViewResult>(await serverController.LogsView()).Model);
|
||||||
}
|
}
|
||||||
@@ -2364,17 +2364,17 @@ namespace BTCPayServer.Tests
|
|||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
|
|
||||||
var accountController = tester.PayTester.GetController<AccountController>();
|
var accountController = tester.PayTester.GetController<UIAccountController>();
|
||||||
|
|
||||||
//no 2fa or fido2 enabled, login should work
|
//no 2fa or fido2 enabled, login should work
|
||||||
Assert.Equal(nameof(HomeController.Index),
|
Assert.Equal(nameof(UIHomeController.Index),
|
||||||
Assert.IsType<RedirectToActionResult>(await accountController.Login(new LoginViewModel()
|
Assert.IsType<RedirectToActionResult>(await accountController.Login(new LoginViewModel()
|
||||||
{
|
{
|
||||||
Email = user.RegisterDetails.Email,
|
Email = user.RegisterDetails.Email,
|
||||||
Password = user.RegisterDetails.Password
|
Password = user.RegisterDetails.Password
|
||||||
})).ActionName);
|
})).ActionName);
|
||||||
|
|
||||||
var listController = user.GetController<ManageController>();
|
var listController = user.GetController<UIManageController>();
|
||||||
var manageController = user.GetController<Fido2Controller>();
|
var manageController = user.GetController<Fido2Controller>();
|
||||||
|
|
||||||
//by default no fido2 devices available
|
//by default no fido2 devices available
|
||||||
@@ -2500,7 +2500,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.Equal(MockVersionFetcher.MOCK_NEW_VERSION, lastVersion.LastVersion);
|
Assert.Equal(MockVersionFetcher.MOCK_NEW_VERSION, lastVersion.LastVersion);
|
||||||
|
|
||||||
// we should also have notification in UI
|
// we should also have notification in UI
|
||||||
var ctrl = acc.GetController<NotificationsController>();
|
var ctrl = acc.GetController<UINotificationsController>();
|
||||||
var newVersion = MockVersionFetcher.MOCK_NEW_VERSION;
|
var newVersion = MockVersionFetcher.MOCK_NEW_VERSION;
|
||||||
|
|
||||||
var vm = Assert.IsType<Models.NotificationViewModels.IndexViewModel>(
|
var vm = Assert.IsType<Models.NotificationViewModels.IndexViewModel>(
|
||||||
@@ -2715,7 +2715,7 @@ namespace BTCPayServer.Tests
|
|||||||
Assert.Equal("admin@admin.com", (await Assert.IsType<ServerEmailSender>(await emailSenderFactory.GetEmailSender()).GetEmailSettings()).Login);
|
Assert.Equal("admin@admin.com", (await Assert.IsType<ServerEmailSender>(await emailSenderFactory.GetEmailSender()).GetEmailSettings()).Login);
|
||||||
Assert.Null(await Assert.IsType<StoreEmailSender>(await emailSenderFactory.GetEmailSender(acc.StoreId)).GetEmailSettings());
|
Assert.Null(await Assert.IsType<StoreEmailSender>(await emailSenderFactory.GetEmailSender(acc.StoreId)).GetEmailSettings());
|
||||||
|
|
||||||
Assert.IsType<RedirectToActionResult>(await acc.GetController<StoresController>().Emails(acc.StoreId, new EmailsViewModel(new EmailSettings()
|
Assert.IsType<RedirectToActionResult>(await acc.GetController<UIStoresController>().Emails(acc.StoreId, new EmailsViewModel(new EmailSettings()
|
||||||
{
|
{
|
||||||
From = "store@store.com",
|
From = "store@store.com",
|
||||||
Login = "store@store.com",
|
Login = "store@store.com",
|
||||||
@@ -2738,7 +2738,7 @@ namespace BTCPayServer.Tests
|
|||||||
await tester.StartAsync();
|
await tester.StartAsync();
|
||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
var controller = tester.PayTester.GetController<ServerController>(user.UserId, user.StoreId);
|
var controller = tester.PayTester.GetController<UIServerController>(user.UserId, user.StoreId);
|
||||||
|
|
||||||
|
|
||||||
//Once we select a provider, redirect to its view
|
//Once we select a provider, redirect to its view
|
||||||
@@ -2747,7 +2747,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
Provider = StorageProvider.FileSystem
|
Provider = StorageProvider.FileSystem
|
||||||
}));
|
}));
|
||||||
Assert.Equal(nameof(ServerController.StorageProvider), localResult.ActionName);
|
Assert.Equal(nameof(UIServerController.StorageProvider), localResult.ActionName);
|
||||||
Assert.Equal(StorageProvider.FileSystem.ToString(), localResult.RouteValues["provider"]);
|
Assert.Equal(StorageProvider.FileSystem.ToString(), localResult.RouteValues["provider"]);
|
||||||
|
|
||||||
|
|
||||||
@@ -2756,7 +2756,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
Provider = StorageProvider.AmazonS3
|
Provider = StorageProvider.AmazonS3
|
||||||
}));
|
}));
|
||||||
Assert.Equal(nameof(ServerController.StorageProvider), AmazonS3result.ActionName);
|
Assert.Equal(nameof(UIServerController.StorageProvider), AmazonS3result.ActionName);
|
||||||
Assert.Equal(StorageProvider.AmazonS3.ToString(), AmazonS3result.RouteValues["provider"]);
|
Assert.Equal(StorageProvider.AmazonS3.ToString(), AmazonS3result.RouteValues["provider"]);
|
||||||
|
|
||||||
var GoogleResult = Assert
|
var GoogleResult = Assert
|
||||||
@@ -2764,7 +2764,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
Provider = StorageProvider.GoogleCloudStorage
|
Provider = StorageProvider.GoogleCloudStorage
|
||||||
}));
|
}));
|
||||||
Assert.Equal(nameof(ServerController.StorageProvider), GoogleResult.ActionName);
|
Assert.Equal(nameof(UIServerController.StorageProvider), GoogleResult.ActionName);
|
||||||
Assert.Equal(StorageProvider.GoogleCloudStorage.ToString(), GoogleResult.RouteValues["provider"]);
|
Assert.Equal(StorageProvider.GoogleCloudStorage.ToString(), GoogleResult.RouteValues["provider"]);
|
||||||
|
|
||||||
|
|
||||||
@@ -2773,7 +2773,7 @@ namespace BTCPayServer.Tests
|
|||||||
{
|
{
|
||||||
Provider = StorageProvider.AzureBlobStorage
|
Provider = StorageProvider.AzureBlobStorage
|
||||||
}));
|
}));
|
||||||
Assert.Equal(nameof(ServerController.StorageProvider), AzureResult.ActionName);
|
Assert.Equal(nameof(UIServerController.StorageProvider), AzureResult.ActionName);
|
||||||
Assert.Equal(StorageProvider.AzureBlobStorage.ToString(), AzureResult.RouteValues["provider"]);
|
Assert.Equal(StorageProvider.AzureBlobStorage.ToString(), AzureResult.RouteValues["provider"]);
|
||||||
|
|
||||||
//Cool, we get redirected to the config pages
|
//Cool, we get redirected to the config pages
|
||||||
@@ -2821,7 +2821,7 @@ namespace BTCPayServer.Tests
|
|||||||
await tester.StartAsync();
|
await tester.StartAsync();
|
||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
var controller = tester.PayTester.GetController<ServerController>(user.UserId, user.StoreId);
|
var controller = tester.PayTester.GetController<UIServerController>(user.UserId, user.StoreId);
|
||||||
|
|
||||||
var fileSystemStorageConfiguration = Assert.IsType<FileSystemStorageConfiguration>(Assert
|
var fileSystemStorageConfiguration = Assert.IsType<FileSystemStorageConfiguration>(Assert
|
||||||
.IsType<ViewResult>(await controller.StorageProvider(StorageProvider.FileSystem.ToString()))
|
.IsType<ViewResult>(await controller.StorageProvider(StorageProvider.FileSystem.ToString()))
|
||||||
@@ -2840,7 +2840,7 @@ namespace BTCPayServer.Tests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static async Task CanUploadRemoveFiles(ServerController controller)
|
internal static async Task CanUploadRemoveFiles(UIServerController controller)
|
||||||
{
|
{
|
||||||
var fileContent = "content";
|
var fileContent = "content";
|
||||||
List<IFormFile> fileList = new List<IFormFile>();
|
List<IFormFile> fileList = new List<IFormFile>();
|
||||||
@@ -2868,11 +2868,11 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
//create a temporary link to file
|
//create a temporary link to file
|
||||||
var tmpLinkGenerate = Assert.IsType<RedirectToActionResult>(await controller.CreateTemporaryFileUrl(fileId,
|
var tmpLinkGenerate = Assert.IsType<RedirectToActionResult>(await controller.CreateTemporaryFileUrl(fileId,
|
||||||
new ServerController.CreateTemporaryFileUrlViewModel()
|
new UIServerController.CreateTemporaryFileUrlViewModel()
|
||||||
{
|
{
|
||||||
IsDownload = true,
|
IsDownload = true,
|
||||||
TimeAmount = 1,
|
TimeAmount = 1,
|
||||||
TimeType = ServerController.CreateTemporaryFileUrlViewModel.TmpFileTimeType.Minutes
|
TimeType = UIServerController.CreateTemporaryFileUrlViewModel.TmpFileTimeType.Minutes
|
||||||
}));
|
}));
|
||||||
var statusMessageModel = controller.TempData.GetStatusMessageModel();
|
var statusMessageModel = controller.TempData.GetStatusMessageModel();
|
||||||
Assert.NotNull(statusMessageModel);
|
Assert.NotNull(statusMessageModel);
|
||||||
|
|||||||
@@ -20,13 +20,13 @@
|
|||||||
<None Remove="Build\**" />
|
<None Remove="Build\**" />
|
||||||
<None Remove="wwwroot\bundles\jqueryvalidate\**" />
|
<None Remove="wwwroot\bundles\jqueryvalidate\**" />
|
||||||
<None Remove="wwwroot\vendor\jquery-nice-select\**" />
|
<None Remove="wwwroot\vendor\jquery-nice-select\**" />
|
||||||
<Content Update="Views\StorePullPayments\NewPullPayment.cshtml">
|
<Content Update="Views\UIStorePullPayments\NewPullPayment.cshtml">
|
||||||
<Pack>false</Pack>
|
<Pack>false</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\StorePullPayments\PullPayments.cshtml">
|
<Content Update="Views\UIStorePullPayments\PullPayments.cshtml">
|
||||||
<Pack>false</Pack>
|
<Pack>false</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Account\_ViewImports.cshtml">
|
<Content Update="Views\UIAccount\_ViewImports.cshtml">
|
||||||
<Pack>false</Pack>
|
<Pack>false</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
<ItemGroup Condition="'$(Altcoins)' != 'true'">
|
<ItemGroup Condition="'$(Altcoins)' != 'true'">
|
||||||
<Content Remove="Services\Altcoins\**\*" />
|
<Content Remove="Services\Altcoins\**\*" />
|
||||||
<Content Remove="Views\MoneroLikeStore\**\*" />
|
<Content Remove="Views\UIMoneroLikeStore\**\*" />
|
||||||
<Content Remove="Views\Shared\Monero\**\*" />
|
<Content Remove="Views\Shared\Monero\**\*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
@@ -148,83 +148,83 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Watch Include="Views\**\*.*"></Watch>
|
<Watch Include="Views\**\*.*"></Watch>
|
||||||
<Content Update="Views\Apps\_ViewImports.cshtml">
|
<Content Update="Views\UIApps\_ViewImports.cshtml">
|
||||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\DynamicDnsServices.cshtml">
|
<Content Update="Views\UIServer\DynamicDnsServices.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\LightningChargeServices.cshtml">
|
<Content Update="Views\UIServer\LightningChargeServices.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\LightningWalletServices.cshtml">
|
<Content Update="Views\UIServer\LightningWalletServices.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\LndSeedBackup.cshtml">
|
<Content Update="Views\UIServer\LndSeedBackup.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\RPCService.cshtml">
|
<Content Update="Views\UIServer\RPCService.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\P2PService.cshtml">
|
<Content Update="Views\UIServer\P2PService.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\DynamicDnsService.cshtml">
|
<Content Update="Views\UIServer\DynamicDnsService.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\SSHService.cshtml">
|
<Content Update="Views\UIServer\SSHService.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Stores\ShowToken.cshtml">
|
<Content Update="Views\UIStores\ShowToken.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Stores\PayButtonEnable.cshtml">
|
<Content Update="Views\UIStores\PayButtonEnable.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Stores\PayButton.cshtml">
|
<Content Update="Views\UIStores\PayButton.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Public\PayButtonHandle.cshtml">
|
<Content Update="Views\UIPublic\PayButtonHandle.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\LndServices.cshtml">
|
<Content Update="Views\UIServer\LndServices.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\Maintenance.cshtml">
|
<Content Update="Views\UIServer\Maintenance.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\Services.cshtml">
|
<Content Update="Views\UIServer\Services.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\ListWallets.cshtml">
|
<Content Update="Views\UIWallets\ListWallets.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletPSBTCombine.cshtml">
|
<Content Update="Views\UIWallets\WalletPSBTCombine.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletPSBTReady.cshtml">
|
<Content Update="Views\Wallets\WalletPSBTReady.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletPSBT.cshtml">
|
<Content Update="Views\UIWallets\WalletPSBT.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletRescan.cshtml">
|
<Content Update="Views\UIWallets\WalletRescan.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletSendVault.cshtml">
|
<Content Update="Views\UIWallets\WalletSendVault.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\WalletTransactions.cshtml">
|
<Content Update="Views\UIWallets\WalletTransactions.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\_Nav.cshtml">
|
<Content Update="Views\UIWallets\_Nav.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\_ViewImports.cshtml">
|
<Content Update="Views\UIWallets\_ViewImports.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Wallets\_ViewStart.cshtml">
|
<Content Update="Views\UIWallets\_ViewStart.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -29,13 +29,13 @@
|
|||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="Dashboard" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.Dashboard)" id="StoreNav-Dashboard">
|
<a asp-area="" asp-controller="UIStores" asp-action="Dashboard" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.Dashboard)" id="StoreNav-Dashboard">
|
||||||
<vc:icon symbol="home"/>
|
<vc:icon symbol="home"/>
|
||||||
<span>Dashboard</span>
|
<span>Dashboard</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="PaymentMethods" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.PaymentMethods) @ViewData.IsActivePage(StoreNavPages.Rates) @ViewData.IsActivePage(StoreNavPages.CheckoutAppearance) @ViewData.IsActivePage(StoreNavPages.GeneralSettings) @ViewData.IsActivePage(StoreNavPages.Tokens) @ViewData.IsActivePage(StoreNavPages.Users) @ViewData.IsActivePage(StoreNavPages.Integrations) @ViewData.IsActivePage(StoreNavPages.Webhooks)" id="StoreNav-StoreSettings">
|
<a asp-area="" asp-controller="UIStores" asp-action="PaymentMethods" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.PaymentMethods) @ViewData.IsActivePage(StoreNavPages.Rates) @ViewData.IsActivePage(StoreNavPages.CheckoutAppearance) @ViewData.IsActivePage(StoreNavPages.GeneralSettings) @ViewData.IsActivePage(StoreNavPages.Tokens) @ViewData.IsActivePage(StoreNavPages.Users) @ViewData.IsActivePage(StoreNavPages.Integrations) @ViewData.IsActivePage(StoreNavPages.Webhooks)" id="StoreNav-StoreSettings">
|
||||||
<vc:icon symbol="settings"/>
|
<vc:icon symbol="settings"/>
|
||||||
<span>Settings</span>
|
<span>Settings</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -58,14 +58,14 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
@if (isSetUp && scheme.WalletSupported)
|
@if (isSetUp && scheme.WalletSupported)
|
||||||
{
|
{
|
||||||
<a asp-area="" asp-controller="Wallets" asp-action="WalletTransactions" asp-route-walletId="@scheme.WalletId" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(WalletsNavPages), scheme.WalletId.ToString()) @ViewData.IsActivePage(StoreNavPages.OnchainSettings)" id="@($"StoreNav-Wallet{scheme.Crypto}")">
|
<a asp-area="" asp-controller="UIWallets" asp-action="WalletTransactions" asp-route-walletId="@scheme.WalletId" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(WalletsNavPages), scheme.WalletId.ToString()) @ViewData.IsActivePage(StoreNavPages.OnchainSettings)" id="@($"StoreNav-Wallet{scheme.Crypto}")">
|
||||||
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
||||||
<span>@(Model.AltcoinsBuild ? $"{scheme.Crypto} " : "")Wallet</span>
|
<span>@(Model.AltcoinsBuild ? $"{scheme.Crypto} " : "")Wallet</span>
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="SetupWallet" asp-route-cryptoCode="@scheme.Crypto" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.OnchainSettings)" id="@($"StoreNav-Modify{scheme.Crypto}")">
|
<a asp-area="" asp-controller="UIStores" asp-action="SetupWallet" asp-route-cryptoCode="@scheme.Crypto" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.OnchainSettings)" id="@($"StoreNav-Modify{scheme.Crypto}")">
|
||||||
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
||||||
<span>@(Model.AltcoinsBuild ? $"{scheme.Crypto} " : "")Wallet</span>
|
<span>@(Model.AltcoinsBuild ? $"{scheme.Crypto} " : "")Wallet</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -78,14 +78,14 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
@if (isSetUp)
|
@if (isSetUp)
|
||||||
{
|
{
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="LightningSettings" asp-route-cryptoCode="@scheme.CryptoCode" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.LightningSettings)" id="@($"StoreNav-Lightning{scheme.CryptoCode}")">
|
<a asp-area="" asp-controller="UIStores" asp-action="LightningSettings" asp-route-cryptoCode="@scheme.CryptoCode" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.LightningSettings)" id="@($"StoreNav-Lightning{scheme.CryptoCode}")">
|
||||||
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
<span class="me-2 btcpay-status btcpay-status--@(scheme.Enabled ? "enabled" : "disabled")"></span>
|
||||||
<span>@(Model.AltcoinsBuild ? $"{scheme.CryptoCode} " : "")Lightning</span>
|
<span>@(Model.AltcoinsBuild ? $"{scheme.CryptoCode} " : "")Lightning</span>
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="SetupLightningNode" asp-route-cryptoCode="@scheme.CryptoCode" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.LightningSettings)" id="@($"StoreNav-Lightning{scheme.CryptoCode}")">
|
<a asp-area="" asp-controller="UIStores" asp-action="SetupLightningNode" asp-route-cryptoCode="@scheme.CryptoCode" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.LightningSettings)" id="@($"StoreNav-Lightning{scheme.CryptoCode}")">
|
||||||
<span class="me-2 btcpay-status btcpay-status--disabled"></span>
|
<span class="me-2 btcpay-status btcpay-status--disabled"></span>
|
||||||
<span>@(Model.AltcoinsBuild ? $"{scheme.CryptoCode} " : "")Lightning</span>
|
<span>@(Model.AltcoinsBuild ? $"{scheme.CryptoCode} " : "")Lightning</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -107,31 +107,31 @@
|
|||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
||||||
<a asp-area="" asp-controller="Invoice" asp-action="ListInvoices" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(InvoiceNavPages))" id="StoreNav-Invoices">
|
<a asp-area="" asp-controller="UIInvoice" asp-action="ListInvoices" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(InvoiceNavPages))" id="StoreNav-Invoices">
|
||||||
<vc:icon symbol="invoice"/>
|
<vc:icon symbol="invoice"/>
|
||||||
<span>Invoices</span>
|
<span>Invoices</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
||||||
<a asp-area="" asp-controller="PaymentRequest" asp-action="GetPaymentRequests" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(PaymentRequestsNavPages))" id="StoreNav-PaymentRequests">
|
<a asp-area="" asp-controller="UIPaymentRequest" asp-action="GetPaymentRequests" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(PaymentRequestsNavPages))" id="StoreNav-PaymentRequests">
|
||||||
<vc:icon symbol="payment-1"/>
|
<vc:icon symbol="payment-1"/>
|
||||||
<span>Requests</span>
|
<span>Requests</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="StorePullPayments" asp-action="PullPayments" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.PullPayments)" id="StoreNav-PullPayments">
|
<a asp-area="" asp-controller="UIStorePullPayments" asp-action="PullPayments" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.PullPayments)" id="StoreNav-PullPayments">
|
||||||
<vc:icon symbol="payment-2"/>
|
<vc:icon symbol="payment-2"/>
|
||||||
<span>Pull Payments</span>
|
<span>Pull Payments</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="StorePullPayments" asp-action="Payouts" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.Payouts)" id="StoreNav-Payouts">
|
<a asp-area="" asp-controller="UIStorePullPayments" asp-action="Payouts" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.Payouts)" id="StoreNav-Payouts">
|
||||||
<vc:icon symbol="payment-2"/>
|
<vc:icon symbol="payment-2"/>
|
||||||
<span>Payouts</span>
|
<span>Payouts</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
<li class="nav-item" permission="@Policies.CanModifyStoreSettings">
|
||||||
<a asp-area="" asp-controller="Stores" asp-action="PayButton" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.PayButton)" id="StoreNav-PayButton">
|
<a asp-area="" asp-controller="UIStores" asp-action="PayButton" asp-route-storeId="@Model.Store.Id" class="nav-link @ViewData.IsActivePage(StoreNavPages.PayButton)" id="StoreNav-PayButton">
|
||||||
<vc:icon symbol="payment-2"/>
|
<vc:icon symbol="payment-2"/>
|
||||||
<span>Pay Button</span>
|
<span>Pay Button</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -154,14 +154,14 @@
|
|||||||
@foreach (var app in Model.Apps)
|
@foreach (var app in Model.Apps)
|
||||||
{
|
{
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Apps" asp-action="@app.Action" asp-route-appId="@app.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(AppsNavPages.Update, app.Id)" id="@($"StoreNav-App-{app.Id}")">
|
<a asp-area="" asp-controller="UIApps" asp-action="@app.Action" asp-route-appId="@app.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(AppsNavPages.Update, app.Id)" id="@($"StoreNav-App-{app.Id}")">
|
||||||
<vc:icon symbol="@app.AppType.ToLower()"/>
|
<vc:icon symbol="@app.AppType.ToLower()"/>
|
||||||
<span>@app.AppName</span>
|
<span>@app.AppName</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Apps" asp-action="CreateApp" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(AppsNavPages.Create)" id="StoreNav-CreateApp">
|
<a asp-area="" asp-controller="UIApps" asp-action="CreateApp" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(AppsNavPages.Create)" id="StoreNav-CreateApp">
|
||||||
<vc:icon symbol="new"/>
|
<vc:icon symbol="new"/>
|
||||||
<span>New App</span>
|
<span>New App</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
<vc:ui-extension-point location="header-nav" model="@Model"/>
|
<vc:ui-extension-point location="header-nav" model="@Model"/>
|
||||||
<vc:ui-extension-point location="store-integrations-nav" model="@Model" />
|
<vc:ui-extension-point location="store-integrations-nav" model="@Model" />
|
||||||
<li class="nav-item" permission="@Policies.CanModifyServerSettings">
|
<li class="nav-item" permission="@Policies.CanModifyServerSettings">
|
||||||
<a asp-area="" asp-controller="Server" asp-action="ListPlugins" class="nav-link js-scroll-trigger @ViewData.IsActivePage(ServerNavPages.Plugins)" id="Nav-AddPlugin">
|
<a asp-area="" asp-controller="UIServer" asp-action="ListPlugins" class="nav-link js-scroll-trigger @ViewData.IsActivePage(ServerNavPages.Plugins)" id="Nav-AddPlugin">
|
||||||
<vc:icon symbol="new"/>
|
<vc:icon symbol="new"/>
|
||||||
<span>Add Plugin</span>
|
<span>Add Plugin</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -213,11 +213,11 @@
|
|||||||
@if (!(await SettingsRepository.GetPolicies()).LockSubscription)
|
@if (!(await SettingsRepository.GetPolicies()).LockSubscription)
|
||||||
{
|
{
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Account" asp-action="Register" class="nav-link js-scroll-trigger" id="Nav-Register">Register</a>
|
<a asp-area="" asp-controller="UIAccount" asp-action="Register" class="nav-link js-scroll-trigger" id="Nav-Register">Register</a>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="Account" asp-action="Login" class="nav-link js-scroll-trigger" id="Nav-Login">Log in</a>
|
<a asp-area="" asp-controller="UIAccount" asp-action="Login" class="nav-link js-scroll-trigger" id="Nav-Login">Log in</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
{
|
{
|
||||||
<ul id="mainNavSettings" class="navbar-nav border-top p-3 px-lg-4">
|
<ul id="mainNavSettings" class="navbar-nav border-top p-3 px-lg-4">
|
||||||
<li class="nav-item" permission="@Policies.CanModifyServerSettings">
|
<li class="nav-item" permission="@Policies.CanModifyServerSettings">
|
||||||
<a asp-area="" asp-controller="Server" asp-action="ListUsers" class="nav-link js-scroll-trigger @ViewData.IsActivePage(ServerNavPages.Users) @ViewData.IsActivePage(ServerNavPages.Emails) @ViewData.IsActivePage(ServerNavPages.Policies) @ViewData.IsActivePage(ServerNavPages.Services) @ViewData.IsActivePage(ServerNavPages.Theme) @ViewData.IsActivePage(ServerNavPages.Maintenance) @ViewData.IsActivePage(ServerNavPages.Logs) @ViewData.IsActivePage(ServerNavPages.Files)" id="Nav-ServerSettings">
|
<a asp-area="" asp-controller="UIServer" asp-action="ListUsers" class="nav-link js-scroll-trigger @ViewData.IsActivePage(ServerNavPages.Users) @ViewData.IsActivePage(ServerNavPages.Emails) @ViewData.IsActivePage(ServerNavPages.Policies) @ViewData.IsActivePage(ServerNavPages.Services) @ViewData.IsActivePage(ServerNavPages.Theme) @ViewData.IsActivePage(ServerNavPages.Maintenance) @ViewData.IsActivePage(ServerNavPages.Logs) @ViewData.IsActivePage(ServerNavPages.Files)" id="Nav-ServerSettings">
|
||||||
<vc:icon symbol="server-settings"/>
|
<vc:icon symbol="server-settings"/>
|
||||||
<span>Server Settings</span>
|
<span>Server Settings</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -251,13 +251,13 @@
|
|||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<li class="border-top py-1 px-3">
|
<li class="border-top py-1 px-3">
|
||||||
<a asp-area="" asp-controller="Manage" asp-action="Index" class="nav-link @ViewData.IsActiveCategory(typeof(ManageNavPages))" id="Nav-ManageAccount">
|
<a asp-area="" asp-controller="UIManage" asp-action="Index" class="nav-link @ViewData.IsActiveCategory(typeof(ManageNavPages))" id="Nav-ManageAccount">
|
||||||
<vc:icon symbol="account"/>
|
<vc:icon symbol="account"/>
|
||||||
<span class="text-truncate" style="max-width:195px">Manage Account</span>
|
<span class="text-truncate" style="max-width:195px">Manage Account</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="border-top py-1 px-3">
|
<li class="border-top py-1 px-3">
|
||||||
<a asp-area="" asp-controller="Account" asp-action="Logout" class="nav-link text-danger" id="Nav-Logout">
|
<a asp-area="" asp-controller="UIAccount" asp-action="Logout" class="nav-link text-danger" id="Nav-Logout">
|
||||||
<i class="fa fa-sign-out"></i>
|
<i class="fa fa-sign-out"></i>
|
||||||
<span>Logout</span>
|
<span>Logout</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace BTCPayServer.Components.MainNav
|
|||||||
private const string RootName = "Global";
|
private const string RootName = "Global";
|
||||||
private readonly AppService _appService;
|
private readonly AppService _appService;
|
||||||
private readonly StoreRepository _storeRepo;
|
private readonly StoreRepository _storeRepo;
|
||||||
private readonly StoresController _storesController;
|
private readonly UIStoresController _storesController;
|
||||||
private readonly BTCPayNetworkProvider _networkProvider;
|
private readonly BTCPayNetworkProvider _networkProvider;
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
private readonly PaymentMethodHandlerDictionary _paymentMethodHandlerDictionary;
|
private readonly PaymentMethodHandlerDictionary _paymentMethodHandlerDictionary;
|
||||||
@@ -30,7 +30,7 @@ namespace BTCPayServer.Components.MainNav
|
|||||||
public MainNav(
|
public MainNav(
|
||||||
AppService appService,
|
AppService appService,
|
||||||
StoreRepository storeRepo,
|
StoreRepository storeRepo,
|
||||||
StoresController storesController,
|
UIStoresController storesController,
|
||||||
BTCPayNetworkProvider networkProvider,
|
BTCPayNetworkProvider networkProvider,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
PaymentMethodHandlerDictionary paymentMethodHandlerDictionary)
|
PaymentMethodHandlerDictionary paymentMethodHandlerDictionary)
|
||||||
|
|||||||
@@ -13,19 +13,19 @@
|
|||||||
<div class="dropdown-menu text-center" id="NotificationsDropdown" aria-labelledby="NotificationsHandle">
|
<div class="dropdown-menu text-center" id="NotificationsDropdown" aria-labelledby="NotificationsHandle">
|
||||||
<div class="d-flex align-items-center justify-content-between py-3 px-4 border-bottom border-light">
|
<div class="d-flex align-items-center justify-content-between py-3 px-4 border-bottom border-light">
|
||||||
<h5 class="m-0">Notifications</h5>
|
<h5 class="m-0">Notifications</h5>
|
||||||
<form id="notificationsForm" asp-controller="Notifications" asp-action="MarkAllAsSeen" asp-route-returnUrl="@Context.Request.GetCurrentPathWithQueryString()" method="post">
|
<form id="notificationsForm" asp-controller="UINotifications" asp-action="MarkAllAsSeen" asp-route-returnUrl="@Context.Request.GetCurrentPathWithQueryString()" method="post">
|
||||||
<button class="btn btn-link p-0" type="submit">Mark all as seen</button>
|
<button class="btn btn-link p-0" type="submit">Mark all as seen</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<partial name="Components/Notifications/List" model="Model"/>
|
<partial name="Components/Notifications/List" model="Model"/>
|
||||||
<div class="p-3">
|
<div class="p-3">
|
||||||
<a asp-controller="Notifications" asp-action="Index">View all</a>
|
<a asp-controller="UINotifications" asp-action="Index">View all</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<a asp-controller="Notifications" asp-action="Index" id="NotificationsHandle" class="mainMenuButton @ViewData.IsActiveCategory(typeof(NotificationsNavPages))" title="Notifications">
|
<a asp-controller="UINotifications" asp-action="Index" id="NotificationsHandle" class="mainMenuButton @ViewData.IsActiveCategory(typeof(NotificationsNavPages))" title="Notifications">
|
||||||
<vc:icon symbol="notifications" />
|
<vc:icon symbol="notifications" />
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div id="NotificationsList">
|
<div id="NotificationsList">
|
||||||
@foreach (var n in Model.Last5)
|
@foreach (var n in Model.Last5)
|
||||||
{
|
{
|
||||||
<a asp-action="NotificationPassThrough" asp-controller="Notifications" asp-route-id="@n.Id" class="notification d-flex align-items-center dropdown-item border-bottom border-light py-3 px-4">
|
<a asp-action="NotificationPassThrough" asp-controller="UINotifications" asp-route-id="@n.Id" class="notification d-flex align-items-center dropdown-item border-bottom border-light py-3 px-4">
|
||||||
<div class="me-3">
|
<div class="me-3">
|
||||||
<vc:icon symbol="note" />
|
<vc:icon symbol="note" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
<div class="d-flex align-items-center justify-content-between mb-3">
|
<div class="d-flex align-items-center justify-content-between mb-3">
|
||||||
<h4 class="mb-0">Recent Notifications</h4>
|
<h4 class="mb-0">Recent Notifications</h4>
|
||||||
<a asp-controller="Notifications" asp-action="Index">View all</a>
|
<a asp-controller="UINotifications" asp-action="Index">View all</a>
|
||||||
</div>
|
</div>
|
||||||
<partial name="Components/Notifications/List" model="Model"/>
|
<partial name="Components/Notifications/List" model="Model"/>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,21 +12,21 @@
|
|||||||
<li>
|
<li>
|
||||||
@if (option.WalletId != null)
|
@if (option.WalletId != null)
|
||||||
{
|
{
|
||||||
<a asp-controller="Wallets" asp-action="WalletTransactions" asp-route-walletId="@option.WalletId" class="dropdown-item@(option.Selected ? " active" : "")" id="StoreSelectorMenuItem-@option.Value">@option.Text</a>
|
<a asp-controller="UIWallets" asp-action="WalletTransactions" asp-route-walletId="@option.WalletId" class="dropdown-item@(option.Selected ? " active" : "")" id="StoreSelectorMenuItem-@option.Value">@option.Text</a>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<a asp-controller="Stores" asp-action="Dashboard" asp-route-storeId="@option.Value" class="dropdown-item@(option.Selected ? " active" : "")" id="StoreSelectorMenuItem-@option.Value">@option.Text</a>
|
<a asp-controller="UIStores" asp-action="Dashboard" asp-route-storeId="@option.Value" class="dropdown-item@(option.Selected ? " active" : "")" id="StoreSelectorMenuItem-@option.Value">@option.Text</a>
|
||||||
}
|
}
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a asp-controller="UserStores" asp-action="CreateStore" class="dropdown-item" id="StoreSelectorCreate">Create Store</a></li>
|
<li><a asp-controller="UIUserStores" asp-action="CreateStore" class="dropdown-item" id="StoreSelectorCreate">Create Store</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<a asp-controller="UserStores" asp-action="CreateStore" class="btn btn-primary w-100 rounded-pill" id="StoreSelectorCreate">Create Store</a>
|
<a asp-controller="UIUserStores" asp-action="CreateStore" class="btn btn-primary w-100 rounded-pill" id="StoreSelectorCreate">Create Store</a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policies.CanCreateInvoice, AuthenticationSchemes = AuthenticationSchemes.Bitpay)]
|
[Authorize(Policies.CanCreateInvoice, AuthenticationSchemes = AuthenticationSchemes.Bitpay)]
|
||||||
public class BitpayInvoiceController : Controller
|
public class BitpayInvoiceController : Controller
|
||||||
{
|
{
|
||||||
private readonly InvoiceController _InvoiceController;
|
private readonly UIInvoiceController _InvoiceController;
|
||||||
private readonly InvoiceRepository _InvoiceRepository;
|
private readonly InvoiceRepository _InvoiceRepository;
|
||||||
|
|
||||||
public BitpayInvoiceController(InvoiceController invoiceController,
|
public BitpayInvoiceController(UIInvoiceController invoiceController,
|
||||||
InvoiceRepository invoiceRepository)
|
InvoiceRepository invoiceRepository)
|
||||||
{
|
{
|
||||||
_InvoiceController = invoiceController;
|
_InvoiceController = invoiceController;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
[EnableCors(CorsPolicies.All)]
|
[EnableCors(CorsPolicies.All)]
|
||||||
public class GreenfieldInvoiceController : Controller
|
public class GreenfieldInvoiceController : Controller
|
||||||
{
|
{
|
||||||
private readonly InvoiceController _invoiceController;
|
private readonly UIInvoiceController _invoiceController;
|
||||||
private readonly InvoiceRepository _invoiceRepository;
|
private readonly InvoiceRepository _invoiceRepository;
|
||||||
private readonly LinkGenerator _linkGenerator;
|
private readonly LinkGenerator _linkGenerator;
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
@@ -33,7 +33,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
|
|
||||||
public LanguageService LanguageService { get; }
|
public LanguageService LanguageService { get; }
|
||||||
|
|
||||||
public GreenfieldInvoiceController(InvoiceController invoiceController, InvoiceRepository invoiceRepository,
|
public GreenfieldInvoiceController(UIInvoiceController invoiceController, InvoiceRepository invoiceRepository,
|
||||||
LinkGenerator linkGenerator, LanguageService languageService, BTCPayNetworkProvider btcPayNetworkProvider,
|
LinkGenerator linkGenerator, LanguageService languageService, BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
EventAggregator eventAggregator, PaymentMethodHandlerDictionary paymentMethodHandlerDictionary)
|
EventAggregator eventAggregator, PaymentMethodHandlerDictionary paymentMethodHandlerDictionary)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -151,8 +151,8 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
Period = ppBlob.Period,
|
Period = ppBlob.Period,
|
||||||
Archived = pp.Archived,
|
Archived = pp.Archived,
|
||||||
ViewLink = _linkGenerator.GetUriByAction(
|
ViewLink = _linkGenerator.GetUriByAction(
|
||||||
nameof(PullPaymentController.ViewPullPayment),
|
nameof(UIPullPaymentController.ViewPullPayment),
|
||||||
"PullPayment",
|
"UIPullPayment",
|
||||||
new { pullPaymentId = pp.Id },
|
new { pullPaymentId = pp.Id },
|
||||||
Request.Scheme,
|
Request.Scheme,
|
||||||
Request.Host,
|
Request.Host,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
private readonly ExplorerClientProvider _explorerClientProvider;
|
private readonly ExplorerClientProvider _explorerClientProvider;
|
||||||
private readonly ISettingsRepository _settingsRepository;
|
private readonly ISettingsRepository _settingsRepository;
|
||||||
private readonly NBXplorerDashboard _nbXplorerDashboard;
|
private readonly NBXplorerDashboard _nbXplorerDashboard;
|
||||||
private readonly WalletsController _walletsController;
|
private readonly UIWalletsController _walletsController;
|
||||||
private readonly PayjoinClient _payjoinClient;
|
private readonly PayjoinClient _payjoinClient;
|
||||||
private readonly DelayedTransactionBroadcaster _delayedTransactionBroadcaster;
|
private readonly DelayedTransactionBroadcaster _delayedTransactionBroadcaster;
|
||||||
private readonly EventAggregator _eventAggregator;
|
private readonly EventAggregator _eventAggregator;
|
||||||
@@ -58,7 +58,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
ExplorerClientProvider explorerClientProvider,
|
ExplorerClientProvider explorerClientProvider,
|
||||||
ISettingsRepository settingsRepository,
|
ISettingsRepository settingsRepository,
|
||||||
NBXplorerDashboard nbXplorerDashboard,
|
NBXplorerDashboard nbXplorerDashboard,
|
||||||
WalletsController walletsController,
|
UIWalletsController walletsController,
|
||||||
PayjoinClient payjoinClient,
|
PayjoinClient payjoinClient,
|
||||||
DelayedTransactionBroadcaster delayedTransactionBroadcaster,
|
DelayedTransactionBroadcaster delayedTransactionBroadcaster,
|
||||||
EventAggregator eventAggregator,
|
EventAggregator eventAggregator,
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
[EnableCors(CorsPolicies.All)]
|
[EnableCors(CorsPolicies.All)]
|
||||||
public class GreenfieldStoreWebhooksController : ControllerBase
|
public class GreenfieldStoreWebhooksController : ControllerBase
|
||||||
{
|
{
|
||||||
public StoreWebhooksController(StoreRepository storeRepository, WebhookSender webhookNotificationManager)
|
public GreenfieldStoreWebhooksController(StoreRepository storeRepository, WebhookSender webhookSender)
|
||||||
{
|
{
|
||||||
StoreRepository = storeRepository;
|
StoreRepository = storeRepository;
|
||||||
WebhookNotificationManager = webhookNotificationManager;
|
WebhookSender = webhookSender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public StoreRepository StoreRepository { get; }
|
public StoreRepository StoreRepository { get; }
|
||||||
public WebhookSender WebhookNotificationManager { get; }
|
public WebhookSender WebhookSender { get; }
|
||||||
|
|
||||||
[HttpGet("~/api/v1/stores/{storeId}/webhooks/{webhookId?}")]
|
[HttpGet("~/api/v1/stores/{storeId}/webhooks/{webhookId?}")]
|
||||||
public async Task<IActionResult> ListWebhooks(string storeId, string webhookId)
|
public async Task<IActionResult> ListWebhooks(string storeId, string webhookId)
|
||||||
@@ -152,7 +152,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
var delivery = await StoreRepository.GetWebhookDelivery(CurrentStoreId, webhookId, deliveryId);
|
var delivery = await StoreRepository.GetWebhookDelivery(CurrentStoreId, webhookId, deliveryId);
|
||||||
if (delivery is null)
|
if (delivery is null)
|
||||||
return WebhookDeliveryNotFound();
|
return WebhookDeliveryNotFound();
|
||||||
return this.Ok(new JValue(await WebhookNotificationManager.Redeliver(deliveryId)));
|
return this.Ok(new JValue(await WebhookSender.Redeliver(deliveryId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("~/api/v1/stores/{storeId}/webhooks/{webhookId}/deliveries/{deliveryId}/request")]
|
[HttpGet("~/api/v1/stores/{storeId}/webhooks/{webhookId}/deliveries/{deliveryId}/request")]
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
private readonly GreenfieldServerInfoController _greenFieldServerInfoController;
|
private readonly GreenfieldServerInfoController _greenFieldServerInfoController;
|
||||||
private readonly GreenfieldStoreWebhooksController _storeWebhooksController;
|
private readonly GreenfieldStoreWebhooksController _storeWebhooksController;
|
||||||
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
|
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
|
||||||
private readonly HomeController _homeController;
|
private readonly UIHomeController _homeController;
|
||||||
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
|
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
|
||||||
|
|
||||||
public BTCPayServerClientFactory(StoreRepository storeRepository,
|
public BTCPayServerClientFactory(StoreRepository storeRepository,
|
||||||
@@ -72,7 +72,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
GreenfieldServerInfoController greenFieldServerInfoController,
|
GreenfieldServerInfoController greenFieldServerInfoController,
|
||||||
GreenfieldStoreWebhooksController storeWebhooksController,
|
GreenfieldStoreWebhooksController storeWebhooksController,
|
||||||
GreenfieldPullPaymentController greenfieldPullPaymentController,
|
GreenfieldPullPaymentController greenfieldPullPaymentController,
|
||||||
HomeController homeController,
|
UIHomeController homeController,
|
||||||
GreenfieldStorePaymentMethodsController storePaymentMethodsController)
|
GreenfieldStorePaymentMethodsController storePaymentMethodsController)
|
||||||
{
|
{
|
||||||
_storeRepository = storeRepository;
|
_storeRepository = storeRepository;
|
||||||
@@ -173,7 +173,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
private readonly GreenfieldServerInfoController _greenFieldServerInfoController;
|
private readonly GreenfieldServerInfoController _greenFieldServerInfoController;
|
||||||
private readonly GreenfieldStoreWebhooksController _storeWebhooksController;
|
private readonly GreenfieldStoreWebhooksController _storeWebhooksController;
|
||||||
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
|
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
|
||||||
private readonly HomeController _homeController;
|
private readonly UIHomeController _homeController;
|
||||||
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
|
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
|
||||||
|
|
||||||
public LocalBTCPayServerClient(GreenfieldStoreOnChainPaymentMethodsController chainPaymentMethodsController,
|
public LocalBTCPayServerClient(GreenfieldStoreOnChainPaymentMethodsController chainPaymentMethodsController,
|
||||||
@@ -192,7 +192,7 @@ namespace BTCPayServer.Controllers.GreenField
|
|||||||
GreenfieldServerInfoController greenFieldServerInfoController,
|
GreenfieldServerInfoController greenFieldServerInfoController,
|
||||||
GreenfieldStoreWebhooksController storeWebhooksController,
|
GreenfieldStoreWebhooksController storeWebhooksController,
|
||||||
GreenfieldPullPaymentController greenfieldPullPaymentController,
|
GreenfieldPullPaymentController greenfieldPullPaymentController,
|
||||||
HomeController homeController,
|
UIHomeController homeController,
|
||||||
GreenfieldStorePaymentMethodsController storePaymentMethodsController,
|
GreenfieldStorePaymentMethodsController storePaymentMethodsController,
|
||||||
IHttpContextAccessor httpContextAccessor) : base(new Uri("https://dummy.local"), "", "")
|
IHttpContextAccessor httpContextAccessor) : base(new Uri("https://dummy.local"), "", "")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ using NicolasDorier.RateLimits;
|
|||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public class AccountController : Controller
|
public class UIAccountController : Controller
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
private readonly SignInManager<ApplicationUser> _signInManager;
|
private readonly SignInManager<ApplicationUser> _signInManager;
|
||||||
@@ -39,7 +39,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
public Logs Logs { get; }
|
public Logs Logs { get; }
|
||||||
|
|
||||||
public AccountController(
|
public UIAccountController(
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
RoleManager<IdentityRole> roleManager,
|
RoleManager<IdentityRole> roleManager,
|
||||||
SignInManager<ApplicationUser> signInManager,
|
SignInManager<ApplicationUser> signInManager,
|
||||||
@@ -432,7 +432,7 @@ namespace BTCPayServer.Controllers
|
|||||||
}
|
}
|
||||||
var policies = await _SettingsRepository.GetSettingAsync<PoliciesSettings>() ?? new PoliciesSettings();
|
var policies = await _SettingsRepository.GetSettingAsync<PoliciesSettings>() ?? new PoliciesSettings();
|
||||||
if (policies.LockSubscription && !User.IsInRole(Roles.ServerAdmin))
|
if (policies.LockSubscription && !User.IsInRole(Roles.ServerAdmin))
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
ViewData["ReturnUrl"] = returnUrl;
|
ViewData["ReturnUrl"] = returnUrl;
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
@@ -451,7 +451,7 @@ namespace BTCPayServer.Controllers
|
|||||||
ViewData["Logon"] = logon.ToString(CultureInfo.InvariantCulture).ToLowerInvariant();
|
ViewData["Logon"] = logon.ToString(CultureInfo.InvariantCulture).ToLowerInvariant();
|
||||||
var policies = await _SettingsRepository.GetSettingAsync<PoliciesSettings>() ?? new PoliciesSettings();
|
var policies = await _SettingsRepository.GetSettingAsync<PoliciesSettings>() ?? new PoliciesSettings();
|
||||||
if (policies.LockSubscription && !User.IsInRole(Roles.ServerAdmin))
|
if (policies.LockSubscription && !User.IsInRole(Roles.ServerAdmin))
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid)
|
||||||
{
|
{
|
||||||
var user = new ApplicationUser
|
var user = new ApplicationUser
|
||||||
@@ -513,7 +513,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
await _signInManager.SignOutAsync();
|
await _signInManager.SignOutAsync();
|
||||||
_logger.LogInformation("User logged out.");
|
_logger.LogInformation("User logged out.");
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("/register/confirm-email")]
|
[HttpGet("/register/confirm-email")]
|
||||||
@@ -522,7 +522,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
if (userId == null || code == null)
|
if (userId == null || code == null)
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
var user = await _userManager.FindByIdAsync(userId);
|
var user = await _userManager.FindByIdAsync(userId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
@@ -663,7 +663,7 @@ namespace BTCPayServer.Controllers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class AppsController
|
public partial class UIAppsController
|
||||||
{
|
{
|
||||||
public class AppUpdated
|
public class AppUpdated
|
||||||
{
|
{
|
||||||
@@ -11,7 +11,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class AppsController
|
public partial class UIAppsController
|
||||||
{
|
{
|
||||||
public class PointOfSaleSettings
|
public class PointOfSaleSettings
|
||||||
{
|
{
|
||||||
@@ -18,9 +18,9 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
[Route("apps")]
|
[Route("apps")]
|
||||||
public partial class AppsController : Controller
|
public partial class UIAppsController : Controller
|
||||||
{
|
{
|
||||||
public AppsController(
|
public UIAppsController(
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
EventAggregator eventAggregator,
|
EventAggregator eventAggregator,
|
||||||
CurrencyNameTable currencies,
|
CurrencyNameTable currencies,
|
||||||
@@ -18,15 +18,15 @@ using Microsoft.AspNetCore.Http.Extensions;
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using NBitpayClient;
|
using NBitpayClient;
|
||||||
using static BTCPayServer.Controllers.AppsController;
|
using static BTCPayServer.Controllers.UIAppsController;
|
||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public class AppsPublicController : Controller
|
public class UIAppsPublicController : Controller
|
||||||
{
|
{
|
||||||
public AppsPublicController(AppService appService,
|
public UIAppsPublicController(AppService appService,
|
||||||
BTCPayServerOptions btcPayServerOptions,
|
BTCPayServerOptions btcPayServerOptions,
|
||||||
InvoiceController invoiceController,
|
UIInvoiceController invoiceController,
|
||||||
UserManager<ApplicationUser> userManager)
|
UserManager<ApplicationUser> userManager)
|
||||||
{
|
{
|
||||||
_AppService = appService;
|
_AppService = appService;
|
||||||
@@ -37,7 +37,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
private readonly AppService _AppService;
|
private readonly AppService _AppService;
|
||||||
private readonly BTCPayServerOptions _BtcPayServerOptions;
|
private readonly BTCPayServerOptions _BtcPayServerOptions;
|
||||||
private readonly InvoiceController _InvoiceController;
|
private readonly UIInvoiceController _InvoiceController;
|
||||||
private readonly UserManager<ApplicationUser> _UserManager;
|
private readonly UserManager<ApplicationUser> _UserManager;
|
||||||
|
|
||||||
[HttpGet("/apps/{appId}")]
|
[HttpGet("/apps/{appId}")]
|
||||||
@@ -236,7 +236,7 @@ namespace BTCPayServer.Controllers
|
|||||||
}, store, HttpContext.Request.GetAbsoluteRoot(),
|
}, store, HttpContext.Request.GetAbsoluteRoot(),
|
||||||
new List<string>() { AppService.GetAppInternalTag(appId) },
|
new List<string>() { AppService.GetAppInternalTag(appId) },
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
return RedirectToAction(nameof(InvoiceController.Checkout), "Invoice", new { invoiceId = invoice.Data.Id });
|
return RedirectToAction(nameof(UIInvoiceController.Checkout), "UIInvoice", new { invoiceId = invoice.Data.Id });
|
||||||
}
|
}
|
||||||
catch (BitpayHttpException e)
|
catch (BitpayHttpException e)
|
||||||
{
|
{
|
||||||
@@ -390,7 +390,7 @@ namespace BTCPayServer.Controllers
|
|||||||
cancellationToken: cancellationToken);
|
cancellationToken: cancellationToken);
|
||||||
if (request.RedirectToCheckout)
|
if (request.RedirectToCheckout)
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(InvoiceController.Checkout), "Invoice",
|
return RedirectToAction(nameof(UIInvoiceController.Checkout), "UIInvoice",
|
||||||
new { invoiceId = invoice.Data.Id });
|
new { invoiceId = invoice.Data.Id });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public class ErrorController : Controller
|
public class UIErrorController : Controller
|
||||||
{
|
{
|
||||||
[Route("/errors/{statusCode:int}")]
|
[Route("/errors/{statusCode:int}")]
|
||||||
public IActionResult Handle(int? statusCode = null)
|
public IActionResult Handle(int? statusCode = null)
|
||||||
@@ -36,7 +36,7 @@ using Newtonsoft.Json.Linq;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public class HomeController : Controller
|
public class UIHomeController : Controller
|
||||||
{
|
{
|
||||||
private readonly ISettingsRepository _settingsRepository;
|
private readonly ISettingsRepository _settingsRepository;
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly StoreRepository _storeRepository;
|
||||||
@@ -46,7 +46,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private SignInManager<ApplicationUser> SignInManager { get; }
|
private SignInManager<ApplicationUser> SignInManager { get; }
|
||||||
public LanguageService LanguageService { get; }
|
public LanguageService LanguageService { get; }
|
||||||
|
|
||||||
public HomeController(IHttpClientFactory httpClientFactory,
|
public UIHomeController(IHttpClientFactory httpClientFactory,
|
||||||
ISettingsRepository settingsRepository,
|
ISettingsRepository settingsRepository,
|
||||||
IWebHostEnvironment webHostEnvironment,
|
IWebHostEnvironment webHostEnvironment,
|
||||||
LanguageService languageService,
|
LanguageService languageService,
|
||||||
@@ -69,7 +69,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
if ((await _settingsRepository.GetTheme()).FirstRun)
|
if ((await _settingsRepository.GetTheme()).FirstRun)
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(AccountController.Register), "Account");
|
return RedirectToAction(nameof(UIAccountController.Register), "UIAccount");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SignInManager.IsSignedIn(User))
|
if (SignInManager.IsSignedIn(User))
|
||||||
@@ -10,7 +10,7 @@ using NBitcoin;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class InvoiceController
|
public partial class UIInvoiceController
|
||||||
{
|
{
|
||||||
public class FakePaymentRequest
|
public class FakePaymentRequest
|
||||||
{
|
{
|
||||||
@@ -35,7 +35,7 @@ using StoreData = BTCPayServer.Data.StoreData;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class InvoiceController
|
public partial class UIInvoiceController
|
||||||
{
|
{
|
||||||
[HttpGet("invoices/{invoiceId}/deliveries/{deliveryId}/request")]
|
[HttpGet("invoices/{invoiceId}/deliveries/{deliveryId}/request")]
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
@@ -101,8 +101,8 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
StoreId = store.Id,
|
StoreId = store.Id,
|
||||||
StoreName = store.StoreName,
|
StoreName = store.StoreName,
|
||||||
StoreLink = Url.Action(nameof(StoresController.PaymentMethods), "Stores", new { storeId = store.Id }),
|
StoreLink = Url.Action(nameof(UIStoresController.PaymentMethods), "UIStores", new { storeId = store.Id }),
|
||||||
PaymentRequestLink = Url.Action(nameof(PaymentRequestController.ViewPaymentRequest), "PaymentRequest", new { payReqId = invoice.Metadata.PaymentRequestId }),
|
PaymentRequestLink = Url.Action(nameof(UIPaymentRequestController.ViewPaymentRequest), "UIPaymentRequest", new { payReqId = invoice.Metadata.PaymentRequestId }),
|
||||||
Id = invoice.Id,
|
Id = invoice.Id,
|
||||||
State = invoiceState,
|
State = invoiceState,
|
||||||
TransactionSpeed = invoice.SpeedPolicy == SpeedPolicy.HighSpeed ? "high" :
|
TransactionSpeed = invoice.SpeedPolicy == SpeedPolicy.HighSpeed ? "high" :
|
||||||
@@ -178,8 +178,8 @@ namespace BTCPayServer.Controllers
|
|||||||
if (invoice.CurrentRefund?.PullPaymentDataId is string ppId && !invoice.CurrentRefund.PullPaymentData.Archived)
|
if (invoice.CurrentRefund?.PullPaymentDataId is string ppId && !invoice.CurrentRefund.PullPaymentData.Archived)
|
||||||
{
|
{
|
||||||
// TODO: Having dedicated UI later on
|
// TODO: Having dedicated UI later on
|
||||||
return RedirectToAction(nameof(PullPaymentController.ViewPullPayment),
|
return RedirectToAction(nameof(UIPullPaymentController.ViewPullPayment),
|
||||||
"PullPayment",
|
"UIPullPayment",
|
||||||
new { pullPaymentId = ppId });
|
new { pullPaymentId = ppId });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,8 +369,8 @@ namespace BTCPayServer.Controllers
|
|||||||
});
|
});
|
||||||
await ctx.SaveChangesAsync(cancellationToken);
|
await ctx.SaveChangesAsync(cancellationToken);
|
||||||
// TODO: Having dedicated UI later on
|
// TODO: Having dedicated UI later on
|
||||||
return RedirectToAction(nameof(PullPaymentController.ViewPullPayment),
|
return RedirectToAction(nameof(UIPullPaymentController.ViewPullPayment),
|
||||||
"PullPayment",
|
"UIPullPayment",
|
||||||
new { pullPaymentId = ppId });
|
new { pullPaymentId = ppId });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -857,7 +857,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (!stores.Any())
|
if (!stores.Any())
|
||||||
{
|
{
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "You need to create at least one store before creating a transaction";
|
TempData[WellKnownTempData.ErrorMessage] = "You need to create at least one store before creating a transaction";
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model?.StoreId != null)
|
if (model?.StoreId != null)
|
||||||
@@ -898,7 +898,7 @@ namespace BTCPayServer.Controllers
|
|||||||
TempData.SetStatusMessageModel(new StatusMessageModel
|
TempData.SetStatusMessageModel(new StatusMessageModel
|
||||||
{
|
{
|
||||||
Severity = StatusMessageModel.StatusSeverity.Error,
|
Severity = StatusMessageModel.StatusSeverity.Error,
|
||||||
Html = $"To create an invoice, you need to <a href='{Url.Action(nameof(StoresController.PaymentMethods), "Stores", new { storeId = store.Id })}' class='alert-link'>set up a payment method</a> first",
|
Html = $"To create an invoice, you need to <a href='{Url.Action(nameof(UIStoresController.PaymentMethods), "UIStores", new { storeId = store.Id })}' class='alert-link'>set up a payment method</a> first",
|
||||||
AllowDismiss = false
|
AllowDismiss = false
|
||||||
});
|
});
|
||||||
return View(model);
|
return View(model);
|
||||||
@@ -29,7 +29,7 @@ using StoreData = BTCPayServer.Data.StoreData;
|
|||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
[Filters.BitpayAPIConstraint(false)]
|
[Filters.BitpayAPIConstraint(false)]
|
||||||
public partial class InvoiceController : Controller
|
public partial class UIInvoiceController : Controller
|
||||||
{
|
{
|
||||||
readonly InvoiceRepository _InvoiceRepository;
|
readonly InvoiceRepository _InvoiceRepository;
|
||||||
readonly RateFetcher _RateProvider;
|
readonly RateFetcher _RateProvider;
|
||||||
@@ -45,7 +45,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
public WebhookSender WebhookNotificationManager { get; }
|
public WebhookSender WebhookNotificationManager { get; }
|
||||||
|
|
||||||
public InvoiceController(
|
public UIInvoiceController(
|
||||||
InvoiceRepository invoiceRepository,
|
InvoiceRepository invoiceRepository,
|
||||||
CurrencyNameTable currencyNameTable,
|
CurrencyNameTable currencyNameTable,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
@@ -35,7 +35,8 @@ using Newtonsoft.Json;
|
|||||||
namespace BTCPayServer
|
namespace BTCPayServer
|
||||||
{
|
{
|
||||||
[Route("~/{cryptoCode}/[controller]/")]
|
[Route("~/{cryptoCode}/[controller]/")]
|
||||||
public class LNURLController : Controller
|
[Route("~/{cryptoCode}/lnurl/")]
|
||||||
|
public class UILNURLController : Controller
|
||||||
{
|
{
|
||||||
private readonly InvoiceRepository _invoiceRepository;
|
private readonly InvoiceRepository _invoiceRepository;
|
||||||
private readonly EventAggregator _eventAggregator;
|
private readonly EventAggregator _eventAggregator;
|
||||||
@@ -43,17 +44,17 @@ namespace BTCPayServer
|
|||||||
private readonly LightningLikePaymentHandler _lightningLikePaymentHandler;
|
private readonly LightningLikePaymentHandler _lightningLikePaymentHandler;
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly StoreRepository _storeRepository;
|
||||||
private readonly AppService _appService;
|
private readonly AppService _appService;
|
||||||
private readonly InvoiceController _invoiceController;
|
private readonly UIInvoiceController _invoiceController;
|
||||||
private readonly SettingsRepository _settingsRepository;
|
private readonly SettingsRepository _settingsRepository;
|
||||||
private readonly LinkGenerator _linkGenerator;
|
private readonly LinkGenerator _linkGenerator;
|
||||||
|
|
||||||
public LNURLController(InvoiceRepository invoiceRepository,
|
public UILNURLController(InvoiceRepository invoiceRepository,
|
||||||
EventAggregator eventAggregator,
|
EventAggregator eventAggregator,
|
||||||
BTCPayNetworkProvider btcPayNetworkProvider,
|
BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
LightningLikePaymentHandler lightningLikePaymentHandler,
|
LightningLikePaymentHandler lightningLikePaymentHandler,
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
AppService appService,
|
AppService appService,
|
||||||
InvoiceController invoiceController,
|
UIInvoiceController invoiceController,
|
||||||
SettingsRepository settingsRepository,
|
SettingsRepository settingsRepository,
|
||||||
LinkGenerator linkGenerator)
|
LinkGenerator linkGenerator)
|
||||||
{
|
{
|
||||||
@@ -115,7 +116,7 @@ namespace BTCPayServer
|
|||||||
items = _appService.Parse(cfS.PerksTemplate, cfS.TargetCurrency);
|
items = _appService.Parse(cfS.PerksTemplate, cfS.TargetCurrency);
|
||||||
break;
|
break;
|
||||||
case nameof(AppType.PointOfSale):
|
case nameof(AppType.PointOfSale):
|
||||||
var posS = app.GetSettings<AppsController.PointOfSaleSettings>();
|
var posS = app.GetSettings<UIAppsController.PointOfSaleSettings>();
|
||||||
currencyCode = posS.Currency;
|
currencyCode = posS.Currency;
|
||||||
items = _appService.Parse(posS.Template, posS.Currency);
|
items = _appService.Parse(posS.Template, posS.Currency);
|
||||||
break;
|
break;
|
||||||
@@ -285,7 +286,7 @@ namespace BTCPayServer
|
|||||||
Metadata = JsonConvert.SerializeObject(lnurlMetadata),
|
Metadata = JsonConvert.SerializeObject(lnurlMetadata),
|
||||||
Callback = new Uri(_linkGenerator.GetUriByAction(
|
Callback = new Uri(_linkGenerator.GetUriByAction(
|
||||||
action: nameof(GetLNURLForInvoice),
|
action: nameof(GetLNURLForInvoice),
|
||||||
controller: "LNURL",
|
controller: "UILNURL",
|
||||||
values: new { cryptoCode, invoiceId = i.Id }, Request.Scheme, Request.Host, Request.PathBase))
|
values: new { cryptoCode, invoiceId = i.Id }, Request.Scheme, Request.Host, Request.PathBase))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -462,7 +463,7 @@ namespace BTCPayServer
|
|||||||
Message = "LNURL is required for lightning addresses but has not yet been enabled.",
|
Message = "LNURL is required for lightning addresses but has not yet been enabled.",
|
||||||
Severity = StatusMessageModel.StatusSeverity.Error
|
Severity = StatusMessageModel.StatusSeverity.Error
|
||||||
});
|
});
|
||||||
return RedirectToAction("PaymentMethods", "Stores", new { storeId });
|
return RedirectToAction("PaymentMethods", "UIStores", new { storeId });
|
||||||
}
|
}
|
||||||
var lightningAddressSettings = await _settingsRepository.GetSettingAsync<LightningAddressSettings>() ??
|
var lightningAddressSettings = await _settingsRepository.GetSettingAsync<LightningAddressSettings>() ??
|
||||||
new LightningAddressSettings();
|
new LightningAddressSettings();
|
||||||
@@ -11,7 +11,7 @@ using Microsoft.Extensions.Logging;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ManageController
|
public partial class UIManageController
|
||||||
{
|
{
|
||||||
private const string RecoveryCodesKey = nameof(RecoveryCodesKey);
|
private const string RecoveryCodesKey = nameof(RecoveryCodesKey);
|
||||||
private const string AuthenicatorUriFormat = "otpauth://totp/{0}:{1}?secret={2}&issuer={0}&digits=6";
|
private const string AuthenicatorUriFormat = "otpauth://totp/{0}:{1}?secret={2}&issuer={0}&digits=6";
|
||||||
@@ -16,7 +16,7 @@ using NBitcoin.DataEncoders;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ManageController
|
public partial class UIManageController
|
||||||
{
|
{
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> APIKeys()
|
public async Task<IActionResult> APIKeys()
|
||||||
@@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ManageController
|
public partial class UIManageController
|
||||||
{
|
{
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> LoginCodes()
|
public async Task<IActionResult> LoginCodes()
|
||||||
@@ -11,7 +11,7 @@ using Microsoft.AspNetCore.Mvc.Rendering;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ManageController
|
public partial class UIManageController
|
||||||
{
|
{
|
||||||
[HttpGet("notifications")]
|
[HttpGet("notifications")]
|
||||||
public async Task<IActionResult> NotificationSettings([FromServices] IEnumerable<INotificationHandler> notificationHandlers)
|
public async Task<IActionResult> NotificationSettings([FromServices] IEnumerable<INotificationHandler> notificationHandlers)
|
||||||
@@ -24,7 +24,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanViewProfile)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanViewProfile)]
|
||||||
[Route("[controller]/[action]")]
|
[Route("[controller]/[action]")]
|
||||||
public partial class ManageController : Controller
|
public partial class UIManageController : Controller
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
private readonly SignInManager<ApplicationUser> _signInManager;
|
private readonly SignInManager<ApplicationUser> _signInManager;
|
||||||
@@ -40,11 +40,11 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly UserService _userService;
|
private readonly UserService _userService;
|
||||||
readonly StoreRepository _StoreRepository;
|
readonly StoreRepository _StoreRepository;
|
||||||
|
|
||||||
public ManageController(
|
public UIManageController(
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
SignInManager<ApplicationUser> signInManager,
|
SignInManager<ApplicationUser> signInManager,
|
||||||
EmailSenderFactory emailSenderFactory,
|
EmailSenderFactory emailSenderFactory,
|
||||||
ILogger<ManageController> logger,
|
ILogger<UIManageController> logger,
|
||||||
UrlEncoder urlEncoder,
|
UrlEncoder urlEncoder,
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
BTCPayServerEnvironment btcPayServerEnvironment,
|
BTCPayServerEnvironment btcPayServerEnvironment,
|
||||||
@@ -278,7 +278,7 @@ namespace BTCPayServer.Controllers
|
|||||||
await _userService.DeleteUserAndAssociatedData(user);
|
await _userService.DeleteUserAndAssociatedData(user);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Account successfully deleted.";
|
TempData[WellKnownTempData.SuccessMessage] = "Account successfully deleted.";
|
||||||
await _signInManager.SignOutAsync();
|
await _signInManager.SignOutAsync();
|
||||||
return RedirectToAction(nameof(AccountController.Login), "Account");
|
return RedirectToAction(nameof(UIAccountController.Login), "UIAccount");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[BitpayAPIConstraint(false)]
|
[BitpayAPIConstraint(false)]
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanViewNotificationsForUser)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanViewNotificationsForUser)]
|
||||||
[Route("[controller]/[action]")]
|
[Route("[controller]/[action]")]
|
||||||
public class NotificationsController : Controller
|
public class UINotificationsController : Controller
|
||||||
{
|
{
|
||||||
private readonly BTCPayServerEnvironment _env;
|
private readonly BTCPayServerEnvironment _env;
|
||||||
private readonly NotificationSender _notificationSender;
|
private readonly NotificationSender _notificationSender;
|
||||||
@@ -29,7 +29,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly NotificationManager _notificationManager;
|
private readonly NotificationManager _notificationManager;
|
||||||
private readonly EventAggregator _eventAggregator;
|
private readonly EventAggregator _eventAggregator;
|
||||||
|
|
||||||
public NotificationsController(BTCPayServerEnvironment env,
|
public UINotificationsController(BTCPayServerEnvironment env,
|
||||||
NotificationSender notificationSender,
|
NotificationSender notificationSender,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
NotificationManager notificationManager,
|
NotificationManager notificationManager,
|
||||||
@@ -106,7 +106,7 @@ namespace BTCPayServer.Controllers
|
|||||||
public async Task<IActionResult> Index(int skip = 0, int count = 50, int timezoneOffset = 0)
|
public async Task<IActionResult> Index(int skip = 0, int count = 50, int timezoneOffset = 0)
|
||||||
{
|
{
|
||||||
if (!ValidUserClaim(out var userId))
|
if (!ValidUserClaim(out var userId))
|
||||||
return RedirectToAction("Index", "Home");
|
return RedirectToAction("Index", "UIHome");
|
||||||
|
|
||||||
var res = await _notificationManager.GetNotifications(new NotificationsQuery()
|
var res = await _notificationManager.GetNotifications(new NotificationsQuery()
|
||||||
{
|
{
|
||||||
@@ -25,9 +25,9 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[Route("payment-requests")]
|
[Route("payment-requests")]
|
||||||
public class PaymentRequestController : Controller
|
public class UIPaymentRequestController : Controller
|
||||||
{
|
{
|
||||||
private readonly InvoiceController _InvoiceController;
|
private readonly UIInvoiceController _InvoiceController;
|
||||||
private readonly UserManager<ApplicationUser> _UserManager;
|
private readonly UserManager<ApplicationUser> _UserManager;
|
||||||
private readonly PaymentRequestRepository _PaymentRequestRepository;
|
private readonly PaymentRequestRepository _PaymentRequestRepository;
|
||||||
private readonly PaymentRequestService _PaymentRequestService;
|
private readonly PaymentRequestService _PaymentRequestService;
|
||||||
@@ -36,8 +36,8 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly InvoiceRepository _InvoiceRepository;
|
private readonly InvoiceRepository _InvoiceRepository;
|
||||||
private readonly LinkGenerator _linkGenerator;
|
private readonly LinkGenerator _linkGenerator;
|
||||||
|
|
||||||
public PaymentRequestController(
|
public UIPaymentRequestController(
|
||||||
InvoiceController invoiceController,
|
UIInvoiceController invoiceController,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
PaymentRequestRepository paymentRequestRepository,
|
PaymentRequestRepository paymentRequestRepository,
|
||||||
PaymentRequestService paymentRequestService,
|
PaymentRequestService paymentRequestService,
|
||||||
@@ -220,7 +220,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
if (redirectToInvoice)
|
if (redirectToInvoice)
|
||||||
{
|
{
|
||||||
return RedirectToAction("Checkout", "Invoice", new { currentInvoice.Id });
|
return RedirectToAction("Checkout", "UIInvoice", new { currentInvoice.Id });
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(currentInvoice.Id);
|
return Ok(currentInvoice.Id);
|
||||||
@@ -260,7 +260,7 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
if (redirectToInvoice)
|
if (redirectToInvoice)
|
||||||
{
|
{
|
||||||
return RedirectToAction("Checkout", "Invoice", new { newInvoice.Id });
|
return RedirectToAction("Checkout", "UIInvoice", new { newInvoice.Id });
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(newInvoice.Id);
|
return Ok(newInvoice.Id);
|
||||||
@@ -11,16 +11,16 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public class PublicController : Controller
|
public class UIPublicController : Controller
|
||||||
{
|
{
|
||||||
public PublicController(InvoiceController invoiceController,
|
public UIPublicController(UIInvoiceController invoiceController,
|
||||||
StoreRepository storeRepository)
|
StoreRepository storeRepository)
|
||||||
{
|
{
|
||||||
_InvoiceController = invoiceController;
|
_InvoiceController = invoiceController;
|
||||||
_StoreRepository = storeRepository;
|
_StoreRepository = storeRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly InvoiceController _InvoiceController;
|
private readonly UIInvoiceController _InvoiceController;
|
||||||
private readonly StoreRepository _StoreRepository;
|
private readonly StoreRepository _StoreRepository;
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@@ -16,13 +16,13 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
[Route("embed/{storeId}/{cryptoCode}/ln")]
|
[Route("embed/{storeId}/{cryptoCode}/ln")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public class PublicLightningNodeInfoController : Controller
|
public class UIPublicLightningNodeInfoController : Controller
|
||||||
{
|
{
|
||||||
private readonly BTCPayNetworkProvider _BtcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _BtcPayNetworkProvider;
|
||||||
private readonly LightningLikePaymentHandler _LightningLikePaymentHandler;
|
private readonly LightningLikePaymentHandler _LightningLikePaymentHandler;
|
||||||
private readonly StoreRepository _StoreRepository;
|
private readonly StoreRepository _StoreRepository;
|
||||||
|
|
||||||
public PublicLightningNodeInfoController(BTCPayNetworkProvider btcPayNetworkProvider,
|
public UIPublicLightningNodeInfoController(BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
LightningLikePaymentHandler lightningLikePaymentHandler, StoreRepository storeRepository)
|
LightningLikePaymentHandler lightningLikePaymentHandler, StoreRepository storeRepository)
|
||||||
{
|
{
|
||||||
_BtcPayNetworkProvider = btcPayNetworkProvider;
|
_BtcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
@@ -19,7 +19,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public class PullPaymentController : Controller
|
public class UIPullPaymentController : Controller
|
||||||
{
|
{
|
||||||
private readonly ApplicationDbContextFactory _dbContextFactory;
|
private readonly ApplicationDbContextFactory _dbContextFactory;
|
||||||
private readonly BTCPayNetworkProvider _networkProvider;
|
private readonly BTCPayNetworkProvider _networkProvider;
|
||||||
@@ -28,7 +28,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly BTCPayNetworkJsonSerializerSettings _serializerSettings;
|
private readonly BTCPayNetworkJsonSerializerSettings _serializerSettings;
|
||||||
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
||||||
|
|
||||||
public PullPaymentController(ApplicationDbContextFactory dbContextFactory,
|
public UIPullPaymentController(ApplicationDbContextFactory dbContextFactory,
|
||||||
BTCPayNetworkProvider networkProvider,
|
BTCPayNetworkProvider networkProvider,
|
||||||
CurrencyNameTable currencyNameTable,
|
CurrencyNameTable currencyNameTable,
|
||||||
PullPaymentHostedService pullPaymentHostedService,
|
PullPaymentHostedService pullPaymentHostedService,
|
||||||
@@ -13,7 +13,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ServerController
|
public partial class UIServerController
|
||||||
{
|
{
|
||||||
[HttpGet("server/plugins")]
|
[HttpGet("server/plugins")]
|
||||||
public async Task<IActionResult> ListPlugins(
|
public async Task<IActionResult> ListPlugins(
|
||||||
@@ -27,7 +27,7 @@ using Newtonsoft.Json.Linq;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ServerController
|
public partial class UIServerController
|
||||||
{
|
{
|
||||||
[HttpGet("server/files")]
|
[HttpGet("server/files")]
|
||||||
public async Task<IActionResult> Files([FromQuery] string[] fileIds = null)
|
public async Task<IActionResult> Files([FromQuery] string[] fileIds = null)
|
||||||
@@ -260,7 +260,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[HttpPost("server/storage")]
|
[HttpPost("server/storage")]
|
||||||
public IActionResult Storage(StorageSettings viewModel)
|
public IActionResult Storage(StorageSettings viewModel)
|
||||||
{
|
{
|
||||||
return RedirectToAction("StorageProvider", "Server", new
|
return RedirectToAction("StorageProvider", "UIServer", new
|
||||||
{
|
{
|
||||||
provider = viewModel.Provider.ToString()
|
provider = viewModel.Provider.ToString()
|
||||||
});
|
});
|
||||||
@@ -16,7 +16,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class ServerController
|
public partial class UIServerController
|
||||||
{
|
{
|
||||||
[Route("server/users")]
|
[Route("server/users")]
|
||||||
public async Task<IActionResult> ListUsers(
|
public async Task<IActionResult> ListUsers(
|
||||||
@@ -42,7 +42,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
[Authorize(Policy = BTCPayServer.Client.Policies.CanModifyServerSettings,
|
[Authorize(Policy = BTCPayServer.Client.Policies.CanModifyServerSettings,
|
||||||
AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
public partial class ServerController : Controller
|
public partial class UIServerController : Controller
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _UserManager;
|
private readonly UserManager<ApplicationUser> _UserManager;
|
||||||
private readonly UserService _userService;
|
private readonly UserService _userService;
|
||||||
@@ -61,7 +61,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly FileService _FileService;
|
private readonly FileService _FileService;
|
||||||
private readonly IEnumerable<IStorageProviderService> _StorageProviderServices;
|
private readonly IEnumerable<IStorageProviderService> _StorageProviderServices;
|
||||||
|
|
||||||
public ServerController(
|
public UIServerController(
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
UserService userService,
|
UserService userService,
|
||||||
StoredFileRepository storedFileRepository,
|
StoredFileRepository storedFileRepository,
|
||||||
@@ -5,11 +5,11 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
namespace BTCPayServer.Storage
|
namespace BTCPayServer.Storage
|
||||||
{
|
{
|
||||||
[Route("Storage")]
|
[Route("Storage")]
|
||||||
public class StorageController : Controller
|
public class UIStorageController : Controller
|
||||||
{
|
{
|
||||||
private readonly FileService _FileService;
|
private readonly FileService _FileService;
|
||||||
|
|
||||||
public StorageController(FileService fileService)
|
public UIStorageController(FileService fileService)
|
||||||
{
|
{
|
||||||
_FileService = fileService;
|
_FileService = fileService;
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Route("stores/{storeId}/pull-payments")]
|
[Route("stores/{storeId}/pull-payments")]
|
||||||
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
public class StorePullPaymentsController : Controller
|
public class UIStorePullPaymentsController : Controller
|
||||||
{
|
{
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
||||||
@@ -44,7 +44,7 @@ namespace BTCPayServer.Controllers
|
|||||||
return HttpContext.GetStoreData();
|
return HttpContext.GetStoreData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public StorePullPaymentsController(BTCPayNetworkProvider btcPayNetworkProvider,
|
public UIStorePullPaymentsController(BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
IEnumerable<IPayoutHandler> payoutHandlers,
|
IEnumerable<IPayoutHandler> payoutHandlers,
|
||||||
CurrencyNameTable currencyNameTable,
|
CurrencyNameTable currencyNameTable,
|
||||||
PullPaymentHostedService pullPaymentHostedService,
|
PullPaymentHostedService pullPaymentHostedService,
|
||||||
@@ -74,7 +74,7 @@ namespace BTCPayServer.Controllers
|
|||||||
Message = "You must enable at least one payment method before creating a pull payment.",
|
Message = "You must enable at least one payment method before creating a pull payment.",
|
||||||
Severity = StatusMessageModel.StatusSeverity.Error
|
Severity = StatusMessageModel.StatusSeverity.Error
|
||||||
});
|
});
|
||||||
return RedirectToAction("PaymentMethods", "Stores", new { storeId });
|
return RedirectToAction("PaymentMethods", "UIStores", new { storeId });
|
||||||
}
|
}
|
||||||
return View(new NewPullPaymentModel
|
return View(new NewPullPaymentModel
|
||||||
{
|
{
|
||||||
@@ -439,7 +439,7 @@ namespace BTCPayServer.Controllers
|
|||||||
Message = "You must enable at least one payment method before creating a payout.",
|
Message = "You must enable at least one payment method before creating a payout.",
|
||||||
Severity = StatusMessageModel.StatusSeverity.Error
|
Severity = StatusMessageModel.StatusSeverity.Error
|
||||||
});
|
});
|
||||||
return RedirectToAction("PaymentMethods", "Stores", new { storeId });
|
return RedirectToAction("PaymentMethods", "UIStores", new { storeId });
|
||||||
}
|
}
|
||||||
|
|
||||||
var vm = this.ParseListQuery(new PayoutsModel
|
var vm = this.ParseListQuery(new PayoutsModel
|
||||||
@@ -9,7 +9,7 @@ using MimeKit;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class StoresController
|
public partial class UIStoresController
|
||||||
{
|
{
|
||||||
|
|
||||||
[Route("{storeId}/emails")]
|
[Route("{storeId}/emails")]
|
||||||
@@ -12,7 +12,7 @@ using NBitcoin.DataEncoders;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class StoresController
|
public partial class UIStoresController
|
||||||
{
|
{
|
||||||
[HttpGet("{storeId}/integrations")]
|
[HttpGet("{storeId}/integrations")]
|
||||||
public IActionResult Integrations()
|
public IActionResult Integrations()
|
||||||
@@ -13,7 +13,7 @@ using Microsoft.Extensions.DependencyInjection;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class StoresController
|
public partial class UIStoresController
|
||||||
{
|
{
|
||||||
[HttpGet("{storeId}/lightning/{cryptoCode}")]
|
[HttpGet("{storeId}/lightning/{cryptoCode}")]
|
||||||
public async Task<IActionResult> SetupLightningNode(string storeId, string cryptoCode)
|
public async Task<IActionResult> SetupLightningNode(string storeId, string cryptoCode)
|
||||||
@@ -26,7 +26,7 @@ using NBXplorer.Models;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class StoresController
|
public partial class UIStoresController
|
||||||
{
|
{
|
||||||
[HttpGet("{storeId}/onchain/{cryptoCode}")]
|
[HttpGet("{storeId}/onchain/{cryptoCode}")]
|
||||||
public ActionResult SetupWallet(WalletSetupViewModel vm)
|
public ActionResult SetupWallet(WalletSetupViewModel vm)
|
||||||
@@ -36,11 +36,11 @@ namespace BTCPayServer.Controllers
|
|||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
public partial class StoresController : Controller
|
public partial class UIStoresController : Controller
|
||||||
{
|
{
|
||||||
readonly RateFetcher _RateFactory;
|
readonly RateFetcher _RateFactory;
|
||||||
public string CreatedStoreId { get; set; }
|
public string CreatedStoreId { get; set; }
|
||||||
public StoresController(
|
public UIStoresController(
|
||||||
IServiceProvider serviceProvider,
|
IServiceProvider serviceProvider,
|
||||||
BTCPayServerOptions btcpayServerOptions,
|
BTCPayServerOptions btcpayServerOptions,
|
||||||
BTCPayServerEnvironment btcpayEnv,
|
BTCPayServerEnvironment btcpayEnv,
|
||||||
@@ -701,7 +701,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
await _Repo.DeleteStore(CurrentStore.Id);
|
await _Repo.DeleteStore(CurrentStore.Id);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store successfully deleted.";
|
TempData[WellKnownTempData.SuccessMessage] = "Store successfully deleted.";
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<AvailableRateProvider> GetSupportedExchanges()
|
private IEnumerable<AvailableRateProvider> GetSupportedExchanges()
|
||||||
@@ -873,7 +873,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (!model.Stores.Any())
|
if (!model.Stores.Any())
|
||||||
{
|
{
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "You need to be owner of at least one store before pairing";
|
TempData[WellKnownTempData.ErrorMessage] = "You need to be owner of at least one store before pairing";
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
@@ -932,7 +932,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (pairing == null)
|
if (pairing == null)
|
||||||
{
|
{
|
||||||
TempData[WellKnownTempData.ErrorMessage] = "Unknown pairing code";
|
TempData[WellKnownTempData.ErrorMessage] = "Unknown pairing code";
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -16,12 +16,12 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
[Route("stores")]
|
[Route("stores")]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
public class UserStoresController : Controller
|
public class UIUserStoresController : Controller
|
||||||
{
|
{
|
||||||
private readonly StoreRepository _repo;
|
private readonly StoreRepository _repo;
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
|
|
||||||
public UserStoresController(
|
public UIUserStoresController(
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
StoreRepository storeRepository)
|
StoreRepository storeRepository)
|
||||||
{
|
{
|
||||||
@@ -47,7 +47,7 @@ namespace BTCPayServer.Controllers
|
|||||||
var store = await _repo.CreateStore(GetUserId(), vm.Name);
|
var store = await _repo.CreateStore(GetUserId(), vm.Name);
|
||||||
CreatedStoreId = store.Id;
|
CreatedStoreId = store.Id;
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store successfully created";
|
TempData[WellKnownTempData.SuccessMessage] = "Store successfully created";
|
||||||
return RedirectToAction(nameof(StoresController.Dashboard), "Stores", new
|
return RedirectToAction(nameof(UIStoresController.Dashboard), "UIStores", new
|
||||||
{
|
{
|
||||||
storeId = store.Id
|
storeId = store.Id
|
||||||
});
|
});
|
||||||
@@ -78,7 +78,7 @@ namespace BTCPayServer.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
await _repo.RemoveStore(storeId, userId);
|
await _repo.RemoveStore(storeId, userId);
|
||||||
TempData[WellKnownTempData.SuccessMessage] = "Store removed successfully";
|
TempData[WellKnownTempData.SuccessMessage] = "Store removed successfully";
|
||||||
return RedirectToAction(nameof(HomeController.Index), "Home");
|
return RedirectToAction(nameof(UIHomeController.Index), "UIHome");
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetUserId() => _userManager.GetUserId(User);
|
private string GetUserId() => _userManager.GetUserId(User);
|
||||||
@@ -20,11 +20,11 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
[Route("vault")]
|
[Route("vault")]
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanModifyStoreSettings)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanModifyStoreSettings)]
|
||||||
public class VaultController : Controller
|
public class UIVaultController : Controller
|
||||||
{
|
{
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
|
|
||||||
public VaultController(BTCPayNetworkProvider networks, IAuthorizationService authorizationService)
|
public UIVaultController(BTCPayNetworkProvider networks, IAuthorizationService authorizationService)
|
||||||
{
|
{
|
||||||
Networks = networks;
|
Networks = networks;
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
@@ -20,7 +20,7 @@ using NBXplorer.Models;
|
|||||||
|
|
||||||
namespace BTCPayServer.Controllers
|
namespace BTCPayServer.Controllers
|
||||||
{
|
{
|
||||||
public partial class WalletsController
|
public partial class UIWalletsController
|
||||||
{
|
{
|
||||||
|
|
||||||
[NonAction]
|
[NonAction]
|
||||||
@@ -37,7 +37,7 @@ namespace BTCPayServer.Controllers
|
|||||||
[Route("wallets")]
|
[Route("wallets")]
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
public partial class WalletsController : Controller
|
public partial class UIWalletsController : Controller
|
||||||
{
|
{
|
||||||
private StoreRepository Repository { get; }
|
private StoreRepository Repository { get; }
|
||||||
private WalletRepository WalletRepository { get; }
|
private WalletRepository WalletRepository { get; }
|
||||||
@@ -64,7 +64,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
private readonly IEnumerable<IPayoutHandler> _payoutHandlers;
|
||||||
|
|
||||||
readonly CurrencyNameTable _currencyTable;
|
readonly CurrencyNameTable _currencyTable;
|
||||||
public WalletsController(StoreRepository repo,
|
public UIWalletsController(StoreRepository repo,
|
||||||
WalletRepository walletRepository,
|
WalletRepository walletRepository,
|
||||||
CurrencyNameTable currencyTable,
|
CurrencyNameTable currencyTable,
|
||||||
BTCPayNetworkProvider networkProvider,
|
BTCPayNetworkProvider networkProvider,
|
||||||
@@ -802,7 +802,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
SigningContext = signingContext,
|
SigningContext = signingContext,
|
||||||
WalletId = walletId.ToString(),
|
WalletId = walletId.ToString(),
|
||||||
WebsocketPath = this.Url.Action(nameof(VaultController.VaultBridgeConnection), "Vault", new { walletId = walletId.ToString() })
|
WebsocketPath = this.Url.Action(nameof(UIVaultController.VaultBridgeConnection), "UIVault", new { walletId = walletId.ToString() })
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -821,7 +821,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
var redirectVm = new PostRedirectViewModel
|
var redirectVm = new PostRedirectViewModel
|
||||||
{
|
{
|
||||||
AspController = "Wallets",
|
AspController = "UIWallets",
|
||||||
AspAction = nameof(WalletPSBTReady),
|
AspAction = nameof(WalletPSBTReady),
|
||||||
Parameters =
|
Parameters =
|
||||||
{
|
{
|
||||||
@@ -854,7 +854,7 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
var redirectVm = new PostRedirectViewModel
|
var redirectVm = new PostRedirectViewModel
|
||||||
{
|
{
|
||||||
AspController = "Wallets",
|
AspController = "UIWallets",
|
||||||
AspAction = nameof(WalletPSBT),
|
AspAction = nameof(WalletPSBT),
|
||||||
Parameters =
|
Parameters =
|
||||||
{
|
{
|
||||||
@@ -264,8 +264,8 @@ public class BitcoinLikePayoutHandler : IPayoutHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bip21.Any())
|
if (bip21.Any())
|
||||||
return new RedirectToActionResult("WalletSend", "Wallets", new { walletId = new WalletId(storeId, paymentMethodId.CryptoCode).ToString(), bip21 });
|
return new RedirectToActionResult("WalletSend", "UIWallets", new { walletId = new WalletId(storeId, paymentMethodId.CryptoCode).ToString(), bip21 });
|
||||||
return new RedirectToActionResult("Payouts", "Wallets", new
|
return new RedirectToActionResult("Payouts", "UIWallets", new
|
||||||
{
|
{
|
||||||
walletId = new WalletId(storeId, paymentMethodId.CryptoCode).ToString(),
|
walletId = new WalletId(storeId, paymentMethodId.CryptoCode).ToString(),
|
||||||
pullPaymentId = pullPaymentIds.Length == 1 ? pullPaymentIds.First() : null
|
pullPaymentId = pullPaymentIds.Length == 1 ? pullPaymentIds.First() : null
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ namespace BTCPayServer.Data.Payouts.LightningLike
|
|||||||
public Task<IActionResult> InitiatePayment(PaymentMethodId paymentMethodId, string[] payoutIds)
|
public Task<IActionResult> InitiatePayment(PaymentMethodId paymentMethodId, string[] payoutIds)
|
||||||
{
|
{
|
||||||
return Task.FromResult<IActionResult>(new RedirectToActionResult("ConfirmLightningPayout",
|
return Task.FromResult<IActionResult>(new RedirectToActionResult("ConfirmLightningPayout",
|
||||||
"LightningLikePayout", new { cryptoCode = paymentMethodId.CryptoCode, payoutIds }));
|
"UILightningLikePayout", new { cryptoCode = paymentMethodId.CryptoCode, payoutIds }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace BTCPayServer.Data.Payouts.LightningLike
|
|||||||
{
|
{
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||||
[AutoValidateAntiforgeryToken]
|
[AutoValidateAntiforgeryToken]
|
||||||
public class LightningLikePayoutController : Controller
|
public class UILightningLikePayoutController : Controller
|
||||||
{
|
{
|
||||||
private readonly ApplicationDbContextFactory _applicationDbContextFactory;
|
private readonly ApplicationDbContextFactory _applicationDbContextFactory;
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
@@ -34,7 +34,7 @@ namespace BTCPayServer.Data.Payouts.LightningLike
|
|||||||
private readonly IOptions<LightningNetworkOptions> _options;
|
private readonly IOptions<LightningNetworkOptions> _options;
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
|
|
||||||
public LightningLikePayoutController(ApplicationDbContextFactory applicationDbContextFactory,
|
public UILightningLikePayoutController(ApplicationDbContextFactory applicationDbContextFactory,
|
||||||
UserManager<ApplicationUser> userManager,
|
UserManager<ApplicationUser> userManager,
|
||||||
BTCPayNetworkJsonSerializerSettings btcPayNetworkJsonSerializerSettings,
|
BTCPayNetworkJsonSerializerSettings btcPayNetworkJsonSerializerSettings,
|
||||||
IEnumerable<IPayoutHandler> payoutHandlers,
|
IEnumerable<IPayoutHandler> payoutHandlers,
|
||||||
@@ -45,7 +45,7 @@ namespace BTCPayServer
|
|||||||
|
|
||||||
public static bool TryGetPayjoinEndpoint(this BitcoinUrlBuilder bip21, out Uri endpoint)
|
public static bool TryGetPayjoinEndpoint(this BitcoinUrlBuilder bip21, out Uri endpoint)
|
||||||
{
|
{
|
||||||
endpoint = bip21.UnknowParameters.TryGetValue($"{PayjoinClient.BIP21EndpointKey}", out var uri) ? new Uri(uri, UriKind.Absolute) : null;
|
endpoint = bip21.UnknownParameters.TryGetValue($"{PayjoinClient.BIP21EndpointKey}", out var uri) ? new Uri(uri, UriKind.Absolute) : null;
|
||||||
return endpoint != null;
|
return endpoint != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -493,7 +493,7 @@ namespace BTCPayServer
|
|||||||
{
|
{
|
||||||
var redirectVm = new PostRedirectViewModel
|
var redirectVm = new PostRedirectViewModel
|
||||||
{
|
{
|
||||||
AspController = "Home",
|
AspController = "UIHome",
|
||||||
AspAction = "RecoverySeedBackup",
|
AspAction = "RecoverySeedBackup",
|
||||||
Parameters =
|
Parameters =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,15 +11,15 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
{
|
{
|
||||||
public static string EmailConfirmationLink(this LinkGenerator urlHelper, string userId, string code, string scheme, HostString host, string pathbase)
|
public static string EmailConfirmationLink(this LinkGenerator urlHelper, string userId, string code, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(nameof(AccountController.ConfirmEmail), "Account",
|
return urlHelper.GetUriByAction(nameof(UIAccountController.ConfirmEmail), "UIAccount",
|
||||||
new { userId, code }, scheme, host, pathbase);
|
new { userId, code }, scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ResetPasswordCallbackLink(this LinkGenerator urlHelper, string userId, string code, string scheme, HostString host, string pathbase)
|
public static string ResetPasswordCallbackLink(this LinkGenerator urlHelper, string userId, string code, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(AccountController.SetPassword),
|
action: nameof(UIAccountController.SetPassword),
|
||||||
controller: "Account",
|
controller: "UIAccount",
|
||||||
values: new { userId, code },
|
values: new { userId, code },
|
||||||
scheme: scheme,
|
scheme: scheme,
|
||||||
host: host,
|
host: host,
|
||||||
@@ -30,8 +30,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
public static string PaymentRequestLink(this LinkGenerator urlHelper, string paymentRequestId, string scheme, HostString host, string pathbase)
|
public static string PaymentRequestLink(this LinkGenerator urlHelper, string paymentRequestId, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(PaymentRequestController.ViewPaymentRequest),
|
action: nameof(UIPaymentRequestController.ViewPaymentRequest),
|
||||||
controller: "PaymentRequest",
|
controller: "UIPaymentRequest",
|
||||||
values: new { id = paymentRequestId },
|
values: new { id = paymentRequestId },
|
||||||
scheme, host, pathbase);
|
scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
@@ -39,8 +39,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
public static string AppLink(this LinkGenerator urlHelper, string appId, string scheme, HostString host, string pathbase)
|
public static string AppLink(this LinkGenerator urlHelper, string appId, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(AppsPublicController.RedirectToApp),
|
action: nameof(UIAppsPublicController.RedirectToApp),
|
||||||
controller: "AppsPublic",
|
controller: "UIAppsPublic",
|
||||||
values: new { appId },
|
values: new { appId },
|
||||||
scheme, host, pathbase);
|
scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
@@ -48,8 +48,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
public static string InvoiceLink(this LinkGenerator urlHelper, string invoiceId, string scheme, HostString host, string pathbase)
|
public static string InvoiceLink(this LinkGenerator urlHelper, string invoiceId, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(InvoiceController.Invoice),
|
action: nameof(UIInvoiceController.Invoice),
|
||||||
controller: "Invoice",
|
controller: "UIInvoice",
|
||||||
values: new { invoiceId = invoiceId },
|
values: new { invoiceId = invoiceId },
|
||||||
scheme, host, pathbase);
|
scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
@@ -57,8 +57,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
public static string CheckoutLink(this LinkGenerator urlHelper, string invoiceId, string scheme, HostString host, string pathbase)
|
public static string CheckoutLink(this LinkGenerator urlHelper, string invoiceId, string scheme, HostString host, string pathbase)
|
||||||
{
|
{
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(InvoiceController.Checkout),
|
action: nameof(UIInvoiceController.Checkout),
|
||||||
controller: "Invoice",
|
controller: "UIInvoice",
|
||||||
values: new { invoiceId = invoiceId },
|
values: new { invoiceId = invoiceId },
|
||||||
scheme, host, pathbase);
|
scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
@@ -67,8 +67,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||||||
{
|
{
|
||||||
WalletId.TryParse(walletIdOrStoreId, out var wallet);
|
WalletId.TryParse(walletIdOrStoreId, out var wallet);
|
||||||
return urlHelper.GetUriByAction(
|
return urlHelper.GetUriByAction(
|
||||||
action: nameof(StorePullPaymentsController.Payouts),
|
action: nameof(UIStorePullPaymentsController.Payouts),
|
||||||
controller: "StorePullPayments",
|
controller: "UIStorePullPayments",
|
||||||
values: new { storeId = wallet?.StoreId ?? walletIdOrStoreId, pullPaymentId },
|
values: new { storeId = wallet?.StoreId ?? walletIdOrStoreId, pullPaymentId },
|
||||||
scheme, host, pathbase);
|
scheme, host, pathbase);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ namespace BTCPayServer.Fido2
|
|||||||
|
|
||||||
private ActionResult RedirectToList()
|
private ActionResult RedirectToList()
|
||||||
{
|
{
|
||||||
return RedirectToAction("TwoFactorAuthentication", "Manage");
|
return RedirectToAction("TwoFactorAuthentication", "UIManage");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace BTCPayServer.HostedServices
|
|||||||
switch (Enum.Parse<AppType>(data.AppType))
|
switch (Enum.Parse<AppType>(data.AppType))
|
||||||
{
|
{
|
||||||
case AppType.PointOfSale:
|
case AppType.PointOfSale:
|
||||||
var possettings = data.GetSettings<AppsController.PointOfSaleSettings>();
|
var possettings = data.GetSettings<UIAppsController.PointOfSaleSettings>();
|
||||||
return (Data: data, Settings: (object)possettings,
|
return (Data: data, Settings: (object)possettings,
|
||||||
Items: _appService.Parse(possettings.Template, possettings.Currency));
|
Items: _appService.Parse(possettings.Template, possettings.Currency));
|
||||||
case AppType.Crowdfund:
|
case AppType.Crowdfund:
|
||||||
@@ -69,7 +69,7 @@ namespace BTCPayServer.HostedServices
|
|||||||
{
|
{
|
||||||
case AppType.PointOfSale:
|
case AppType.PointOfSale:
|
||||||
|
|
||||||
((AppsController.PointOfSaleSettings)valueTuple.Settings).Template =
|
((UIAppsController.PointOfSaleSettings)valueTuple.Settings).Template =
|
||||||
_appService.SerializeTemplate(valueTuple.Items);
|
_appService.SerializeTemplate(valueTuple.Items);
|
||||||
break;
|
break;
|
||||||
case AppType.Crowdfund:
|
case AppType.Crowdfund:
|
||||||
|
|||||||
@@ -382,9 +382,9 @@ namespace BTCPayServer.Hosting
|
|||||||
|
|
||||||
services.TryAddScoped<IHttpContextAccessor, HttpContextAccessor>();
|
services.TryAddScoped<IHttpContextAccessor, HttpContextAccessor>();
|
||||||
services.AddTransient<BitpayAccessTokenController>();
|
services.AddTransient<BitpayAccessTokenController>();
|
||||||
services.AddTransient<InvoiceController>();
|
services.AddTransient<UIInvoiceController>();
|
||||||
services.AddTransient<AppsPublicController>();
|
services.AddTransient<UIAppsPublicController>();
|
||||||
services.AddTransient<PaymentRequestController>();
|
services.AddTransient<UIPaymentRequestController>();
|
||||||
// Add application services.
|
// Add application services.
|
||||||
services.AddSingleton<EmailSenderFactory>();
|
services.AddSingleton<EmailSenderFactory>();
|
||||||
|
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ namespace BTCPayServer.Hosting
|
|||||||
|
|
||||||
case nameof(AppType.PointOfSale):
|
case nameof(AppType.PointOfSale):
|
||||||
|
|
||||||
var settings2 = app.GetSettings<AppsController.PointOfSaleSettings>();
|
var settings2 = app.GetSettings<UIAppsController.PointOfSaleSettings>();
|
||||||
if (string.IsNullOrEmpty(settings2.Currency))
|
if (string.IsNullOrEmpty(settings2.Currency))
|
||||||
{
|
{
|
||||||
settings2.Currency = app.StoreData.GetStoreBlob().DefaultCurrency;
|
settings2.Currency = app.StoreData.GetStoreBlob().DefaultCurrency;
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ namespace BTCPayServer.Hosting
|
|||||||
PaymentRequestHub.Register(endpoints);
|
PaymentRequestHub.Register(endpoints);
|
||||||
endpoints.MapRazorPages();
|
endpoints.MapRazorPages();
|
||||||
endpoints.MapControllers();
|
endpoints.MapControllers();
|
||||||
endpoints.MapControllerRoute("default", "{controller:validate=Home}/{action=Index}/{id?}");
|
endpoints.MapControllerRoute("default", "{controller:validate=UIHome}/{action=Index}/{id?}");
|
||||||
});
|
});
|
||||||
app.UsePlugins();
|
app.UsePlugins();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace BTCPayServer.PaymentRequest
|
|||||||
{
|
{
|
||||||
public class PaymentRequestHub : Hub
|
public class PaymentRequestHub : Hub
|
||||||
{
|
{
|
||||||
private readonly PaymentRequestController _PaymentRequestController;
|
private readonly UIPaymentRequestController _PaymentRequestController;
|
||||||
public const string InvoiceCreated = "InvoiceCreated";
|
public const string InvoiceCreated = "InvoiceCreated";
|
||||||
public const string PaymentReceived = "PaymentReceived";
|
public const string PaymentReceived = "PaymentReceived";
|
||||||
public const string InfoUpdated = "InfoUpdated";
|
public const string InfoUpdated = "InfoUpdated";
|
||||||
@@ -28,7 +28,7 @@ namespace BTCPayServer.PaymentRequest
|
|||||||
public const string CancelInvoiceError = "CancelInvoiceError";
|
public const string CancelInvoiceError = "CancelInvoiceError";
|
||||||
public const string InvoiceCancelled = "InvoiceCancelled";
|
public const string InvoiceCancelled = "InvoiceCancelled";
|
||||||
|
|
||||||
public PaymentRequestHub(PaymentRequestController paymentRequestController)
|
public PaymentRequestHub(UIPaymentRequestController paymentRequestController)
|
||||||
{
|
{
|
||||||
_PaymentRequestController = paymentRequestController;
|
_PaymentRequestController = paymentRequestController;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ namespace BTCPayServer.Plugins.Shopify
|
|||||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly StoreRepository _storeRepository;
|
||||||
private readonly InvoiceRepository _invoiceRepository;
|
private readonly InvoiceRepository _invoiceRepository;
|
||||||
private readonly InvoiceController _invoiceController;
|
private readonly UIInvoiceController _invoiceController;
|
||||||
private readonly IJsonHelper _jsonHelper;
|
private readonly IJsonHelper _jsonHelper;
|
||||||
private readonly IHttpClientFactory _clientFactory;
|
private readonly IHttpClientFactory _clientFactory;
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ namespace BTCPayServer.Plugins.Shopify
|
|||||||
IWebHostEnvironment webHostEnvironment,
|
IWebHostEnvironment webHostEnvironment,
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
InvoiceRepository invoiceRepository,
|
InvoiceRepository invoiceRepository,
|
||||||
InvoiceController invoiceController,
|
UIInvoiceController invoiceController,
|
||||||
IJsonHelper jsonHelper,
|
IJsonHelper jsonHelper,
|
||||||
IHttpClientFactory clientFactory)
|
IHttpClientFactory clientFactory)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ namespace BTCPayServer.Services.Apps
|
|||||||
public const string PaymentReceived = "PaymentReceived";
|
public const string PaymentReceived = "PaymentReceived";
|
||||||
public const string InfoUpdated = "InfoUpdated";
|
public const string InfoUpdated = "InfoUpdated";
|
||||||
public const string InvoiceError = "InvoiceError";
|
public const string InvoiceError = "InvoiceError";
|
||||||
private readonly AppsPublicController _AppsPublicController;
|
private readonly UIAppsPublicController _AppsPublicController;
|
||||||
|
|
||||||
public AppHub(AppsPublicController appsPublicController)
|
public AppHub(UIAppsPublicController appsPublicController)
|
||||||
{
|
{
|
||||||
_AppsPublicController = appsPublicController;
|
_AppsPublicController = appsPublicController;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace BTCPayServer.Services.Apps
|
|||||||
protected override void SubscribeToEvents()
|
protected override void SubscribeToEvents()
|
||||||
{
|
{
|
||||||
Subscribe<InvoiceEvent>();
|
Subscribe<InvoiceEvent>();
|
||||||
Subscribe<AppsController.AppUpdated>();
|
Subscribe<UIAppsController.AppUpdated>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task ProcessEvent(object evt, CancellationToken cancellationToken)
|
protected override async Task ProcessEvent(object evt, CancellationToken cancellationToken)
|
||||||
@@ -47,7 +47,7 @@ namespace BTCPayServer.Services.Apps
|
|||||||
await InfoUpdated(appId);
|
await InfoUpdated(appId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (evt is AppsController.AppUpdated app)
|
else if (evt is UIAppsController.AppUpdated app)
|
||||||
{
|
{
|
||||||
await InfoUpdated(app.AppId);
|
await InfoUpdated(app.AppId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ namespace BTCPayServer.Services.Apps
|
|||||||
{
|
{
|
||||||
AppType appTypeEnum = Enum.Parse<AppType>(appType);
|
AppType appTypeEnum = Enum.Parse<AppType>(appType);
|
||||||
AppData appData = await GetApp(appId, appTypeEnum, false);
|
AppData appData = await GetApp(appId, appTypeEnum, false);
|
||||||
var settings = appData.GetSettings<AppsController.PointOfSaleSettings>();
|
var settings = appData.GetSettings<UIAppsController.PointOfSaleSettings>();
|
||||||
|
|
||||||
string style;
|
string style;
|
||||||
switch (appTypeEnum)
|
switch (appTypeEnum)
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ namespace BTCPayServer.Services.Notifications.Blobs
|
|||||||
{
|
{
|
||||||
vm.Body =
|
vm.Body =
|
||||||
"A payment that was made to an approved payout by an external wallet is waiting for your confirmation.";
|
"A payment that was made to an approved payout by an external wallet is waiting for your confirmation.";
|
||||||
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(StorePullPaymentsController.Payouts),
|
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(UIStorePullPaymentsController.Payouts),
|
||||||
"StorePullPayments",
|
"UIStorePullPayments",
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
storeId = notification.StoreId,
|
storeId = notification.StoreId,
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ namespace BTCPayServer.Services.Notifications.Blobs
|
|||||||
{
|
{
|
||||||
vm.Body = $"{baseStr} {TextMapping[notification.Event]}";
|
vm.Body = $"{baseStr} {TextMapping[notification.Event]}";
|
||||||
}
|
}
|
||||||
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(InvoiceController.Invoice),
|
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(UIInvoiceController.Invoice),
|
||||||
"Invoice",
|
"UIInvoice",
|
||||||
new { invoiceId = notification.InvoiceId }, _options.RootPath);
|
new { invoiceId = notification.InvoiceId }, _options.RootPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ namespace BTCPayServer.Services.Notifications.Blobs
|
|||||||
protected override void FillViewModel(PayoutNotification notification, NotificationViewModel vm)
|
protected override void FillViewModel(PayoutNotification notification, NotificationViewModel vm)
|
||||||
{
|
{
|
||||||
vm.Body = "A new payout is awaiting for approval";
|
vm.Body = "A new payout is awaiting for approval";
|
||||||
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(StorePullPaymentsController.Payouts),
|
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(UIStorePullPaymentsController.Payouts),
|
||||||
"StorePullPayments",
|
"UIStorePullPayments",
|
||||||
new { storeId = notification.StoreId, paymentMethodId = notification.PaymentMethod }, _options.RootPath);
|
new { storeId = notification.StoreId, paymentMethodId = notification.PaymentMethod }, _options.RootPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
@model BTCPayServer.Models.AppViewModels.ViewPointOfSaleViewModel
|
|
||||||
@{
|
|
||||||
Layout = "_LayoutPos";
|
|
||||||
}
|
|
||||||
|
|
||||||
<partial name="_StatusMessage" />
|
|
||||||
|
|
||||||
@if (Context.Request.Query.ContainsKey("simple"))
|
|
||||||
{
|
|
||||||
<partial name="/Views/AppsPublic/PointOfSale/MinimalLight.cshtml" model="Model" />
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<noscript>
|
|
||||||
<partial name="/Views/AppsPublic/PointOfSale/MinimalLight.cshtml" model="Model" />
|
|
||||||
</noscript>
|
|
||||||
<partial name="/Views/AppsPublic/PointOfSale/VueLight.cshtml" model="Model" />
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
@{
|
|
||||||
Layout = "../Shared/_NavLayout.cshtml";
|
|
||||||
ViewData["NavPartialName"] = "../Manage/_Nav";
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
@using BTCPayServer.Configuration
|
|
||||||
@inject BTCPayServerOptions BTCPayServerOptions
|
|
||||||
|
|
||||||
<nav id="SectionNav" class="nav">
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Users" class="nav-link @ViewData.IsActivePage(ServerNavPages.Users)" asp-action="ListUsers">Users</a>
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Emails" class="nav-link @ViewData.IsActivePage(ServerNavPages.Emails)" asp-action="Emails">Email Server</a>
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Policies" class="nav-link @ViewData.IsActivePage(ServerNavPages.Policies)" asp-action="Policies">Policies</a>
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Services" class="nav-link @ViewData.IsActivePage(ServerNavPages.Services)" asp-action="Services">Services</a>
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Theme" class="nav-link @ViewData.IsActivePage(ServerNavPages.Theme)" asp-action="Theme">Theme</a>
|
|
||||||
@if (BTCPayServerOptions.DockerDeployment)
|
|
||||||
{
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Maintenance" class="nav-link @ViewData.IsActivePage(ServerNavPages.Maintenance)" asp-action="Maintenance">Maintenance</a>
|
|
||||||
}
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Logs" class="nav-link @ViewData.IsActivePage(ServerNavPages.Logs)" asp-action="LogsView">Logs</a>
|
|
||||||
<a asp-controller="Server" id="SectionNav-@ServerNavPages.Files" class="nav-link @ViewData.IsActivePage(ServerNavPages.Files)" asp-action="Files">Files</a>
|
|
||||||
<vc:ui-extension-point location="server-nav" model="@Model"/>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
@if (possible)
|
@if (possible)
|
||||||
{
|
{
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a asp-area="" asp-controller="LNURL" asp-action="EditLightningAddress" asp-route-storeId="@store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage("LightningAddress", nameof(StoreNavPages))" id="StoreNav-LightningAddress">
|
<a asp-area="" asp-controller="UILNURL" asp-action="EditLightningAddress" asp-route-storeId="@store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage("LightningAddress", nameof(StoreNavPages))" id="StoreNav-LightningAddress">
|
||||||
<vc:icon symbol="wallet-lightning"/>
|
<vc:icon symbol="wallet-lightning"/>
|
||||||
<span>Lightning Address</span>
|
<span>Lightning Address</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<span class="d-flex align-items-center fw-semibold">
|
<span class="d-flex align-items-center fw-semibold">
|
||||||
@if (possible)
|
@if (possible)
|
||||||
{
|
{
|
||||||
<a id="lightning-address-setup-link" class="btn btn-primary btn-sm ms-4 px-3 py-1 fw-semibold" asp-controller="LNURL" asp-action="EditLightningAddress" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
<a id="lightning-address-setup-link" class="btn btn-primary btn-sm ms-4 px-3 py-1 fw-semibold" asp-controller="UILNURL" asp-action="EditLightningAddress" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
||||||
Setup
|
Setup
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
{
|
{
|
||||||
if (!isLightningEnabled)
|
if (!isLightningEnabled)
|
||||||
{
|
{
|
||||||
<a asp-action="PaymentMethods" asp-controller="Stores" asp-route-storeId="@store.Id" class="btn btn-link p-0">
|
<a asp-action="PaymentMethods" asp-controller="UIStores" asp-route-storeId="@store.Id" class="btn btn-link p-0">
|
||||||
You need to setup Lightning first
|
You need to setup Lightning first
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,5 +8,5 @@
|
|||||||
}
|
}
|
||||||
@if (SignInManager.IsSignedIn(User) && User.IsInRole(Roles.ServerAdmin) && MoneroLikeConfiguration.MoneroLikeConfigurationItems.Any())
|
@if (SignInManager.IsSignedIn(User) && User.IsInRole(Roles.ServerAdmin) && MoneroLikeConfiguration.MoneroLikeConfigurationItems.Any())
|
||||||
{
|
{
|
||||||
<a class="nav-link @(isMonero ? "active" : string.Empty)" asp-route-storeId="@this.Context.GetRouteValue("storeId")" asp-action="GetStoreMoneroLikePaymentMethods" asp-controller="MoneroLikeStore">Monero</a>
|
<a class="nav-link @(isMonero ? "active" : string.Empty)" asp-route-storeId="@this.Context.GetRouteValue("storeId")" asp-action="GetStoreMoneroLikePaymentMethods" asp-controller="UIMoneroLikeStore">Monero</a>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
|
||||||
<vc:icon symbol="close" />
|
<vc:icon symbol="close" />
|
||||||
</button>
|
</button>
|
||||||
The Email settings have not been configured on this server or store yet. Setting this field will not send emails until then. <a asp-action="Emails" asp-controller="Stores" asp-route-storeId="@Model" class="alert-link">Configure store email settings</a>
|
The Email settings have not been configured on this server or store yet. Setting this field will not send emails until then. <a asp-action="Emails" asp-controller="UIStores" asp-route-storeId="@Model" class="alert-link">Configure store email settings</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="spiral-gradient" x1="81.36" y1="311.35" x2="541.35" y2="311.35" gradientUnits="userSpaceOnUse"><stop offset=".18" stop-color="#00f"/><stop offset="1" stop-color="#f0f"/></linearGradient>
|
<linearGradient id="spiral-gradient" x1="81.36" y1="311.35" x2="541.35" y2="311.35" gradientUnits="userSpaceOnUse"><stop offset=".18" stop-color="#00f"/><stop offset="1" stop-color="#f0f"/></linearGradient>
|
||||||
<linearGradient id="pnxbet-a" x1="108.127" y1="162.181" x2="74.499" y2="305.982" gradientUnits="userSpaceOnUse"><stop stop-color="#FA1366"/><stop offset="1" stop-color="#FD6E06"/></linearGradient>
|
<linearGradient id="pnxbet-a" x1="108.127" y1="162.181" x2="74.499" y2="305.982" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FA1366"/><stop offset="1" stop-color="#FD6E06"/></linearGradient>
|
||||||
<linearGradient id="pnxbet-c" x1="152.732" y1="33.344" x2="2.684" y2="194.507" gradientUnits="userSpaceOnUse"><stop stop-color="#F91500"/><stop offset="1" stop-color="#FDD140"/></linearGradient>
|
<linearGradient id="pnxbet-c" x1="152.732" y1="33.344" x2="2.684" y2="194.507" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#F91500"/><stop offset="1" stop-color="#FDD140"/></linearGradient>
|
||||||
<filter id="pnxbet-b" x="35.029" y="154.606" width="85.36" height="85.36" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation=".5" result="effect1_foregroundBlur"/></filter>
|
<filter id="pnxbet-b" x="35.029" y="154.606" width="85.36" height="85.36" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation=".5" result="effect1_foregroundBlur"/></filter>
|
||||||
<filter id="pnxbet-d" x="8.414" y="53.573" width="93.523" height="181.835" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="1" result="effect1_foregroundBlur"/></filter>
|
<filter id="pnxbet-d" x="8.414" y="53.573" width="93.523" height="181.835" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="1" result="effect1_foregroundBlur"/></filter>
|
||||||
</defs>
|
</defs>
|
||||||
|
|||||||
@@ -81,9 +81,9 @@
|
|||||||
<script>
|
<script>
|
||||||
if ('WebSocket' in window && window.WebSocket.CLOSING === 2) {
|
if ('WebSocket' in window && window.WebSocket.CLOSING === 2) {
|
||||||
const { host, protocol } = window.location;
|
const { host, protocol } = window.location;
|
||||||
var wsUri = "@_linkGenerator.GetPathByAction("SubscribeUpdates", "Notifications", pathBase: this.Context.Request.PathBase)";
|
var wsUri = "@_linkGenerator.GetPathByAction("SubscribeUpdates", "UINotifications", pathBase: this.Context.Request.PathBase)";
|
||||||
wsUri = (protocol === "https:" ? "wss:" : "ws:") + "//" + host + wsUri;
|
wsUri = (protocol === "https:" ? "wss:" : "ws:") + "//" + host + wsUri;
|
||||||
const newDataEndpoint = "@_linkGenerator.GetPathByAction("GetNotificationDropdownUI", "Notifications", pathBase: this.Context.Request.PathBase)";
|
const newDataEndpoint = "@_linkGenerator.GetPathByAction("GetNotificationDropdownUI", "UINotifications", pathBase: this.Context.Request.PathBase)";
|
||||||
try {
|
try {
|
||||||
socket = new WebSocket(wsUri);
|
socket = new WebSocket(wsUri);
|
||||||
socket.onmessage = e => {
|
socket.onmessage = e => {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<div class="row justify-content-center mb-2">
|
<div class="row justify-content-center mb-2">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<a asp-controller="Home" asp-action="Index" tabindex="-1">
|
<a asp-controller="UIHome" asp-action="Index" tabindex="-1">
|
||||||
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<div class="row justify-content-center mb-2">
|
<div class="row justify-content-center mb-2">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<a asp-controller="Home" asp-action="Index">
|
<a asp-controller="UIHome" asp-action="Index">
|
||||||
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<div class="row justify-content-center mb-2">
|
<div class="row justify-content-center mb-2">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<a asp-controller="Home" asp-action="Index">
|
<a asp-controller="UIHome" asp-action="Index">
|
||||||
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user