* App: Add events which the app subscribes to
Various events, which are relevant for the app to react to changes made on the server.
* Refactor events
* Do not extend NewBlockEvent
* Refactoring events
* Add store role events
* Refactoring: Rename StoreUserEvent
* Fix: Subscribe to UserEvent.Invited
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
Uses a more finegrained method of deciding whether or not to adjust the brand color: Instead of simply using the brightness of the color, we calculate the contrast ratio and adjust the color by increasing the contrast until it is sufficient.
The thresholds also try to preserve the brand color in its original form, so that the color only gets adjusted if the contrast is very low.
* Onboarding: Invite new users
- Separates the user self-registration and invite cases
- Adds invitation email for users created by the admin
- Adds invitation tokens to verify user was invited
- Adds handler action for invite links
- Refactors `UserEventHostedService`
- Fixes#5726.
* Add permissioned form tag helper
* Better way of changing a user's role
* Test fixes
* Server Users: More precise message when inviting users
This lets the admin who invited a new user know whether or not an email has been sent. If the SMTP server hasn't been set up, they need to share the invite link with the user.
* Onboarding: Invite new users
- Separates the user self-registration and invite cases
- Adds invitation email for users created by the admin
- Adds invitation tokens to verify user was invited
- Adds handler action for invite links
- Refactors `UserEventHostedService`
* Remove duplicate status message from views that use the wizard layout
* Auto-approve users created by an admin
* Notify admins via email if a new account requires approval
* Update wording
* Fix update user error
* Fix redirect to email confirmation in invite action
* Fix precondition checks after signup
* Improve admin notification
Send notification only if the user does not require email confirmation or when they confirmed their email address. Rationale: We want to inform admins only about qualified users and not annoy them with bot registrations.
* Allow approval alongside resending confirm email
* Use user email in log messages instead of ID
* Prevent unnecessary notification after email confirmation
* Use ApplicationUser type explicitly
* Fix after rebase
* Refactoring: Do not subclass UserRegisteredEvent
* Users list: Cleanups
* Policies: Flip registration settings
* Policies: Add RequireUserApproval setting
* Add approval to user
* Require approval on login and for API key
* API handling
* AccountController cleanups
* Test fix
* Apply suggestions from code review
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Add missing imports
* Communicate login requirements to user on account creation
* Add login requirements to basic auth handler
* Cleanups and test fix
* Encapsulate approval logic in user service and log approval changes
* Send follow up "Account approved" email
Closes#5656.
* Add notification for admins
* Fix creating a user via the admin view
* Update list: Unify flags into status column, add approve action
* Adjust "Resend email" wording
* Incorporate feedback from code review
* Remove duplicate test server policy reset
---------
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Add reporting feature
* Remove nodatime
* Add summaries
* work...
* Add chart title
* Fix error
* Allow to set hour in the field
* UI updates
* Fix fake data
* ViewDefinitions can be dynamic
* Add items sold
* Sticky table headers
* Update JS and remove jQuery usages
* JS click fix
* Handle tag all invoices for app
* fix dup row in items report
* Can cancel invoice request
* Add tests
* Fake data for items sold
* Rename Items to Products, improve navigation F5
* Use bordered table for summaries
---------
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* 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
* Store Emails
* fix test
* Update email rules layout
* Cleanups
* Test cleanups
* Add back comments
* Update view; add test
* Show email rules link even if email settings aren't completed
* Validate email addresses
* No redirect, display warning
* Fix test
* Refactoring: Change email argument types to MailAddress
* Test fix
* Refactoring: Use MailboxAddress
* Parse emails properly in controllers and backend
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Automated Transfer processors
This PR introduces a few things:
* Payouts can now be directly nested under a store instead of through a pull payment.
* The Wallet Send screen now has an option to "schedule" instead of simply creating a transaction. When you click on schedule, all transaction destinations are converted into approved payouts. Any options relating to fees or coin selection are discarded.
* There is a new concept introduced, called "Transfer Processors". Transfer Processors are services for stores that process payouts that are awaiting payment. Each processor specifies which payment methods it can handle. BTCPay Server will have some forms of transfer processors baked in but it has been designed to allow the Plugin System to provide additional processors.
* The initial transfer processors provided are "automated processors", for on chain and lightning payment methods. They can be configured to process payouts every X amount of minutes. For on-chain, this means payments are batched into one transaction, resulting in more efficient and cheaper fees for processing.
*
* fix build
* extract
* remove magic string stuff
* fix error message when scheduling
* Paginate migration
* add payout count to payment method tab
* remove unused var
* add protip
* optimzie payout migration dramatically
* Remove useless double condition
* Fix bunch of warnings
* Remove warning
* Remove warnigns
* Rename to Payout processors
* fix typo
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Set store context in cookie
* Fix page id usages in view
* Move Pay Button to nav
* Move integrations to plugins nav
* Store switch links to wallet if present
* Test fixes
* Nav fixes
* Fix altcoin view
* Main nav updates
* Wallet setttings nav update
* Move storeId cookie fallback to cookie auth handler
* View fixes
* Test fixes
* Fix profile check
* Rename integrations nav extension point to store-integrations-nav-list
* Allow strings for Active page/category for plugins
* Make invoice list filter based on store context
* Do not set context if we are running authorizer through tag helper
* Fix test and unfiltered invoices
* Add permission helper for wallet links
* Add sanity checks for payment requests and invoices
* Store context in home controller
* Fix PayjoinViaUI test
* Store context for notifications
* Minor UI improvements
* Store context for userstores and vault controller
* Bring back integrations page
* Rename notifications nav pages file
* Fix user stores controller policies
* Controller policy fixes from code review
* CookieAuthHandler: Simplify CanViewInvoices case
* Revert "Controller policy fixes from code review"
This reverts commit 97e8b8379c.
* Simplify LayoutSimple
* Fix CanViewInvoices condition
Co-authored-by: Kukks <evilkukka@gmail.com>
* Remove Confirmed state in UI
Closes#1789.
* Add infobox & improve refund tooltip
* Update BTCPayServer/Views/Invoice/ListInvoices.cshtml
Add @dennisreimann suggestion
Co-authored-by: d11n <mail@dennisreimann.de>
* Add "don't show again" button
Adds a "Don't Show Again" button to the infobox. Also a bugfix that was preventing the new status from showing in the invoice details page.
* Add User blob and move invoice status notice to it
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: Kukks <evilkukka@gmail.com>
* Remove Bootstrap/Creative CSS file customizability
Customizations should be done using themes
* Remove deprecated Casa and Classic themes
They are still available in the design system repo and should be added as custom theme CSS file
* Use either standard or custom theme
* Remove deprecated themes
* Improve theme select UI
* Finish and refactor theme switching
* updates theme copy
* Update BTCPayServer/Views/Server/Theme.cshtml
Co-authored-by: Zaxounette <51208677+Zaxounette@users.noreply.github.com>
* Combine creative.css and site.css
Co-authored-by: dstrukt <gfxdsign@gmail.com>
Co-authored-by: Zaxounette <51208677+Zaxounette@users.noreply.github.com>
* re-ordering
* adds section header
* updates label on "products"
* changes button to primary
* moves description
* updates partial
* re-ordering + section headers
* more section heads and ordering
* redorders
* Toggle custom amount and tips settings
* Use display name for point of sale app type
* Use switches for enabling options
* Add space before required indicator
* Set and consolidate view model display names
* Move redirects and custom CSS to additional options
* Revert to checkbox for discounts
* adds padding
* removes bs-parent for multiple open elements on accordion
* adds helper text to discount checkbox
* updates "default view" label text
* wording cleanup
* more wording adjustments
* updates
* Add display names for app types
* Extract template editor inline styles
* updates helper text
* Display names for app types
* Typo fix
* Move template back to editor
* Fix selenium test
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>