import { encodeCrock, stringToBytes } from "@gnu-taler/taler-util"; import { h, VNode } from "preact"; import { useState } from "preact/hooks"; import { EmailInput } from "../../../components/fields/EmailInput"; import { AnastasisClientFrame } from "../index"; import { AuthMethodSetupProps } from "./index"; const EMAIL_PATTERN = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; export function AuthMethodEmailSetup({ cancel, addAuthMethod, configured, }: AuthMethodSetupProps): VNode { const [email, setEmail] = useState(""); const addEmailAuth = (): void => addAuthMethod({ authentication_method: { type: "email", instructions: `Email to ${email}`, challenge: encodeCrock(stringToBytes(email)), }, }); const emailError = !EMAIL_PATTERN.test(email) ? "Email address is not valid" : undefined; const errors = !email ? "Add your email" : emailError; function goNextIfNoErrors(): void { if (!errors) addEmailAuth(); } return (

For email authentication, you need to provide an email address. When recovering your secret, you will need to enter the code you receive by email. Add the uuid from the challenge

{configured.length > 0 && (
Your emails:
{configured.map((c, i) => { return (

{c.instructions}

); })}
)}
); }