feat: dashboard - add actions to update is_multi_factor_auth_enabled

This commit is contained in:
anik-ghosh-au7 2022-07-27 12:18:32 +05:30
parent ef22318d5c
commit 9fae8215d2
5 changed files with 63 additions and 6 deletions

View File

@ -108,7 +108,7 @@ const OAuthConfig = ({
fieldVisibility={fieldVisibility} fieldVisibility={fieldVisibility}
setFieldVisibility={setFieldVisibility} setFieldVisibility={setFieldVisibility}
inputType={HiddenInputType.GOOGLE_CLIENT_SECRET} inputType={HiddenInputType.GOOGLE_CLIENT_SECRET}
placeholder="Google Secret" placeholder="Google Client Secret"
/> />
</Center> </Center>
</Flex> </Flex>
@ -146,7 +146,7 @@ const OAuthConfig = ({
fieldVisibility={fieldVisibility} fieldVisibility={fieldVisibility}
setFieldVisibility={setFieldVisibility} setFieldVisibility={setFieldVisibility}
inputType={HiddenInputType.GITHUB_CLIENT_SECRET} inputType={HiddenInputType.GITHUB_CLIENT_SECRET}
placeholder="Github Secret" placeholder="Github Client Secret"
/> />
</Center> </Center>
</Flex> </Flex>
@ -184,7 +184,7 @@ const OAuthConfig = ({
fieldVisibility={fieldVisibility} fieldVisibility={fieldVisibility}
setFieldVisibility={setFieldVisibility} setFieldVisibility={setFieldVisibility}
inputType={HiddenInputType.FACEBOOK_CLIENT_SECRET} inputType={HiddenInputType.FACEBOOK_CLIENT_SECRET}
placeholder="Facebook Secret" placeholder="Facebook Client Secret"
/> />
</Center> </Center>
</Flex> </Flex>
@ -260,7 +260,7 @@ const OAuthConfig = ({
fieldVisibility={fieldVisibility} fieldVisibility={fieldVisibility}
setFieldVisibility={setFieldVisibility} setFieldVisibility={setFieldVisibility}
inputType={HiddenInputType.APPLE_CLIENT_SECRET} inputType={HiddenInputType.APPLE_CLIENT_SECRET}
placeholder="Apple CLient Secret" placeholder="Apple Client Secret"
/> />
</Center> </Center>
</Flex> </Flex>

View File

@ -89,6 +89,7 @@ export const UserDetailsQuery = `
roles roles
created_at created_at
revoked_timestamp revoked_timestamp
is_multi_factor_auth_enabled
} }
} }
} }

View File

@ -68,6 +68,7 @@ interface userDataTypes {
roles: [string]; roles: [string];
created_at: number; created_at: number;
revoked_timestamp: number; revoked_timestamp: number;
is_multi_factor_auth_enabled?: boolean;
} }
const enum updateAccessActions { const enum updateAccessActions {
@ -250,6 +251,34 @@ export default function Users() {
break; break;
} }
}; };
const multiFactorAuthUpdateHandler = async (user: userDataTypes) => {
const res = await client
.mutation(UpdateUser, {
params: {
id: user.id,
is_multi_factor_auth_enabled: !user.is_multi_factor_auth_enabled,
},
})
.toPromise();
if (res.data?._update_user?.id) {
toast({
title: `Multi factor authentication ${
user.is_multi_factor_auth_enabled ? 'disabled' : 'enabled'
} for user`,
isClosable: true,
status: 'success',
position: 'bottom-right',
});
updateUserList();
return;
}
toast({
title: 'Multi factor authentication update failed for user',
isClosable: true,
status: 'error',
position: 'bottom-right',
});
};
return ( return (
<Box m="5" py="5" px="10" bg="white" rounded="md"> <Box m="5" py="5" px="10" bg="white" rounded="md">
@ -273,6 +302,7 @@ export default function Users() {
<Th>Roles</Th> <Th>Roles</Th>
<Th>Verified</Th> <Th>Verified</Th>
<Th>Access</Th> <Th>Access</Th>
<Th>MFA</Th>
<Th>Actions</Th> <Th>Actions</Th>
</Tr> </Tr>
</Thead> </Thead>
@ -305,6 +335,19 @@ export default function Users() {
{user.revoked_timestamp ? 'Revoked' : 'Enabled'} {user.revoked_timestamp ? 'Revoked' : 'Enabled'}
</Tag> </Tag>
</Td> </Td>
<Td>
<Tag
size="sm"
variant="outline"
colorScheme={
user.is_multi_factor_auth_enabled ? 'green' : 'red'
}
>
{user.is_multi_factor_auth_enabled
? 'Enabled'
: 'Disabled'}
</Tag>
</Td>
<Td> <Td>
<Menu> <Menu>
<MenuButton as={Button} variant="unstyled" size="sm"> <MenuButton as={Button} variant="unstyled" size="sm">
@ -357,6 +400,19 @@ export default function Users() {
Revoke Access Revoke Access
</MenuItem> </MenuItem>
)} )}
{user.is_multi_factor_auth_enabled ? (
<MenuItem
onClick={() => multiFactorAuthUpdateHandler(user)}
>
Disable MFA
</MenuItem>
) : (
<MenuItem
onClick={() => multiFactorAuthUpdateHandler(user)}
>
Enable MFA
</MenuItem>
)}
</MenuList> </MenuList>
</Menu> </Menu>
</Td> </Td>

View File

@ -46,7 +46,7 @@ func UpdateProfileResolver(ctx context.Context, params model.UpdateProfileInput)
} }
// validate if all params are not empty // validate if all params are not empty
if params.GivenName == nil && params.FamilyName == nil && params.Picture == nil && params.MiddleName == nil && params.Nickname == nil && params.OldPassword == nil && params.Email == nil && params.Birthdate == nil && params.Gender == nil && params.PhoneNumber == nil && params.NewPassword == nil && params.ConfirmNewPassword == nil { if params.GivenName == nil && params.FamilyName == nil && params.Picture == nil && params.MiddleName == nil && params.Nickname == nil && params.OldPassword == nil && params.Email == nil && params.Birthdate == nil && params.Gender == nil && params.PhoneNumber == nil && params.NewPassword == nil && params.ConfirmNewPassword == nil && params.IsMultiFactorAuthEnabled == nil {
log.Debug("All params are empty") log.Debug("All params are empty")
return res, fmt.Errorf("please enter at least one param to update") return res, fmt.Errorf("please enter at least one param to update")
} }

View File

@ -46,7 +46,7 @@ func UpdateUserResolver(ctx context.Context, params model.UpdateUserInput) (*mod
"user_id": params.ID, "user_id": params.ID,
}) })
if params.GivenName == nil && params.FamilyName == nil && params.Picture == nil && params.MiddleName == nil && params.Nickname == nil && params.Email == nil && params.Birthdate == nil && params.Gender == nil && params.PhoneNumber == nil && params.Roles == nil { if params.GivenName == nil && params.FamilyName == nil && params.Picture == nil && params.MiddleName == nil && params.Nickname == nil && params.Email == nil && params.Birthdate == nil && params.Gender == nil && params.PhoneNumber == nil && params.Roles == nil && params.IsMultiFactorAuthEnabled == nil {
log.Debug("No params to update") log.Debug("No params to update")
return res, fmt.Errorf("please enter atleast one param to update") return res, fmt.Errorf("please enter atleast one param to update")
} }