mutation to update jwt vars added
This commit is contained in:
parent
7d77396657
commit
a3d9783aef
|
@ -19,18 +19,17 @@ import { useClient } from 'urql';
|
||||||
import { FaSave } from 'react-icons/fa';
|
import { FaSave } from 'react-icons/fa';
|
||||||
import {
|
import {
|
||||||
ECDSAEncryptionType,
|
ECDSAEncryptionType,
|
||||||
envVarTypes,
|
|
||||||
HMACEncryptionType,
|
HMACEncryptionType,
|
||||||
RSAEncryptionType,
|
RSAEncryptionType,
|
||||||
SelectInputType,
|
SelectInputType,
|
||||||
TextAreaInputType,
|
TextAreaInputType,
|
||||||
} from '../constants';
|
} from '../constants';
|
||||||
import InputField from './InputField';
|
import InputField from './InputField';
|
||||||
|
import { GenerateKeys, UpdateEnvVariables } from '../graphql/mutation';
|
||||||
|
|
||||||
interface propTypes {
|
interface propTypes {
|
||||||
saveEnvHandler: Function;
|
jwtType: string;
|
||||||
variables: envVarTypes;
|
getData: Function;
|
||||||
setVariables: Function;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface stateVarTypes {
|
interface stateVarTypes {
|
||||||
|
@ -47,11 +46,7 @@ const initState: stateVarTypes = {
|
||||||
JWT_PUBLIC_KEY: '',
|
JWT_PUBLIC_KEY: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
const GenerateKeysModal = ({
|
const GenerateKeysModal = ({ jwtType, getData }: propTypes) => {
|
||||||
saveEnvHandler,
|
|
||||||
variables,
|
|
||||||
setVariables,
|
|
||||||
}: propTypes) => {
|
|
||||||
const client = useClient();
|
const client = useClient();
|
||||||
const toast = useToast();
|
const toast = useToast();
|
||||||
const { isOpen, onOpen, onClose } = useDisclosure();
|
const { isOpen, onOpen, onClose } = useDisclosure();
|
||||||
|
@ -60,17 +55,26 @@ const GenerateKeysModal = ({
|
||||||
});
|
});
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
setStateVariables({ ...initState, JWT_TYPE: variables.JWT_TYPE });
|
setStateVariables({ ...initState, JWT_TYPE: jwtType });
|
||||||
}
|
}
|
||||||
}, [isOpen]);
|
}, [isOpen]);
|
||||||
const setKeys = () => {
|
const fetchKeys = async () => {
|
||||||
// fetch keys from api
|
const res = await client
|
||||||
console.log('calling setKeys ==>> ', stateVariables.JWT_TYPE);
|
.mutation(GenerateKeys, { params: { type: stateVariables.JWT_TYPE } })
|
||||||
if (true) {
|
.toPromise();
|
||||||
if (Object.values(HMACEncryptionType).includes(stateVariables.JWT_TYPE)) {
|
if (res?.error) {
|
||||||
|
toast({
|
||||||
|
title: 'Error occurred generating jwt keys',
|
||||||
|
isClosable: true,
|
||||||
|
status: 'error',
|
||||||
|
position: 'bottom-right',
|
||||||
|
});
|
||||||
|
closeHandler();
|
||||||
|
} else {
|
||||||
|
if (res?.data?._generate_jwt_keys?.secret) {
|
||||||
setStateVariables({
|
setStateVariables({
|
||||||
...stateVariables,
|
...stateVariables,
|
||||||
JWT_SECRET: 'hello_world',
|
JWT_SECRET: res.data._generate_jwt_keys.secret,
|
||||||
JWT_PRIVATE_KEY: '',
|
JWT_PRIVATE_KEY: '',
|
||||||
JWT_PUBLIC_KEY: '',
|
JWT_PUBLIC_KEY: '',
|
||||||
});
|
});
|
||||||
|
@ -78,39 +82,45 @@ const GenerateKeysModal = ({
|
||||||
setStateVariables({
|
setStateVariables({
|
||||||
...stateVariables,
|
...stateVariables,
|
||||||
JWT_SECRET: '',
|
JWT_SECRET: '',
|
||||||
JWT_PRIVATE_KEY: 'test private key',
|
JWT_PRIVATE_KEY: res.data._generate_jwt_keys.private_key,
|
||||||
JWT_PUBLIC_KEY: 'test public key',
|
JWT_PUBLIC_KEY: res.data._generate_jwt_keys.public_key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (isOpen && stateVariables.JWT_TYPE) {
|
||||||
|
fetchKeys();
|
||||||
|
}
|
||||||
|
}, [stateVariables.JWT_TYPE]);
|
||||||
|
const saveHandler = async () => {
|
||||||
|
const res = await client
|
||||||
|
.mutation(UpdateEnvVariables, { params: { ...stateVariables } })
|
||||||
|
.toPromise();
|
||||||
|
|
||||||
|
if (res.error) {
|
||||||
toast({
|
toast({
|
||||||
title: 'New keys generated',
|
title: 'Error occurred setting jwt keys',
|
||||||
isClosable: true,
|
|
||||||
status: 'success',
|
|
||||||
position: 'bottom-right',
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
toast({
|
|
||||||
title: 'Error occurred generating keys',
|
|
||||||
isClosable: true,
|
isClosable: true,
|
||||||
status: 'error',
|
status: 'error',
|
||||||
position: 'bottom-right',
|
position: 'bottom-right',
|
||||||
});
|
});
|
||||||
closeHandler();
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
};
|
toast({
|
||||||
React.useEffect(() => {
|
title: 'JWT keys updated successfully',
|
||||||
if (isOpen) {
|
isClosable: true,
|
||||||
setKeys();
|
status: 'success',
|
||||||
}
|
position: 'bottom-right',
|
||||||
}, [stateVariables.JWT_TYPE]);
|
});
|
||||||
const saveHandler = async () => {
|
|
||||||
setVariables({ ...variables, ...stateVariables });
|
|
||||||
saveEnvHandler();
|
|
||||||
closeHandler();
|
closeHandler();
|
||||||
};
|
};
|
||||||
const closeHandler = async () => {
|
|
||||||
|
const closeHandler = () => {
|
||||||
setStateVariables({ ...initState });
|
setStateVariables({ ...initState });
|
||||||
onClose();
|
onClose();
|
||||||
|
getData();
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -149,10 +159,10 @@ const GenerateKeysModal = ({
|
||||||
stateVariables.JWT_TYPE
|
stateVariables.JWT_TYPE
|
||||||
) ? (
|
) ? (
|
||||||
<Flex marginTop="8">
|
<Flex marginTop="8">
|
||||||
<Flex w="30%" justifyContent="start" alignItems="center">
|
<Flex w="23%" justifyContent="start" alignItems="center">
|
||||||
<Text fontSize="sm">JWT Secret</Text>
|
<Text fontSize="sm">JWT Secret</Text>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Center w="70%">
|
<Center w="77%">
|
||||||
<Input
|
<Input
|
||||||
size="sm"
|
size="sm"
|
||||||
value={stateVariables.JWT_SECRET}
|
value={stateVariables.JWT_SECRET}
|
||||||
|
@ -168,10 +178,10 @@ const GenerateKeysModal = ({
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<Flex marginTop="8">
|
<Flex marginTop="8">
|
||||||
<Flex w="30%" justifyContent="start" alignItems="center">
|
<Flex w="23%" justifyContent="start" alignItems="center">
|
||||||
<Text fontSize="sm">Public Key</Text>
|
<Text fontSize="sm">Public Key</Text>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Center w="70%">
|
<Center w="77%">
|
||||||
<InputField
|
<InputField
|
||||||
variables={stateVariables}
|
variables={stateVariables}
|
||||||
setVariables={setStateVariables}
|
setVariables={setStateVariables}
|
||||||
|
@ -182,10 +192,10 @@ const GenerateKeysModal = ({
|
||||||
</Center>
|
</Center>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Flex marginTop="8">
|
<Flex marginTop="8">
|
||||||
<Flex w="30%" justifyContent="start" alignItems="center">
|
<Flex w="23%" justifyContent="start" alignItems="center">
|
||||||
<Text fontSize="sm">Private Key</Text>
|
<Text fontSize="sm">Private Key</Text>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Center w="70%">
|
<Center w="77%">
|
||||||
<InputField
|
<InputField
|
||||||
variables={stateVariables}
|
variables={stateVariables}
|
||||||
setVariables={setStateVariables}
|
setVariables={setStateVariables}
|
||||||
|
@ -202,7 +212,7 @@ const GenerateKeysModal = ({
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button
|
<Button
|
||||||
leftIcon={<FaSave />}
|
leftIcon={<FaSave />}
|
||||||
colorScheme="red"
|
colorScheme="blue"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
onClick={saveHandler}
|
onClick={saveHandler}
|
||||||
isDisabled={false}
|
isDisabled={false}
|
||||||
|
|
|
@ -69,3 +69,13 @@ export const EnableAccess = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
export const GenerateKeys = `
|
||||||
|
mutation generateKeys($params: GenerateJWTKeysInput!) {
|
||||||
|
_generate_jwt_keys(params: $params) {
|
||||||
|
secret
|
||||||
|
public_key
|
||||||
|
private_key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
|
@ -99,14 +99,10 @@ export default function Environment() {
|
||||||
OLD_ADMIN_SECRET: false,
|
OLD_ADMIN_SECRET: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
let isMounted = true;
|
|
||||||
async function getData() {
|
async function getData() {
|
||||||
const {
|
const {
|
||||||
data: { _env: envData },
|
data: { _env: envData },
|
||||||
} = await client.query(EnvVariablesQuery).toPromise();
|
} = await client.query(EnvVariablesQuery).toPromise();
|
||||||
|
|
||||||
if (isMounted) {
|
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
setEnvVariables({
|
setEnvVariables({
|
||||||
...envData,
|
...envData,
|
||||||
|
@ -118,13 +114,9 @@ export default function Environment() {
|
||||||
disableInputField: true,
|
disableInputField: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
getData();
|
getData();
|
||||||
|
|
||||||
return () => {
|
|
||||||
isMounted = false;
|
|
||||||
};
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const validateAdminSecretHandler = (event: any) => {
|
const validateAdminSecretHandler = (event: any) => {
|
||||||
|
@ -386,9 +378,8 @@ export default function Environment() {
|
||||||
</Text>
|
</Text>
|
||||||
<Flex>
|
<Flex>
|
||||||
<GenerateKeysModal
|
<GenerateKeysModal
|
||||||
variables={envVariables}
|
jwtType={envVariables.JWT_TYPE}
|
||||||
setVariables={setEnvVariables}
|
getData={getData}
|
||||||
saveEnvHandler={saveHandler}
|
|
||||||
/>
|
/>
|
||||||
</Flex>
|
</Flex>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user