* Adapt cookie auth to work with same API permission system
* Handle unscoped store permission case
* Do not consider Unscoped as a valid policy
* Add tests
* Refactor permissions scopes
---------
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Renamed "WithdrawAsync" to "WithdrawToStoreWalletAsync"
* WIP
* WIP withdrawal + Refactored Form saving to JObject
* WIP
* Form to fix bad values during withdrawing appears correctly
* WIP
* Lots of cleanup and refactoring + Password field and toggle password view
* Cleanup + Finishing touches on withdrawals
* Added "Destination" dummy text as this is always the destination.
* Fixed broken test
* Added support for withdrawing using qty as a percentage if it ends with "%". Needs more testing.
* Fixed broken build
* Fixed broken build (2)
* Update BTCPayServer/wwwroot/swagger/v1/swagger.template.custodians.json
Co-authored-by: d11n <mail@dennisreimann.de>
* Update BTCPayServer/wwwroot/swagger/v1/swagger.template.custodians.json
Co-authored-by: d11n <mail@dennisreimann.de>
* Improved unit tests
* Fixed swagger bug
* Test improvements
Make string conversion of quantity explicitely.
* Fix build warnings
* Swagger: Add missing operationId
* Made change Dennis requested
* Removed unused file
* Removed incorrect comment
* Extra contructor
* Renamed client methods
* Cleanup config before saving
* Fixed broken controller
* Refactor custodian
* Fix build
* Make decimal fields strings to match the rest of Greenfield
* Improve parsing of % quantities
---------
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Greenfield: Admins can create/delete API keys of any user
* Greenfield: Improve doc for scoped apikey (Close#4673)
* Fix permissions hierarchy
* Update BTCPayServer.Client/Permissions.cs
* Fix tests
---------
Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
* Add Greenfield API endpoints for retrieving app details
* add app items details
* Add GetPosApp and GetCrowdfundApp to LocalBTCPayServerClient
* Simplify POS app data items example
* Document app type enum
* make "RequiresRefundEmail" nullable
* remove "Template" and "PerksTemplate" fields
* Add Greenfield API endpoint for pull payment LNURL items
close#4365
* Rename GetLNURLs to GetPullPaymentLNURL
* update "ln-url-not-supported" to "lnurl-not-supported"
* remove hardcoding of "BTC"
* update "PullPayments_LNURL" to "PullPayments_GetPullPaymentLNURL"
* update description of 400 status code response
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Checkout v2: Configure countdown timer
This addresses feedback by @astupidmoose left [here](https://github.com/btcpayserver/btcpayserver/discussions/4308#discussioncomment-4438926): Make the countdown timer configurable with a minutes setting. This way the merchant has full control over when to display the timer. They could even set it to equal the invoice expiry, so that it is shown right from the beginning.
* Rename property and adjust wording
* Remove expiration percentage from Checkout v2
* Editorconfig: Add space_before_self_closing setting
This was a difference between the way dotnet-format and Rider format code. See https://www.jetbrains.com/help/rider/EditorConfig_Index.html
* Editorconfig: Keep 4 spaces indentation for Swagger JSON files
They are all formatted that way, let's keep it like that.
* Apply dotnet-format, mostly white-space related changes
* [Greenfield]: Add DescriptionHashOnly to include a description hash in the BOLT11
* Add CLN test case
* Improve description in Swagger file
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* Lock user: Improve return code and fix docs
The docs state that the `DELETE` method should be used, though the controller wants `POST`. The latter seems appropriate here, as the action can be used for locking and unlocking.
Also adapted the action to return a status code based on the actual outcome of the user toggle call.
Closes#4310.
* Update clients
* wip
* Cleanups
* UI updates
* Update UIFormsController.cs
* Make predefined forms usable statically
* Add support for pos app + forms
* pay request form rough support
* invoice form through receipt page
* Display form name in inherit from store setting
* Do not request additional forms on invoice from pay request
* fix up code
* move checkoutform id in checkout appearance outside of checkotu v2 toggle
* general fixes for form system
* fix pav bug
* UI updates
* Fix warnings in Form builder (#4331)
* Fix build warnings about string?
Enable nullable on UIFormsController.cs
Fixes CS8632 The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
* Clean up lack of space in injected services in Submit() of UIFormsController.cs
* Remove unused variables (CS0219) and assignment of nullable value to nullable type (CS8600)
* Cleanup double semicolons while we're at tit
* Fix: If reverse proxy wasn't well configured, and error message should have been displayed (#4322)
* fix monero issue
* Server Settings: Update Policies page (#4326)
Handles the multiple submit buttons on that page and closes#4319.
Contains some UI unifications with other pages and also shows the block explorers without needing to toggle the section via JS.
* Change confirmed to settled. (#4328)
* POS: Fix null pointer
Introduced in #4307, the referenced object needs to be `itemChoice` instead of `choice`.
* Add documentation link to plugins (#4329)
* Add documentation link to plugins
* Minor UI updates
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* Fix flaky test (#4330)
* Fix flaky test
* Update BTCPayServer/PayoutProcessors/BaseAutomatedPayoutProcessor.cs
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: d11n <mail@dennisreimann.de>
* Remove invoice and store level form
* add form test
* fix migration for forms
* fix
* make pay request form submission redirect to invoice
* Refactor FormQuery to only be able to query single store and single form
* Put the Authorize at controller level on UIForms
* Fix warnings
* Fix ef request
* Fix query to forms, ensure no permission bypass
* Fix modify
* Remove storeId from step form
* Remove useless storeId parameter
* Hide custom form feature in UI
* Minor cleanups
* Remove custom form options from select for now
* More minor syntax cleanups
* Update test
* Add index - needs migration
* Refactoring: Use PostRedirect instead of TempData for data transfer
* Remove untested and unfinished code
* formResponse should be a JObject, not a string
* Fix case for Form type
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: JesterHodl <103882255+jesterhodl@users.noreply.github.com>
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
Co-authored-by: Andreas Tasch <andy.tasch@gmail.com>
This allows external services to integrate with the payouts system to process payouts. This is also a step to allow plugins to provide payout processors.
* It provides the payment proof through the greenfield payoust api.
* It allows you to set the state of a payout outside of the usual flow:
* When state is awaiting payment, allow setting to In progess or completed
* When state is in progress, allow setting back to awaiting payment
* [Greenfield] Can create an invoice for a payment request via Greenfield
* Add allowPendingInvoiceReuse so payment request invoices can be reused
* Add PayPaymentRequest to the LocalBTCPayServerClient
* Allow amount to be specified if same as PR amount
* Opt-in for new checkout
* Update wording
* Create invoice view update
* Remove jQuery from checkout testing code
* Checkout v2 basics
* WIP
* WIP 2
* Updates and fixes
* Updates
* Design updates
* More design updates
* Cheating and JS fixes
* Use checkout form id whenever invoices get created
* Improve email form handling
* Cleanups
* Payment method exclusion cases for Lightning and LNURL
TODO: Cases and implementation need to be discussed
* Introduce CheckoutType in API and replace UseNewCheckout in backend
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>