mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 23:27:35 +00:00
added long term secret token options
This commit is contained in:
@@ -1,39 +1,39 @@
|
|||||||
import { Fragment, useState } from "react";
|
import { Fragment, useState } from 'react';
|
||||||
import { useRouter } from "next/router";
|
import { faCheck, faCopy } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faCheck, faCopy } from "@fortawesome/free-solid-svg-icons";
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
import { Dialog, Transition } from '@headlessui/react';
|
||||||
import { Dialog, Transition } from "@headlessui/react";
|
import nacl from 'tweetnacl';
|
||||||
import nacl from "tweetnacl";
|
|
||||||
|
|
||||||
import addServiceToken from "~/pages/api/serviceToken/addServiceToken";
|
import addServiceToken from '~/pages/api/serviceToken/addServiceToken';
|
||||||
import getLatestFileKey from "~/pages/api/workspace/getLatestFileKey";
|
import getLatestFileKey from '~/pages/api/workspace/getLatestFileKey';
|
||||||
|
|
||||||
import { envMapping } from "../../../public/data/frequentConstants";
|
import { envMapping } from '../../../public/data/frequentConstants';
|
||||||
import {
|
import {
|
||||||
decryptAssymmetric,
|
decryptAssymmetric,
|
||||||
encryptAssymmetric,
|
encryptAssymmetric
|
||||||
} from "../../utilities/cryptography/crypto";
|
} from '../../utilities/cryptography/crypto';
|
||||||
import Button from "../buttons/Button";
|
import Button from '../buttons/Button';
|
||||||
import InputField from "../InputField";
|
import InputField from '../InputField';
|
||||||
import ListBox from "../Listbox";
|
import ListBox from '../Listbox';
|
||||||
|
|
||||||
const expiryMapping = {
|
const expiryMapping = {
|
||||||
"1 day": 86400,
|
'1 day': 86400,
|
||||||
"7 days": 604800,
|
'7 days': 604800,
|
||||||
"1 month": 2592000,
|
'1 month': 2592000,
|
||||||
|
'6 months': 15552000,
|
||||||
|
'12 months': 31104000
|
||||||
};
|
};
|
||||||
|
|
||||||
const AddServiceTokenDialog = ({
|
const AddServiceTokenDialog = ({
|
||||||
isOpen,
|
isOpen,
|
||||||
closeModal,
|
closeModal,
|
||||||
workspaceId,
|
workspaceId,
|
||||||
workspaceName,
|
workspaceName
|
||||||
}) => {
|
}) => {
|
||||||
const router = useRouter();
|
const [serviceToken, setServiceToken] = useState('');
|
||||||
const [serviceToken, setServiceToken] = useState("");
|
const [serviceTokenName, setServiceTokenName] = useState('');
|
||||||
const [serviceTokenName, setServiceTokenName] = useState("");
|
const [serviceTokenEnv, setServiceTokenEnv] = useState('Development');
|
||||||
const [serviceTokenEnv, setServiceTokenEnv] = useState("Development");
|
const [serviceTokenExpiresIn, setServiceTokenExpiresIn] = useState('1 day');
|
||||||
const [serviceTokenExpiresIn, setServiceTokenExpiresIn] = useState("1 day");
|
|
||||||
const [serviceTokenCopied, setServiceTokenCopied] = useState(false);
|
const [serviceTokenCopied, setServiceTokenCopied] = useState(false);
|
||||||
|
|
||||||
const generateServiceToken = async () => {
|
const generateServiceToken = async () => {
|
||||||
@@ -43,7 +43,7 @@ const AddServiceTokenDialog = ({
|
|||||||
ciphertext: latestFileKey.latestKey.encryptedKey,
|
ciphertext: latestFileKey.latestKey.encryptedKey,
|
||||||
nonce: latestFileKey.latestKey.nonce,
|
nonce: latestFileKey.latestKey.nonce,
|
||||||
publicKey: latestFileKey.latestKey.sender.publicKey,
|
publicKey: latestFileKey.latestKey.sender.publicKey,
|
||||||
privateKey: localStorage.getItem("PRIVATE_KEY"),
|
privateKey: localStorage.getItem('PRIVATE_KEY')
|
||||||
});
|
});
|
||||||
|
|
||||||
// generate new public/private key pair
|
// generate new public/private key pair
|
||||||
@@ -55,7 +55,7 @@ const AddServiceTokenDialog = ({
|
|||||||
const { ciphertext: encryptedKey, nonce } = encryptAssymmetric({
|
const { ciphertext: encryptedKey, nonce } = encryptAssymmetric({
|
||||||
plaintext: key,
|
plaintext: key,
|
||||||
publicKey,
|
publicKey,
|
||||||
privateKey,
|
privateKey
|
||||||
});
|
});
|
||||||
|
|
||||||
let newServiceToken = await addServiceToken({
|
let newServiceToken = await addServiceToken({
|
||||||
@@ -65,16 +65,16 @@ const AddServiceTokenDialog = ({
|
|||||||
expiresIn: expiryMapping[serviceTokenExpiresIn],
|
expiresIn: expiryMapping[serviceTokenExpiresIn],
|
||||||
publicKey,
|
publicKey,
|
||||||
encryptedKey,
|
encryptedKey,
|
||||||
nonce,
|
nonce
|
||||||
});
|
});
|
||||||
|
|
||||||
const serviceToken = newServiceToken + "," + privateKey;
|
const serviceToken = newServiceToken + ',' + privateKey;
|
||||||
setServiceToken(serviceToken);
|
setServiceToken(serviceToken);
|
||||||
};
|
};
|
||||||
|
|
||||||
function copyToClipboard() {
|
function copyToClipboard() {
|
||||||
// Get the text field
|
// Get the text field
|
||||||
var copyText = document.getElementById("serviceToken");
|
var copyText = document.getElementById('serviceToken');
|
||||||
|
|
||||||
// Select the text field
|
// Select the text field
|
||||||
copyText.select();
|
copyText.select();
|
||||||
@@ -91,8 +91,8 @@ const AddServiceTokenDialog = ({
|
|||||||
|
|
||||||
const closeAddServiceTokenModal = () => {
|
const closeAddServiceTokenModal = () => {
|
||||||
closeModal();
|
closeModal();
|
||||||
setServiceTokenName("");
|
setServiceTokenName('');
|
||||||
setServiceToken("");
|
setServiceToken('');
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -122,7 +122,7 @@ const AddServiceTokenDialog = ({
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
{serviceToken == "" ? (
|
{serviceToken == '' ? (
|
||||||
<Dialog.Panel className="w-full max-w-md transform rounded-md bg-bunker-800 border border-gray-700 p-6 text-left align-middle shadow-xl transition-all">
|
<Dialog.Panel className="w-full max-w-md transform rounded-md bg-bunker-800 border border-gray-700 p-6 text-left align-middle shadow-xl transition-all">
|
||||||
<Dialog.Title
|
<Dialog.Title
|
||||||
as="h3"
|
as="h3"
|
||||||
@@ -155,12 +155,12 @@ const AddServiceTokenDialog = ({
|
|||||||
selected={serviceTokenEnv}
|
selected={serviceTokenEnv}
|
||||||
onChange={setServiceTokenEnv}
|
onChange={setServiceTokenEnv}
|
||||||
data={[
|
data={[
|
||||||
"Development",
|
'Development',
|
||||||
"Staging",
|
'Staging',
|
||||||
"Production",
|
'Production',
|
||||||
"Testing",
|
'Testing'
|
||||||
]}
|
]}
|
||||||
width="full"
|
isFull={true}
|
||||||
text="Environment: "
|
text="Environment: "
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -168,8 +168,14 @@ const AddServiceTokenDialog = ({
|
|||||||
<ListBox
|
<ListBox
|
||||||
selected={serviceTokenExpiresIn}
|
selected={serviceTokenExpiresIn}
|
||||||
onChange={setServiceTokenExpiresIn}
|
onChange={setServiceTokenExpiresIn}
|
||||||
data={["1 day", "7 days", "1 month"]}
|
data={[
|
||||||
width="full"
|
'1 day',
|
||||||
|
'7 days',
|
||||||
|
'1 month',
|
||||||
|
'6 months',
|
||||||
|
'12 months'
|
||||||
|
]}
|
||||||
|
isFull={true}
|
||||||
text="Expires in: "
|
text="Expires in: "
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -181,7 +187,7 @@ const AddServiceTokenDialog = ({
|
|||||||
text="Add Service Token"
|
text="Add Service Token"
|
||||||
textDisabled="Add Service Token"
|
textDisabled="Add Service Token"
|
||||||
size="md"
|
size="md"
|
||||||
active={serviceTokenName == "" ? false : true}
|
active={serviceTokenName == '' ? false : true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user