Convert JS to TS (#47)

This commit is contained in:
Vladyslav Matsiiako
2022-12-11 13:06:25 -05:00
parent 7cdafe0eed
commit eae2fc813a
21 changed files with 332 additions and 273 deletions
+48 -47
View File
@@ -1,38 +1,38 @@
import React, { useState } from "react";
import Head from "next/head";
import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/router";
import { faCheck, faWarning, faX } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import React, { useState } from 'react';
import Head from 'next/head';
import Image from 'next/image';
import Link from 'next/link';
import { useRouter } from 'next/router';
import { faCheck, faWarning, faX } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import Button from "~/components/basic/buttons/Button";
import InputField from "~/components/basic/InputField";
import Aes256Gcm from "~/components/utilities/cryptography/aes-256-gcm";
import issueBackupKey from "~/components/utilities/cryptography/issueBackupKey";
import attemptLogin from "~/utilities/attemptLogin";
import passwordCheck from "~/utilities/checks/PasswordCheck";
import Button from '~/components/basic/buttons/Button';
import InputField from '~/components/basic/InputField';
import Aes256Gcm from '~/components/utilities/cryptography/aes-256-gcm';
import issueBackupKey from '~/components/utilities/cryptography/issueBackupKey';
import attemptLogin from '~/utilities/attemptLogin';
import passwordCheck from '~/utilities/checks/PasswordCheck';
import completeAccountInformationSignupInvite from "./api/auth/CompleteAccountInformationSignupInvite";
import verifySignupInvite from "./api/auth/VerifySignupInvite";
import completeAccountInformationSignupInvite from './api/auth/CompleteAccountInformationSignupInvite';
import verifySignupInvite from './api/auth/VerifySignupInvite';
const nacl = require("tweetnacl");
const jsrp = require("jsrp");
nacl.util = require("tweetnacl-util");
const nacl = require('tweetnacl');
const jsrp = require('jsrp');
nacl.util = require('tweetnacl-util');
const client = new jsrp.client();
const queryString = require("query-string");
const queryString = require('query-string');
export default function SignupInvite() {
const [password, setPassword] = useState("");
const [firstName, setFirstName] = useState("");
const [lastName, setLastName] = useState("");
const [password, setPassword] = useState('');
const [firstName, setFirstName] = useState('');
const [lastName, setLastName] = useState('');
const [firstNameError, setFirstNameError] = useState(false);
const [lastNameError, setLastNameError] = useState(false);
const [passwordErrorLength, setPasswordErrorLength] = useState(false);
const [passwordErrorNumber, setPasswordErrorNumber] = useState(false);
const [passwordErrorLowerCase, setPasswordErrorLowerCase] = useState(false);
const router = useRouter();
const parsedUrl = queryString.parse(router.asPath.split("?")[1]);
const parsedUrl = queryString.parse(router.asPath.split('?')[1]);
const [email, setEmail] = useState(parsedUrl.to);
const token = parsedUrl.token;
const [errorLogin, setErrorLogin] = useState(false);
@@ -74,21 +74,22 @@ export default function SignupInvite() {
const PRIVATE_KEY = nacl.util.encodeBase64(secretKeyUint8Array);
const PUBLIC_KEY = nacl.util.encodeBase64(publicKeyUint8Array);
const { ciphertext, iv, tag } = Aes256Gcm.encrypt(
PRIVATE_KEY,
password
const { ciphertext, iv, tag } = Aes256Gcm.encrypt({
text: PRIVATE_KEY,
secret: password
.slice(0, 32)
.padStart(
32 + (password.slice(0, 32).length - new Blob([password]).size),
"0"
'0'
)
);
localStorage.setItem("PRIVATE_KEY", PRIVATE_KEY);
});
localStorage.setItem('PRIVATE_KEY', PRIVATE_KEY);
client.init(
{
username: email,
password: password,
password: password
},
async () => {
client.createVerifier(async (err, result) => {
@@ -102,17 +103,17 @@ export default function SignupInvite() {
tag,
salt: result.salt,
verifier: result.verifier,
token: verificationToken,
token: verificationToken
});
// if everything works, go the main dashboard page.
if (!errorCheck && response.status == "200") {
if (!errorCheck && response.status == '200') {
response = await response.json();
localStorage.setItem("publicKey", PUBLIC_KEY);
localStorage.setItem("encryptedPrivateKey", ciphertext);
localStorage.setItem("iv", iv);
localStorage.setItem("tag", tag);
localStorage.setItem('publicKey', PUBLIC_KEY);
localStorage.setItem('encryptedPrivateKey', ciphertext);
localStorage.setItem('iv', iv);
localStorage.setItem('tag', tag);
try {
await attemptLogin(
@@ -126,7 +127,7 @@ export default function SignupInvite() {
setStep(3);
} catch (error) {
setIsLoading(false);
console.log("Error", error);
console.log('Error', error);
}
}
});
@@ -155,14 +156,14 @@ export default function SignupInvite() {
onButtonPressed={async () => {
const response = await verifySignupInvite({
email,
code: token,
code: token
});
if (response.status == 200) {
setVerificationToken((await response.json()).token);
setStep(2);
} else {
console.log("ERROR", response);
router.push("/requestnewinvite");
console.log('ERROR', response);
router.push('/requestnewinvite');
}
}}
size="lg"
@@ -211,7 +212,7 @@ export default function SignupInvite() {
setPasswordErrorLength,
setPasswordErrorNumber,
setPasswordErrorLowerCase,
currentErrorCheck: false,
currentErrorCheck: false
});
}}
type="password"
@@ -244,7 +245,7 @@ export default function SignupInvite() {
)}
<div
className={`${
passwordErrorLength ? "text-gray-400" : "text-gray-600"
passwordErrorLength ? 'text-gray-400' : 'text-gray-600'
} text-sm`}
>
14 characters
@@ -264,7 +265,7 @@ export default function SignupInvite() {
)}
<div
className={`${
passwordErrorLowerCase ? "text-gray-400" : "text-gray-600"
passwordErrorLowerCase ? 'text-gray-400' : 'text-gray-600'
} text-sm`}
>
1 lowercase character
@@ -284,7 +285,7 @@ export default function SignupInvite() {
)}
<div
className={`${
passwordErrorNumber ? "text-gray-400" : "text-gray-600"
passwordErrorNumber ? 'text-gray-400' : 'text-gray-600'
} text-sm`}
>
1 number
@@ -335,11 +336,11 @@ export default function SignupInvite() {
await issueBackupKey({
email,
password,
personalName: firstName + " " + lastName,
personalName: firstName + ' ' + lastName,
setBackupKeyError,
setBackupKeyIssued,
setBackupKeyIssued
});
router.push("/dashboard/");
router.push('/dashboard/');
}}
size="lg"
/>