[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: some fixes: #7095 #7080 #7085
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: some fixes: #7095 #7080 #7085 #7081 #7089 #7097 |
Date: |
Mon, 24 Jan 2022 20:52:49 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new 1374b37d some fixes: #7095 #7080 #7085 #7081 #7089 #7097
1374b37d is described below
commit 1374b37d2650ab428c9c2b07422afd6083697dfd
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Mon Jan 24 16:47:37 2022 -0300
some fixes: #7095 #7080 #7085 #7081 #7089 #7097
---
.../pages/home/AttributeEntryScreen.stories.tsx | 16 ++++++------
.../src/pages/home/AttributeEntryScreen.tsx | 15 +++++++++--
.../src/pages/home/SecretEditorScreen.tsx | 6 ++++-
.../pages/home/authMethod/AuthMethodEmailSolve.tsx | 29 +++++++++++++++++++---
.../pages/home/authMethod/AuthMethodPostSolve.tsx | 28 +++++++++++++++++++--
.../pages/home/authMethod/AuthMethodSmsSetup.tsx | 20 +++++++++++++--
.../home/authMethod/AuthMethodSmsSolve.stories.tsx | 7 +++---
.../pages/home/authMethod/AuthMethodSmsSolve.tsx | 29 +++++++++++++++++++---
.../pages/home/authMethod/AuthMethodTotpSetup.tsx | 8 +++++-
9 files changed, 133 insertions(+), 25 deletions(-)
diff --git
a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx
b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx
index e61b1327..a2ecbd60 100644
--- a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx
+++ b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx
@@ -39,15 +39,15 @@ export const Backup = createExample(TestedComponent, {
...reducerStatesExample.backupAttributeEditing,
required_attributes: [
{
- name: "first name",
- label: "first",
+ name: "full_name",
+ label: "Full name",
type: "string",
uuid: "asdasdsa1",
widget: "wid",
},
{
- name: "last name",
- label: "second",
+ name: "birthplace",
+ label: "Birthplace",
type: "string",
uuid: "asdasdsa2",
widget: "wid",
@@ -66,15 +66,15 @@ export const Recovery = createExample(TestedComponent, {
...reducerStatesExample.recoveryAttributeEditing,
required_attributes: [
{
- name: "first",
- label: "first",
+ name: "full_name",
+ label: "Full name",
type: "string",
uuid: "asdasdsa1",
widget: "wid",
},
{
- name: "pepe",
- label: "second",
+ name: "birthplace",
+ label: "Birthplace",
type: "string",
uuid: "asdasdsa2",
widget: "wid",
diff --git a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
index 1d5896e4..9c1a93d8 100644
--- a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
+++ b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
@@ -1,6 +1,6 @@
import { UserAttributeSpec, validators } from "@gnu-taler/anastasis-core";
import { isAfter, parse } from "date-fns";
-import { h, VNode } from "preact";
+import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { DateInput } from "../../components/fields/DateInput";
import { PhoneNumberInput } from "../../components/fields/NumberInput";
@@ -122,7 +122,7 @@ for (let i = 0; i < 100; i++) {
}
function AttributeEntryField(props: AttributeEntryFieldProps): VNode {
return (
- <div>
+ <div style={{ marginTop: 16 }}>
{props.spec.type === "date" && (
<DateInput
grabFocus={props.isFirst}
@@ -151,6 +151,17 @@ function AttributeEntryField(props:
AttributeEntryFieldProps): VNode {
bind={[props.value, props.setValue]}
/>
)}
+ {props.spec.type === "string" && (
+ <div>
+ This field is case-sensitive. You must enter exactly the same value
+ during recovery.
+ </div>
+ )}
+ {props.spec.name === "full_name" && (
+ <div>
+ If possible, use "LASTNAME, Firstname(s)" without abbreviations.
+ </div>
+ )}
<div class="block">
This stays private
<span class="icon is-right">
diff --git a/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx
b/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx
index ccef8b94..e401c3d7 100644
--- a/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx
+++ b/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx
@@ -75,11 +75,15 @@ export function SecretEditorScreen(): VNode {
<div class="block">
<TextInput
label="Secret name:"
- tooltip="The secret name allows you to identify your secret when
restoring it. It is a label that you can choose freely."
+ tooltip="This allows you to uniquely identify a secret if you have
made multiple back ups. The value entered here will NOT be protected by the
authentication checks!"
grabFocus
onConfirm={goNextIfNoErrors}
bind={[secretName, setSecretName]}
/>
+ <div>
+ Names should be unique, so that you can easily identify your secret
+ later.
+ </div>
</div>
<div class="block">
<TextInput
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSolve.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSolve.tsx
index 7252ca2f..9ee52d8e 100644
---
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSolve.tsx
+++
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSolve.tsx
@@ -12,7 +12,28 @@ import { SolveOverviewFeedbackDisplay } from
"../SolveScreen";
import { AuthMethodSolveProps } from "./index";
export function AuthMethodEmailSolve({ id }: AuthMethodSolveProps): VNode {
- const [answer, setAnswer] = useState("A-");
+ const [answer, _setAnswer] = useState("A-");
+
+ function setAnswer(str: string): void {
+ //A-12345-678-1234-5678
+ const unformatted = str
+ .replace(/^A-/, "")
+ .replace(/-/g, "")
+ .toLocaleUpperCase();
+
+ let result = `A-${unformatted.substring(0, 5)}`;
+ if (unformatted.length > 5) {
+ result += `-${unformatted.substring(5, 8)}`;
+ }
+ if (unformatted.length > 8) {
+ result += `-${unformatted.substring(8, 12)}`;
+ }
+ if (unformatted.length > 12) {
+ result += `-${unformatted.substring(12, 16)}`;
+ }
+
+ _setAnswer(result);
+ }
const [expanded, setExpanded] = useState(false);
const reducer = useAnastasisContext();
@@ -77,7 +98,9 @@ export function AuthMethodEmailSolve({ id }:
AuthMethodSolveProps): VNode {
const feedback = challengeFeedback[selectedUuid];
async function onNext(): Promise<void> {
- return reducer?.transition("solve_challenge", { answer });
+ return reducer?.transition("solve_challenge", {
+ answer: `A-${answer.replace(/^A-/, "").replace(/-/g, "").trim()}`,
+ });
}
function onCancel(): void {
reducer?.back();
@@ -127,7 +150,7 @@ export function AuthMethodEmailSolve({ id }:
AuthMethodSolveProps): VNode {
grabFocus
onConfirm={onNext}
bind={[answer, setAnswer]}
- placeholder="A-1234567812345678"
+ placeholder="A-12345-678-1234-5678"
/>
<div
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSolve.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSolve.tsx
index af7a62e6..5f03437a 100644
--- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSolve.tsx
+++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSolve.tsx
@@ -12,7 +12,28 @@ import { SolveOverviewFeedbackDisplay } from
"../SolveScreen";
import { AuthMethodSolveProps } from "./index";
export function AuthMethodPostSolve({ id }: AuthMethodSolveProps): VNode {
- const [answer, setAnswer] = useState("A-");
+ const [answer, _setAnswer] = useState("A-");
+
+ function setAnswer(str: string): void {
+ //A-12345-678-1234-5678
+ const unformatted = str
+ .replace(/^A-/, "")
+ .replace(/-/g, "")
+ .toLocaleUpperCase();
+
+ let result = `A-${unformatted.substring(0, 5)}`;
+ if (unformatted.length > 5) {
+ result += `-${unformatted.substring(5, 8)}`;
+ }
+ if (unformatted.length > 8) {
+ result += `-${unformatted.substring(8, 12)}`;
+ }
+ if (unformatted.length > 12) {
+ result += `-${unformatted.substring(12, 16)}`;
+ }
+
+ _setAnswer(result);
+ }
const reducer = useAnastasisContext();
if (!reducer) {
@@ -76,7 +97,9 @@ export function AuthMethodPostSolve({ id }:
AuthMethodSolveProps): VNode {
const feedback = challengeFeedback[selectedUuid];
async function onNext(): Promise<void> {
- return reducer?.transition("solve_challenge", { answer });
+ return reducer?.transition("solve_challenge", {
+ answer: `A-${answer.replace(/^A-/, "").replace(/-/g, "").trim()}`,
+ });
}
function onCancel(): void {
reducer?.back();
@@ -96,6 +119,7 @@ export function AuthMethodPostSolve({ id }:
AuthMethodSolveProps): VNode {
onConfirm={onNext}
label="Answer"
grabFocus
+ placeholder="A-12345-678-1234-5678"
bind={[answer, setAnswer]}
/>
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx
index e70b2a53..fd9e889c 100644
--- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx
+++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx
@@ -5,12 +5,18 @@ import { AuthMethodSetupProps } from ".";
import { PhoneNumberInput } from "../../../components/fields/NumberInput";
import { AnastasisClientFrame } from "../index";
+const REGEX_JUST_NUMBERS = /^\+[0-9 ]*$/;
+
+function isJustNumbers(str: string): boolean {
+ return REGEX_JUST_NUMBERS.test(str);
+}
+
export function AuthMethodSmsSetup({
addAuthMethod,
cancel,
configured,
}: AuthMethodSetupProps): VNode {
- const [mobileNumber, setMobileNumber] = useState("");
+ const [mobileNumber, setMobileNumber] = useState("+");
const addSmsAuth = (): void => {
addAuthMethod({
authentication_method: {
@@ -24,7 +30,13 @@ export function AuthMethodSmsSetup({
useLayoutEffect(() => {
inputRef.current?.focus();
}, []);
- const errors = !mobileNumber ? "Add a mobile number" : undefined;
+ const errors = !mobileNumber
+ ? "Add a mobile number"
+ : !mobileNumber.startsWith("+")
+ ? "Mobile number should start with '+'"
+ : !isJustNumbers(mobileNumber)
+ ? "Mobile number can't have other than numbers"
+ : undefined;
function goNextIfNoErrors(): void {
if (!errors) addSmsAuth();
}
@@ -41,9 +53,13 @@ export function AuthMethodSmsSetup({
label="Mobile number"
placeholder="Your mobile number"
onConfirm={goNextIfNoErrors}
+ error={errors}
grabFocus
bind={[mobileNumber, setMobileNumber]}
/>
+ <div>
+ Enter mobile number including +CC international dialing prefix.
+ </div>
</div>
{configured.length > 0 && (
<section class="section">
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.stories.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.stories.tsx
index c33dbd78..4fdbb2ce 100644
---
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.stories.tsx
+++
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.stories.tsx
@@ -50,14 +50,15 @@ export const WithoutFeedback = createExample(
cost: "USD:1",
instructions: "SMS to +54 11 2233 4455",
type: "question",
- uuid: "uuid-1",
+ uuid: "AHCC4ZJ3Z1AF8TWBKGVGEKCQ3R7HXHJ51MJ45NHNZMHYZTKJ9NW0",
},
],
policies: [],
},
- selected_challenge_uuid: "uuid-1",
+ selected_challenge_uuid:
+ "AHCC4ZJ3Z1AF8TWBKGVGEKCQ3R7HXHJ51MJ45NHNZMHYZTKJ9NW0",
} as ReducerState,
{
- id: "uuid-1",
+ id: "AHCC4ZJ3Z1AF8TWBKGVGEKCQ3R7HXHJ51MJ45NHNZMHYZTKJ9NW0",
},
);
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.tsx
index 61dad3f5..1fd4343a 100644
--- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.tsx
+++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSolve.tsx
@@ -12,7 +12,28 @@ import { SolveOverviewFeedbackDisplay } from
"../SolveScreen";
import { AuthMethodSolveProps } from "./index";
export function AuthMethodSmsSolve({ id }: AuthMethodSolveProps): VNode {
- const [answer, setAnswer] = useState("A-");
+ const [answer, _setAnswer] = useState("A-");
+
+ function setAnswer(str: string): void {
+ //A-12345-678-1234-5678
+ const unformatted = str
+ .replace(/^A-/, "")
+ .replace(/-/g, "")
+ .toLocaleUpperCase();
+
+ let result = `A-${unformatted.substring(0, 5)}`;
+ if (unformatted.length > 5) {
+ result += `-${unformatted.substring(5, 8)}`;
+ }
+ if (unformatted.length > 8) {
+ result += `-${unformatted.substring(8, 12)}`;
+ }
+ if (unformatted.length > 12) {
+ result += `-${unformatted.substring(12, 16)}`;
+ }
+
+ _setAnswer(result);
+ }
const [expanded, setExpanded] = useState(false);
const reducer = useAnastasisContext();
@@ -77,7 +98,9 @@ export function AuthMethodSmsSolve({ id }:
AuthMethodSolveProps): VNode {
const feedback = challengeFeedback[selectedUuid];
async function onNext(): Promise<void> {
- return reducer?.transition("solve_challenge", { answer });
+ return reducer?.transition("solve_challenge", {
+ answer: `A-${answer.replace(/^A-/, "").replace(/-/g, "").trim()}`,
+ });
}
function onCancel(): void {
reducer?.back();
@@ -127,7 +150,7 @@ export function AuthMethodSmsSolve({ id }:
AuthMethodSolveProps): VNode {
grabFocus
onConfirm={onNext}
bind={[answer, setAnswer]}
- placeholder="A-1234567812345678"
+ placeholder="A-12345-678-1234-5678"
/>
<div
diff --git
a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx
b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx
index 6b0dd7a7..e0f0cc5e 100644
--- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx
+++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx
@@ -55,13 +55,19 @@ export function AuthMethodTotpSetup({
<QR text={totpURL} />
</div>
<p>
- After scanning the code with your TOTP App, test it in the input below.
+ Confirm that your TOTP App works by entering the current 8-digit TOTP
+ code here:
</p>
<TextInput
label="Test code"
onConfirm={goNextIfNoErrors}
bind={[test, setTest]}
/>
+ <div>
+ We note that Google's implementation of TOTP is incomplete and will not
+ work. We recommend using FreeOTP+.
+ </div>
+
{configured.length > 0 && (
<section class="section">
<div class="block">Your TOTP numbers:</div>
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: some fixes: #7095 #7080 #7085 #7081 #7089 #7097,
gnunet <=