aboutsummaryrefslogtreecommitdiff
path: root/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-11-01 16:10:49 -0300
committerSebastian <sebasjm@gmail.com>2021-11-01 16:10:55 -0300
commit88d142d2098ad87613222e9a0c6df478a78f6528 (patch)
treec5552e43a4641edb233fc858670d50c41d2c7c9b /packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx
parentea2acd1d3caa21f23127687214045a49d8fea0ad (diff)
downloadwallet-core-88d142d2098ad87613222e9a0c6df478a78f6528.tar.xz
more styling
added placeholders for inputs import declaration for png next button now has tooltip providing info about whats missing a lot more of examples for UI testing added qr dependency for totp rendering added email and field input types added all auth method setup screens added modal when there is not auth provider merge continent and country into location section others improvements as well...
Diffstat (limited to 'packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx')
-rw-r--r--packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx70
1 files changed, 70 insertions, 0 deletions
diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx
new file mode 100644
index 000000000..eab800e35
--- /dev/null
+++ b/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx
@@ -0,0 +1,70 @@
+/* eslint-disable @typescript-eslint/camelcase */
+import {
+ encodeCrock,
+ stringToBytes
+} from "@gnu-taler/taler-util";
+import { Fragment, h, VNode } from "preact";
+import { useState } from "preact/hooks";
+import { AuthMethodSetupProps } from "../AuthenticationEditorScreen";
+import { AnastasisClientFrame } from "../index";
+import { TextInput } from "../../../components/fields/TextInput";
+
+export function AuthMethodQuestionSetup({ cancel, addAuthMethod, configured }: AuthMethodSetupProps): VNode {
+ const [questionText, setQuestionText] = useState("");
+ const [answerText, setAnswerText] = useState("");
+ const addQuestionAuth = (): void => addAuthMethod({
+ authentication_method: {
+ type: "question",
+ instructions: questionText,
+ challenge: encodeCrock(stringToBytes(answerText)),
+ },
+ });
+
+ const errors = !questionText ? "Add your security question" : (
+ !answerText ? 'Add the answer to your question' : undefined
+ )
+ return (
+ <AnastasisClientFrame hideNav title="Add Security Question">
+ <div>
+ <p>
+ For security question authentication, you need to provide a question
+ and its answer. When recovering your secret, you will be shown the
+ question and you will need to type the answer exactly as you typed it
+ here.
+ </p>
+ <div>
+ <TextInput
+ label="Security question"
+ grabFocus
+ placeholder="Your question"
+ bind={[questionText, setQuestionText]} />
+ </div>
+ <div>
+ <TextInput
+ label="Answer"
+ placeholder="Your answer"
+ bind={[answerText, setAnswerText]}
+ />
+ </div>
+
+ {configured.length > 0 && <section class="section">
+ <div class="block">
+ Your security questions:
+ </div><div class="block">
+ {configured.map((c, i) => {
+ return <div key={i} class="box" style={{ display: 'flex', justifyContent: 'space-between' }}>
+ <p style={{ marginBottom: 'auto', marginTop: 'auto' }}>{c.instructions}</p>
+ <div><button class="button is-danger" onClick={c.remove} >Delete</button></div>
+ </div>
+ })}
+ </div></section>}
+ <div style={{ marginTop: '2em', display: 'flex', justifyContent: 'space-between' }}>
+ <button class="button" onClick={cancel}>Cancel</button>
+ <span data-tooltip={errors}>
+ <button class="button is-info" disabled={errors !== undefined} onClick={addQuestionAuth}>Add</button>
+ </span>
+ </div>
+ </div>
+ </AnastasisClientFrame >
+ );
+}