/*
This file is part of GNU Anastasis
(C) 2021-2022 Anastasis SARL
GNU Anastasis is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with
GNU Anastasis; see the file COPYING. If not, see
*/
import {
canonicalJson,
encodeCrock,
stringToBytes,
} from "@gnu-taler/taler-util";
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
import { TextInput } from "../../../components/fields/TextInput.js";
import { AnastasisClientFrame } from "../index.js";
import { AuthMethodSetupProps } from "./index.js";
export function AuthMethodIbanSetup({
addAuthMethod,
cancel,
configured,
}: AuthMethodSetupProps): VNode {
const [name, setName] = useState("");
const [account, setAccount] = useState("");
const addIbanAuth = (): void =>
addAuthMethod({
authentication_method: {
type: "iban",
instructions: `Wire transfer from ${account} with holder ${name}`,
challenge: encodeCrock(
stringToBytes(
canonicalJson({
name,
account,
}),
),
),
},
});
const errors = !name
? "Add an account name"
: !account
? "Add an account IBAN number"
: undefined;
function goNextIfNoErrors(): void {
if (!errors) addIbanAuth();
}
return (
For bank transfer authentication, you need to provide a bank account
(account holder name and IBAN). When recovering your secret, you will be
asked to pay the recovery fee via bank transfer from the account you
provided here.