From f5d6fe74fb733d218e849e8e2af7780df5f1cb8e Mon Sep 17 00:00:00 2001 From: Sebastian Gerske <13647606+H34D@users.noreply.github.com> Date: Tue, 8 Nov 2022 11:09:37 +0100 Subject: [PATCH] full 2fa support --- package.json | 2 +- src/cli.ts | 12 ++++++------ src/commands/2fa/create.ts | 27 ++++++++++++++++++++++++++- src/commands/2fa/info.ts | 4 ++-- yarn.lock | 8 ++++---- 5 files changed, 39 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 78f0451..62e65f9 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "doc": "ts-node ./src/doc.ts" }, "dependencies": { - "@masa-finance/masa-sdk": "^0.2.6", + "@masa-finance/masa-sdk": "^0.3.0", "@types/clear": "^0.1.2", "@types/figlet": "^1.5.5", "chalk": "~4.1.2", diff --git a/src/cli.ts b/src/cli.ts index b7be398..c98011c 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -154,29 +154,29 @@ program } { - const twofa = program.command("2fa").description("2fa Commands"); + const twofa = program.command("2fa").description("2FA Commands"); twofa .command("info") - .description("Shows info about all 2fas") + .description("Shows info about all 2FAs") .action(async () => await twofaInfo()); twofa .command("list") - .description("Lists your 2fas") + .description("Lists your 2FAs") .option("-a, --address
", "Address override") .action(async ({ address }) => await twofaList(address)); twofa .command("create") .argument("", "The phone number to verify") - .description("Creates a 2fa Token") + .description("Creates a 2FA Token") .action(async (phoneNumber: string) => await twofaCreate(phoneNumber)); twofa .command("burn") - .argument("<2fa-id>", "ID of the 2fa to burn") - .description("Burns a 2fa") + .argument("<2fa-id>", "ID of the 2FA to burn") + .description("Burns a 2FA") .action(async (twofaId) => await twofaBurn(twofaId)); } diff --git a/src/commands/2fa/create.ts b/src/commands/2fa/create.ts index 4ae05d4..65bbab1 100644 --- a/src/commands/2fa/create.ts +++ b/src/commands/2fa/create.ts @@ -1,5 +1,30 @@ import { masa } from "../../helpers/masa"; +import * as readline from "readline"; +import { stdin as input, stdout as output } from "process"; + +const read = (question: string): Promise => { + const rl = readline.createInterface({ input, output }); + + return new Promise((resolve) => { + rl.question(question, (result) => { + rl.close(); + return resolve(result); + }); + }); +}; export const create = async (phoneNumber: string) => { - await masa.twofa.create(phoneNumber); + if (await masa.session.checkLogin()) { + const address = await masa.config.wallet.getAddress(); + console.log(`Creating 2FA for phone number: '${phoneNumber}'`); + + const identityId = await masa.identity.load(address); + if (!identityId) return; + + await masa.twofa.generate(phoneNumber); + const code = await read( + "The code that has been sent to your Phonenumber: " + ); + await masa.twofa.create(phoneNumber, code); + } }; diff --git a/src/commands/2fa/info.ts b/src/commands/2fa/info.ts index c1e002c..596eef9 100644 --- a/src/commands/2fa/info.ts +++ b/src/commands/2fa/info.ts @@ -3,10 +3,10 @@ import { masa } from "../../helpers/masa"; export const info = async () => { const identityContracts = await masa.contracts.loadIdentityContracts(); - console.log("Soulbound 2fa"); + console.log("Soulbound 2FA"); console.log(`Contract Address: '${identityContracts.Soulbound2FA.address}'`); console.log( - `Total 2fas: ${( + `Total 2FAs: ${( await identityContracts.Soulbound2FA.totalSupply() ).toNumber()}` ); diff --git a/yarn.lock b/yarn.lock index ff74455..23bfb75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -385,10 +385,10 @@ dependencies: ethers "^5.6.9" -"@masa-finance/masa-sdk@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@masa-finance/masa-sdk/-/masa-sdk-0.2.6.tgz#aaa8dd7745a85fa1a357bf7b850888616313acc0" - integrity sha512-ogi/RFlqKWQk7zCPoZdSbIH1nDTFMvzcfKKXrglIiSha7Kdv6yh9oU17H7baAZq/5wUrpazzEY5nM53JQaEe6A== +"@masa-finance/masa-sdk@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@masa-finance/masa-sdk/-/masa-sdk-0.3.0.tgz#a36a119e9c9816e32a0a75fa34d0d878b87f79fb" + integrity sha512-d2fxOYvcZZFItjBxQ0WTPFcQp0TZvThcUxqnJnUh6ZYQX4QfOIoElLoxmwlLQrUhZoz4xYJEwKdOQBlm8ZPNqg== dependencies: "@masa-finance/masa-contracts-identity" "^0.4.2" arweave "^1.11.6"