Skip to content

Commit a3d9783

Browse files
mutation to update jwt vars added
1 parent 7d77396 commit a3d9783

File tree

3 files changed

+82
-71
lines changed

3 files changed

+82
-71
lines changed

dashboard/src/components/GenerateKeysModal.tsx

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,17 @@ import { useClient } from 'urql';
1919
import { FaSave } from 'react-icons/fa';
2020
import {
2121
ECDSAEncryptionType,
22-
envVarTypes,
2322
HMACEncryptionType,
2423
RSAEncryptionType,
2524
SelectInputType,
2625
TextAreaInputType,
2726
} from '../constants';
2827
import InputField from './InputField';
28+
import { GenerateKeys, UpdateEnvVariables } from '../graphql/mutation';
2929

3030
interface propTypes {
31-
saveEnvHandler: Function;
32-
variables: envVarTypes;
33-
setVariables: Function;
31+
jwtType: string;
32+
getData: Function;
3433
}
3534

3635
interface stateVarTypes {
@@ -47,11 +46,7 @@ const initState: stateVarTypes = {
4746
JWT_PUBLIC_KEY: '',
4847
};
4948

50-
const GenerateKeysModal = ({
51-
saveEnvHandler,
52-
variables,
53-
setVariables,
54-
}: propTypes) => {
49+
const GenerateKeysModal = ({ jwtType, getData }: propTypes) => {
5550
const client = useClient();
5651
const toast = useToast();
5752
const { isOpen, onOpen, onClose } = useDisclosure();
@@ -60,57 +55,72 @@ const GenerateKeysModal = ({
6055
});
6156
React.useEffect(() => {
6257
if (isOpen) {
63-
setStateVariables({ ...initState, JWT_TYPE: variables.JWT_TYPE });
58+
setStateVariables({ ...initState, JWT_TYPE: jwtType });
6459
}
6560
}, [isOpen]);
66-
const setKeys = () => {
67-
// fetch keys from api
68-
console.log('calling setKeys ==>> ', stateVariables.JWT_TYPE);
69-
if (true) {
70-
if (Object.values(HMACEncryptionType).includes(stateVariables.JWT_TYPE)) {
61+
const fetchKeys = async () => {
62+
const res = await client
63+
.mutation(GenerateKeys, { params: { type: stateVariables.JWT_TYPE } })
64+
.toPromise();
65+
if (res?.error) {
66+
toast({
67+
title: 'Error occurred generating jwt keys',
68+
isClosable: true,
69+
status: 'error',
70+
position: 'bottom-right',
71+
});
72+
closeHandler();
73+
} else {
74+
if (res?.data?._generate_jwt_keys?.secret) {
7175
setStateVariables({
7276
...stateVariables,
73-
JWT_SECRET: 'hello_world',
77+
JWT_SECRET: res.data._generate_jwt_keys.secret,
7478
JWT_PRIVATE_KEY: '',
7579
JWT_PUBLIC_KEY: '',
7680
});
7781
} else {
7882
setStateVariables({
7983
...stateVariables,
8084
JWT_SECRET: '',
81-
JWT_PRIVATE_KEY: 'test private key',
82-
JWT_PUBLIC_KEY: 'test public key',
85+
JWT_PRIVATE_KEY: res.data._generate_jwt_keys.private_key,
86+
JWT_PUBLIC_KEY: res.data._generate_jwt_keys.public_key,
8387
});
8488
}
85-
toast({
86-
title: 'New keys generated',
87-
isClosable: true,
88-
status: 'success',
89-
position: 'bottom-right',
90-
});
91-
} else {
92-
toast({
93-
title: 'Error occurred generating keys',
94-
isClosable: true,
95-
status: 'error',
96-
position: 'bottom-right',
97-
});
98-
closeHandler();
9989
}
10090
};
10191
React.useEffect(() => {
102-
if (isOpen) {
103-
setKeys();
92+
if (isOpen && stateVariables.JWT_TYPE) {
93+
fetchKeys();
10494
}
10595
}, [stateVariables.JWT_TYPE]);
10696
const saveHandler = async () => {
107-
setVariables({ ...variables, ...stateVariables });
108-
saveEnvHandler();
97+
const res = await client
98+
.mutation(UpdateEnvVariables, { params: { ...stateVariables } })
99+
.toPromise();
100+
101+
if (res.error) {
102+
toast({
103+
title: 'Error occurred setting jwt keys',
104+
isClosable: true,
105+
status: 'error',
106+
position: 'bottom-right',
107+
});
108+
109+
return;
110+
}
111+
toast({
112+
title: 'JWT keys updated successfully',
113+
isClosable: true,
114+
status: 'success',
115+
position: 'bottom-right',
116+
});
109117
closeHandler();
110118
};
111-
const closeHandler = async () => {
119+
120+
const closeHandler = () => {
112121
setStateVariables({ ...initState });
113122
onClose();
123+
getData();
114124
};
115125
return (
116126
<>
@@ -149,10 +159,10 @@ const GenerateKeysModal = ({
149159
stateVariables.JWT_TYPE
150160
) ? (
151161
<Flex marginTop="8">
152-
<Flex w="30%" justifyContent="start" alignItems="center">
162+
<Flex w="23%" justifyContent="start" alignItems="center">
153163
<Text fontSize="sm">JWT Secret</Text>
154164
</Flex>
155-
<Center w="70%">
165+
<Center w="77%">
156166
<Input
157167
size="sm"
158168
value={stateVariables.JWT_SECRET}
@@ -168,10 +178,10 @@ const GenerateKeysModal = ({
168178
) : (
169179
<>
170180
<Flex marginTop="8">
171-
<Flex w="30%" justifyContent="start" alignItems="center">
181+
<Flex w="23%" justifyContent="start" alignItems="center">
172182
<Text fontSize="sm">Public Key</Text>
173183
</Flex>
174-
<Center w="70%">
184+
<Center w="77%">
175185
<InputField
176186
variables={stateVariables}
177187
setVariables={setStateVariables}
@@ -182,10 +192,10 @@ const GenerateKeysModal = ({
182192
</Center>
183193
</Flex>
184194
<Flex marginTop="8">
185-
<Flex w="30%" justifyContent="start" alignItems="center">
195+
<Flex w="23%" justifyContent="start" alignItems="center">
186196
<Text fontSize="sm">Private Key</Text>
187197
</Flex>
188-
<Center w="70%">
198+
<Center w="77%">
189199
<InputField
190200
variables={stateVariables}
191201
setVariables={setStateVariables}
@@ -202,7 +212,7 @@ const GenerateKeysModal = ({
202212
<ModalFooter>
203213
<Button
204214
leftIcon={<FaSave />}
205-
colorScheme="red"
215+
colorScheme="blue"
206216
variant="solid"
207217
onClick={saveHandler}
208218
isDisabled={false}

dashboard/src/graphql/mutation/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,13 @@ export const EnableAccess = `
6969
}
7070
}
7171
`;
72+
73+
export const GenerateKeys = `
74+
mutation generateKeys($params: GenerateJWTKeysInput!) {
75+
_generate_jwt_keys(params: $params) {
76+
secret
77+
public_key
78+
private_key
79+
}
80+
}
81+
`;

dashboard/src/pages/Environment.tsx

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -99,32 +99,24 @@ export default function Environment() {
9999
OLD_ADMIN_SECRET: false,
100100
});
101101

102-
useEffect(() => {
103-
let isMounted = true;
104-
async function getData() {
105-
const {
106-
data: { _env: envData },
107-
} = await client.query(EnvVariablesQuery).toPromise();
108-
109-
if (isMounted) {
110-
setLoading(false);
111-
setEnvVariables({
112-
...envData,
113-
OLD_ADMIN_SECRET: envData.ADMIN_SECRET,
114-
ADMIN_SECRET: '',
115-
});
116-
setAdminSecret({
117-
value: '',
118-
disableInputField: true,
119-
});
120-
}
121-
}
102+
async function getData() {
103+
const {
104+
data: { _env: envData },
105+
} = await client.query(EnvVariablesQuery).toPromise();
106+
setLoading(false);
107+
setEnvVariables({
108+
...envData,
109+
OLD_ADMIN_SECRET: envData.ADMIN_SECRET,
110+
ADMIN_SECRET: '',
111+
});
112+
setAdminSecret({
113+
value: '',
114+
disableInputField: true,
115+
});
116+
}
122117

118+
useEffect(() => {
123119
getData();
124-
125-
return () => {
126-
isMounted = false;
127-
};
128120
}, []);
129121

130122
const validateAdminSecretHandler = (event: any) => {
@@ -386,9 +378,8 @@ export default function Environment() {
386378
</Text>
387379
<Flex>
388380
<GenerateKeysModal
389-
variables={envVariables}
390-
setVariables={setEnvVariables}
391-
saveEnvHandler={saveHandler}
381+
jwtType={envVariables.JWT_TYPE}
382+
getData={getData}
392383
/>
393384
</Flex>
394385
</Flex>

0 commit comments

Comments
 (0)