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"