taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 2b6e5a6532aecedf9c33ded6a44e5f06802cbd31
parent ae3b46492c7865dc4191b6f732db958d67d5c526
Author: Sebastian <sebasjm@gmail.com>
Date:   Wed,  6 Aug 2025 10:51:06 +0200

fix provisioning

Diffstat:
Mpackages/taler-harness/src/index.ts | 61++++++++++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 46 insertions(+), 15 deletions(-)

diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts @@ -805,7 +805,7 @@ deploymentCli .requiredArgument("corebankApiBaseUrl", clk.STRING, { help: "URL location of the libeufin bank backend", }) - .requiredOption( + .maybeOption( "merchantToken", ["--merchant-management-token"], clk.STRING, @@ -813,6 +813,14 @@ deploymentCli help: "access token of the default instance in the merchant backend", }, ) + .maybeOption( + "merchantPassword", + ["--merchant-management-password"], + clk.STRING, + { + help: "access token of the default instance in the merchant backend", + }, + ) .maybeOption("bankToken", ["--bank-admin-token"], clk.STRING, { help: "libeufin bank admin's token if the account creation is restricted", }) @@ -841,9 +849,11 @@ deploymentCli help: "if everything worked ok, change the password of the accounts at the end", }) .action(async (args) => { - const managementToken = createRFC8959AccessTokenPlain( + const merchantAdminTokenArg = args.provisionBankMerchant.merchantToken ? createRFC8959AccessTokenPlain( args.provisionBankMerchant.merchantToken, - ); + ) : undefined; + const merchantAdminPassword = args.provisionBankMerchant.merchantPassword; + const bankAdminPassword = args.provisionBankMerchant.bankPassword; const bankAdminTokenArg = args.provisionBankMerchant.bankToken ? createRFC8959AccessTokenPlain(args.provisionBankMerchant.bankToken) @@ -918,6 +928,27 @@ deploymentCli bankAdminToken = bankAdminTokenArg; } + let merchantAdminToken: AccessToken | undefined; + if (merchantAdminPassword) { + const resp = await merchantManager.createAccessToken( + "admin", + merchantAdminPassword, + { + scope: LoginTokenScope.All, + duration: { + d_us: 1000 * 1000 * 10, //10 secs + }, + }, + ); + if (resp.type === "fail") { + logger.error(`could not get bank admin token from password.`); + return; + } + merchantAdminToken = resp.body.access_token; + } else { + merchantAdminToken = merchantAdminTokenArg; + } + /** * create bank account */ @@ -930,9 +961,9 @@ deploymentCli contact_data: email || phone ? { - email: email, - phone: phone, - } + email: email, + phone: phone, + } : undefined, }); @@ -951,7 +982,7 @@ deploymentCli * create merchant account */ { - const resp = await merchantManager.createInstance(managementToken, { + const resp = await merchantManager.createInstance(merchantAdminToken, { address: {}, auth: { method: MerchantAuthMethod.TOKEN, @@ -982,7 +1013,7 @@ deploymentCli } const { access_token } = succeedOrThrow( - await merchantManager.createAccessToken(id, password, { + await merchantInstance.createAccessToken(id, password, { scope: LoginTokenScope.All, }), ); @@ -1119,7 +1150,7 @@ deploymentCli } const { access_token } = succeedOrThrow( - await merchantManager.createAccessToken(id, prevPassword, { + await merchantInstance.createAccessToken(id, prevPassword, { scope: LoginTokenScope.All, }), ); @@ -1287,10 +1318,10 @@ deploymentCli credit_facade_credentials: bankUser && bankPassword ? { - type: "basic", - username: bankUser, - password: bankPassword, - } + type: "basic", + username: bankUser, + password: bankPassword, + } : undefined, }); if (createAccountResp.type != "ok") { @@ -1795,8 +1826,8 @@ merchantCli const scope = args.token.scope ?? "all"; const duration = args.token.duration ? Duration.toTalerProtocolDuration( - Duration.fromPrettyString(args.token.duration), - ) + Duration.fromPrettyString(args.token.duration), + ) : undefined; const tokResp = await merchantApi.createAccessToken(instance, password, { scope: scope as LoginTokenScope,