* Store users: Ensure the last owner cannot be downgraded
Changes the behaviour of the `AddOrUpdateStoreUser` method to throw errors for the failure cases, so that the UI and API can report the actual problem. A role change might fail if the user already has that role or if they are the last owner of the store.
* Cleanup code
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Code cleanup
* Preparing model to include data needed for fiat display
* Displaying fiat amount and allowing switching between it and BTC
* Restoring parts removed by vibe coding
* Making ToFiatAmount method work for in wider variety of cases
* Tweaks for display and negative values
* Calculating amounts on serverside and simplifying
* Fix warnings
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* fix: return 403 when unauthenticated user accesses an archived invoice receipt
* refactor: simplify archived invoice access check with pattern matching
* Return 404 for unauthorized users accessing archived invoice
Co-authored-by: d11n <mail@dennisreimann.de>
* feat: add archived invoice validation for unauthenticated access in Checkout and GetStatus
* test: add test case for unauthorized access to archived invoice returning not found
* test: add unauthorized checkout test for archived invoice
* Commenting code and adding test case for GetStatus
---------
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
* Adding endpoint in Greenfield to allow server email settings
* Adding related swagger file
* Refactoring EmailSettingsData to be more readable
* Adding server email masking
* Adding tests
* Update BTCPayServer/wwwroot/swagger/v1/swagger.template.serveremail.json
Co-authored-by: d11n <mail@dennisreimann.de>
* Masking smtp server email returned over greenfield api and test
* Retaining password if password mask is used
* Remove magic string *****
* Flatten request for server's settings. Fix bug on shared setting instances
* Remove useless doc
* Simplify code
* Fix Store Email settings page
---------
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>