taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 00e21104d538f7cb50858212dbd121cd3739de7d
parent 625b293709e343ae2c44b3796f55fd5a1c541ce2
Author: Florian Dold <florian@dold.me>
Date:   Thu, 31 Jul 2025 17:33:39 +0200

new DDs

Diffstat:
Adesign-documents/067-merchant-self-provisioning.rst | 161+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adesign-documents/068-tokens-roadmap.rst | 108+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdesign-documents/index.rst | 2++
3 files changed, 271 insertions(+), 0 deletions(-)

diff --git a/design-documents/067-merchant-self-provisioning.rst b/design-documents/067-merchant-self-provisioning.rst @@ -0,0 +1,161 @@ +DD 67: Merchant Self Provisioning +################################# + +*Status*: incomplete draft (2025-07-31) + +Summary +======= + +The self-provisioning feature allows merchants sign up for their own Taler +Merchant Backend instance. + +Motivation +========== + +It's not feasible for non-technical merchants that want to use Taler to +set up their own server with a merchant backend instance running. + +Requirements +============ + +* The self-provisioning should be completely automatic, + manual actions of the the service provider must be kept at a minimum. + +Proposed Solution +================= + +Implementation tasks: + +* Merchant backend + + * New public endpoint for self-provisioned instance creation + * New (private) endpoints for 2FA channel confirmation + * New public endpoints for password reset + * Changed endpoint for instance details (must include email/phone) + * Database schema changes / migration + + * Ideally with migration test + +* Merchant SPA: + + * onboarding page + * password reset flow + * new email/phone field in instance details + +Documentation tasks: + +* New options for self-provisioning documented in man page +* API changes documented in API docs +* Setup of 2FA providers (via helper scripts) documented in merchant operator manual + +Deployment tasks: + +* Integrated self-provisioning in sandcastle-ng + +Testing tasks: + +* taler-harness tests for self provisioning +* test steps added to docs.taler.net +* test steps run as part of final QC + +Flows +===== + +Signup: + +* User goes to the merchant SPA in their browser +* User selects sign-up option +* User enters details, incl. phone number and e-mail +* Backend sends 2FA confirmation codes to user +* User enters 2FA codes on website + + * User can re-request 2FA codes after cooldown, limited attempts + +* Once 2FA channels are confirmed by the backend, user has full + access to the merchant backend instance. + + * While 2FA confirmation is pending, password login works, + but only limited actions are available. + +Password reset: + +* User selects "Reset Password" option on the login screen +* User enters their username +* Backend sends E-Mail and SMS verification codes to the user +* User enters 2FA codes on website +* On successful validation of 2FA codes, user can enter new password + + * User can re-request 2FA codes after cooldown, limited attempts + +* User can log in with their new password + +UI Structure Mocks +================== + +New login page: + +:: + + Login required + + Username: [ ... ] + Password: [ ... ] + + [Confirm] + --- + [Sign up] [Forgot Password] + +Signup page: + +:: + + Please enter your information to create a new merchant instance: + + Username: [ ... ] + Password: [ ... ] + E-Mail*: [ ... ] + Phone number*: [ ... ] + + * This information is used to restore access to your account + +Definition of Done +================== + +* Children of tracking bug (https://bugs.taler.net/n/10224) all closed + + +Drawbacks and Alternatives +========================== + +* The name might be too technical. Maybe call it "self onboarding" or "self sign-up"? +* Merchants need to fully trust the provider. +* Multi-tenancy always has some negative security implementations + + * Alternative: Deploy *separate* merchant backends per user instead of deploying an instance, in + order to avoid multi-tenancy drawbacks. + +Scope +===== + +Explicitly out of scope *for now* are: + +* Invitation links (i.e. closed self sign-ups) +* Manual approval of sign-ups. For now, sign-ups are automatically + approved/active. +* 2FA for login +* 2FA for particular operations (e.g. changing bank account) + +Related Efforts +=============== + +The corebank API also has 2FA. We should keep the API design as aligned as +possible. + +Discussion / Q&A +================ + +* Can the merchant delete their own instance? Or is it some support request via e-mail? +* How does the instance user known the admin/support contact? Is there some page for that in the side-bar? + Or is this external to the feature? +* What happens while the 2FA channels aren't confirmed yet? + diff --git a/design-documents/068-tokens-roadmap.rst b/design-documents/068-tokens-roadmap.rst @@ -0,0 +1,108 @@ +DD 68: Token Feature Roadmap +############################ + +*Status*: incomplete draft (2025-07-31) + +Summary +======= + +This design document documents the roadmap for token types +supported by Taler. + +Motivation +========== + +Plan for Wallet +=============== + +Types of tokens: + +* donations tokens (hard deadline: End of November) + + * onboarding (1st donation) + + * ask for tax payer id, add taxOfficeBaseUrl (only one per wallet) + * can be changed, but new donations will have a different tax payer ID + * store date with tax payer ID for merge + + * reporting: per year, one QR code per: (taxPayerId, walletSalt, year) + + * meta data per QR code: taxPayerId, walletSalt, year, taxOfficeBaseUrl + * out of scope: generate PDF + * listing: just show sum (per tax payer ID and year and salt), not individual tokens + + * listing: there is separate listing for tokens + * delete: out of scope for now / future work + +* subscription + + * listing + + * Expired tokens are deleted automatically after grace period (30 days). + * Consider not deleting the last token of a particular slug. + Maybe in the future, subscription tokens will have a link + to re-purchase them. + * No counter + * Show expiration date + * delete (with big fat warning) + +* discount tokens + + * listing (type and number, description) + * group by expiration date (if it exists) + * delete + +* asset tokens (deadlines: end of March) + + * listing (with number, no fractions possible, no expiration) + * background task: poll for share action, automatically execute the share action + + * share action dividend: not supported for now + * share action voting: multiple in parallel possible, maybe show vote weight, have expiration date + * votes are grouped under the respective asset tokens + + * voting action + + * normally grouped under asset token ("history" for corporate actions) + * in notificiation state: vote directly or dismiss + * eventually, result is fetched and shown + + * divident (initially out of scope) + + * normally grouped under asset token ("history" for corporate actions) + * in notificiation state: dismiss, auto-dismiss after some time + +Plan for Merchant Backend +========================= + +TBD. + +Plan for Donau +============== + +* Service exists +* Needs to packaged + + +Test Plan +========= + +* Subscription/discount: blog.demo.taler.net +* Donations: donations.demo.taler.net + + * Receipt validation: TBD + +* Asset tokenization: TBD / will be deployed on demo via merchant + + +Definition of Done +================== + +* Donau deployed in sandcastle +* donations in demo must use donau / contracttermsv1 +* use separate app (prototype exists?) for verification of receipts + +Discussion / Q&A +================ + +(This should be filled in with results from discussions on mailing lists / personal communication.) diff --git a/design-documents/index.rst b/design-documents/index.rst @@ -78,4 +78,6 @@ Design documents that start with "XX" are considered deprecated. 064-kyc-operation-algo 065-exchange-base-url-migration 066-wallet-color-scheme + 067-merchant-self-provisioning + 068-tokens-roadmap 999-template