From 1fd337f4fed08d7867359ec52104a6cadb76cdfc Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 2 Nov 2021 12:31:37 -0300 Subject: [PATCH] refactoring challenge overview to look more like policy reviewing --- .../pages/home/AuthenticationEditorScreen.tsx | 2 +- .../home/ChallengeOverviewScreen.stories.tsx | 61 ++++++++------ .../pages/home/ChallengeOverviewScreen.tsx | 82 ++++++++++--------- .../src/pages/home/ReviewPoliciesScreen.tsx | 2 +- .../AuthMethodEmailSetup.stories.tsx | 0 .../AuthMethodEmailSetup.tsx | 2 +- .../AuthMethodIbanSetup.stories.tsx | 0 .../AuthMethodIbanSetup.tsx | 0 .../AuthMethodPostSetup.stories.tsx | 0 .../AuthMethodPostSetup.tsx | 0 .../AuthMethodQuestionSetup.stories.tsx | 0 .../AuthMethodQuestionSetup.tsx | 0 .../AuthMethodSmsSetup.stories.tsx | 0 .../AuthMethodSmsSetup.tsx | 0 .../AuthMethodTotpSetup.stories.tsx | 0 .../AuthMethodTotpSetup.tsx | 2 +- .../AuthMethodVideoSetup.stories.tsx | 0 .../AuthMethodVideoSetup.tsx | 2 +- .../{authMethodSetup => authMethod}/index.tsx | 0 .../{authMethodSetup => authMethod}/totp.ts | 0 20 files changed, 85 insertions(+), 68 deletions(-) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodEmailSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodEmailSetup.tsx (97%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodIbanSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodIbanSetup.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodPostSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodPostSetup.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodQuestionSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodQuestionSetup.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodSmsSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodSmsSetup.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodTotpSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodTotpSetup.tsx (97%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodVideoSetup.stories.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/AuthMethodVideoSetup.tsx (98%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/index.tsx (100%) rename packages/anastasis-webui/src/pages/home/{authMethodSetup => authMethod}/totp.ts (100%) diff --git a/packages/anastasis-webui/src/pages/home/AuthenticationEditorScreen.tsx b/packages/anastasis-webui/src/pages/home/AuthenticationEditorScreen.tsx index f4d2aee58..4e7819a77 100644 --- a/packages/anastasis-webui/src/pages/home/AuthenticationEditorScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/AuthenticationEditorScreen.tsx @@ -3,7 +3,7 @@ import { AuthMethod } from "anastasis-core"; import { ComponentChildren, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { useAnastasisContext } from "../../context/anastasis"; -import { authMethods, KnownAuthMethods } from "./authMethodSetup"; +import { authMethods, KnownAuthMethods } from "./authMethod"; import { AnastasisClientFrame } from "./index"; diff --git a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx index 758963574..a89b5640c 100644 --- a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx +++ b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx @@ -56,17 +56,17 @@ export const SomePoliciesOneSolved = createExample(TestedComponent, { policies: [[{ uuid: '1' }, { uuid: '2' }], [{ uuid: 'uuid-3' }]], challenges: [{ cost: 'USD:1', - instructions: 'just go for it', + instructions: 'this question cost 1 USD', type: 'question', uuid: '1', }, { - cost: 'USD:1', - instructions: 'just go for it', + cost: 'USD:0', + instructions: 'answering this question is free', type: 'question', uuid: '2', }, { cost: 'USD:1', - instructions: 'just go for it', + instructions: 'this question is already answered', type: 'question', uuid: 'uuid-3', }] @@ -84,8 +84,8 @@ export const OneBadConfiguredPolicy = createExample(TestedComponent, { policies: [[{ uuid: '1' }, { uuid: '2' }]], challenges: [{ cost: 'USD:1', - instructions: 'just go for it', - type: 'sasd', + instructions: 'this policy has a missing uuid (the other auth method)', + type: 'totp', uuid: '1', }], }, @@ -101,35 +101,48 @@ export const OnePolicyWithAllTheChallenges = createExample(TestedComponent, { { uuid: '4' }, { uuid: '5' }, { uuid: '6' }, + { uuid: '7' }, + { uuid: '8' }, ]], challenges: [{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'Does P equals NP?', type: 'question', uuid: '1', },{ cost: 'USD:1', - instructions: 'enter a text received by a sms', + instructions: 'SMS to 555-555', type: 'sms', uuid: '2', },{ cost: 'USD:1', - instructions: 'enter a text received by a email', + instructions: 'Email to qwe@asd.com', type: 'email', uuid: '3', },{ cost: 'USD:1', - instructions: 'enter a code based on a time-based one-time password', + instructions: 'Enter 8 digits code for "Anastasis"', type: 'totp', uuid: '4', - },{ - cost: 'USD:1', - instructions: 'send a wire transfer to an account', + },{// + cost: 'USD:0', + instructions: 'Wire transfer from ASDXCVQWE123123 with holder Florian', type: 'iban', uuid: '5', },{ cost: 'USD:1', - instructions: 'just go for it', + instructions: 'Join a video call', + type: 'video',//Enter 8 digits code for "Anastasis" + uuid: '7', + },{ + },{ + cost: 'USD:1', + instructions: 'Letter to address in postal code DE123123', + type: 'post',//Enter 8 digits code for "Anastasis" + uuid: '8', + },{ + cost: 'USD:1', + instructions: 'instruction for an unknown type of challenge', type: 'new-type-of-challenge', uuid: '6', }], @@ -154,52 +167,52 @@ export const OnePolicyWithAllTheChallengesInDifferentState = createExample(Teste ]], challenges: [{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "solved"', type: 'question', uuid: '1', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "hint"', type: 'question', uuid: '2', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "details"', type: 'question', uuid: '3', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "body"', type: 'question', uuid: '4', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "redirect"', type: 'question', uuid: '5', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "server-failure"', type: 'question', uuid: '6', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "truth-unknown"', type: 'question', uuid: '7', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "rate-limit-exceeded"', type: 'question', uuid: '8', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "authentication-timeout"', type: 'question', uuid: '9', },{ cost: 'USD:1', - instructions: 'answer the a question correctly', + instructions: 'in state "external-instructions"', type: 'question', uuid: '10', }], diff --git a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx index cf44d5bf4..7b9b060ce 100644 --- a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx @@ -1,7 +1,9 @@ +/* eslint-disable @typescript-eslint/camelcase */ import { ChallengeFeedback } from "anastasis-core"; import { h, VNode } from "preact"; import { useAnastasisContext } from "../../context/anastasis"; import { AnastasisClientFrame } from "./index"; +import { authMethods, KnownAuthMethods } from "./authMethod"; export function ChallengeOverviewScreen(): VNode { const reducer = useAnastasisContext() @@ -50,59 +52,61 @@ export function ChallengeOverviewScreen(): VNode { const errors = !atLeastThereIsOnePolicySolved ? "Solve one policy before proceeding" : undefined; return ( - {!policies.length ?

+ {!policies.length ?

No policies found, try with another version of the secret -

: (policies.length === 1 ?

+

: (policies.length === 1 ?

One policy found for this secret. You need to solve all the challenges in order to recover your secret. -

:

+

:

We have found {policies.length} polices. You need to solve all the challenges from one policy in order to recover your secret.

)} - {policiesWithInfo.map((row, i) => { - const tableBody = row.challenges.map(({ info, uuid }) => { + {policiesWithInfo.map((policy, policy_index) => { + const tableBody = policy.challenges.map(({ info, uuid }) => { + const isFree = !info.cost || info.cost.endsWith(':0') + const method = authMethods[info.type as KnownAuthMethods] return ( - - {info.type} - - {info.instructions} - - {info.feedback?.state ?? "unknown"} - {info.cost} - - {info.feedback?.state !== "solved" ? ( - reducer.transition("select_challenge", { uuid })}> - Solve + ); }) + + const policyName = policy.challenges.map(x => x.info.type).join(" + "); + const opa = !atLeastThereIsOnePolicySolved ? undefined : ( policy.isPolicySolved ? undefined : '0.6') return ( -
- Policy #{i + 1} - {row.challenges.length === 0 &&

- This policy doesn't have challenges +

+

+ Policy #{policy_index + 1}: {policyName} +

+ {policy.challenges.length === 0 &&

+ This policy doesn't have challenges.

} - {row.challenges.length === 1 &&

- This policy just have one challenge to be solved + {policy.challenges.length === 1 &&

+ This policy just have one challenge.

} - {row.challenges.length > 1 &&

- This policy have {row.challenges.length} challenges + {policy.challenges.length > 1 &&

+ This policy have {policy.challenges.length} challenges.

} - - - - - - - - - - - {tableBody} - -
Challenge typeDescriptionStatusCost
+ {tableBody}
); })} diff --git a/packages/anastasis-webui/src/pages/home/ReviewPoliciesScreen.tsx b/packages/anastasis-webui/src/pages/home/ReviewPoliciesScreen.tsx index 6d5220a05..673f215e2 100644 --- a/packages/anastasis-webui/src/pages/home/ReviewPoliciesScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/ReviewPoliciesScreen.tsx @@ -2,7 +2,7 @@ import { h, VNode } from "preact"; import { useAnastasisContext } from "../../context/anastasis"; import { AnastasisClientFrame } from "./index"; -import { authMethods, KnownAuthMethods } from "./authMethodSetup"; +import { authMethods, KnownAuthMethods } from "./authMethod"; export function ReviewPoliciesScreen(): VNode { const reducer = useAnastasisContext() diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodEmailSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodEmailSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodEmailSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSetup.tsx similarity index 97% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodEmailSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSetup.tsx index e8cee9cb4..1a6be1b61 100644 --- a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodEmailSetup.tsx +++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodEmailSetup.tsx @@ -51,7 +51,7 @@ export function AuthMethodEmailSetup({ cancel, addAuthMethod, configured }: Auth
}
- + diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodIbanSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodIbanSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodIbanSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodIbanSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodIbanSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodIbanSetup.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodIbanSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodIbanSetup.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodPostSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodPostSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodPostSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSetup.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodPostSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodPostSetup.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSetup.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodQuestionSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSetup.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodSmsSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodSmsSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodSmsSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodSmsSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodSmsSetup.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodTotpSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodTotpSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodTotpSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx similarity index 97% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodTotpSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx index db656e630..fd0bd0224 100644 --- a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodTotpSetup.tsx +++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodTotpSetup.tsx @@ -25,7 +25,7 @@ export function AuthMethodTotpSetup({ addAuthMethod, cancel, configured }: AuthM const addTotpAuth = (): void => addAuthMethod({ authentication_method: { type: "totp", - instructions: `Enter ${digits} digits code for ${name}`, + instructions: `Enter ${digits} digits code for "${name}"`, challenge: encodeCrock(stringToBytes(totpURL)), }, }); diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodVideoSetup.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSetup.stories.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodVideoSetup.stories.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSetup.stories.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodVideoSetup.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSetup.tsx similarity index 98% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodVideoSetup.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSetup.tsx index d292a9d24..8be999b3f 100644 --- a/packages/anastasis-webui/src/pages/home/authMethodSetup/AuthMethodVideoSetup.tsx +++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSetup.tsx @@ -15,7 +15,7 @@ export function AuthMethodVideoSetup({cancel, addAuthMethod, configured}: AuthMe addAuthMethod({ authentication_method: { type: "video", - instructions: image, + instructions: 'Join a video call', challenge: encodeCrock(stringToBytes(image)), }, }) diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/index.tsx b/packages/anastasis-webui/src/pages/home/authMethod/index.tsx similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/index.tsx rename to packages/anastasis-webui/src/pages/home/authMethod/index.tsx diff --git a/packages/anastasis-webui/src/pages/home/authMethodSetup/totp.ts b/packages/anastasis-webui/src/pages/home/authMethod/totp.ts similarity index 100% rename from packages/anastasis-webui/src/pages/home/authMethodSetup/totp.ts rename to packages/anastasis-webui/src/pages/home/authMethod/totp.ts