X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/6b5e94cfb15a88d33aba5e7c192cfbe6aec9ac8d..b2fcdb2fac8ba49fecca5c30fc56e63b71746cf3:/src/views-components/token-dialog/token-dialog.tsx diff --git a/src/views-components/token-dialog/token-dialog.tsx b/src/views-components/token-dialog/token-dialog.tsx index ba3d1942..b9d195f5 100644 --- a/src/views-components/token-dialog/token-dialog.tsx +++ b/src/views-components/token-dialog/token-dialog.tsx @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; +import React from 'react'; import { Dialog, DialogActions, @@ -14,21 +14,23 @@ import { Button, Typography } from '@material-ui/core'; -import * as CopyToClipboard from 'react-copy-to-clipboard'; -import { ArvadosTheme } from '~/common/custom-theme'; -import { withDialog } from '~/store/dialog/with-dialog'; -import { WithDialogProps } from '~/store/dialog/with-dialog'; +import CopyToClipboard from 'react-copy-to-clipboard'; +import { ArvadosTheme } from 'common/custom-theme'; +import { withDialog } from 'store/dialog/with-dialog'; +import { WithDialogProps } from 'store/dialog/with-dialog'; import { connect, DispatchProp } from 'react-redux'; import { TokenDialogData, getTokenDialogData, TOKEN_DIALOG_NAME, -} from '~/store/token-dialog/token-dialog-actions'; -import { DefaultCodeSnippet } from '~/components/default-code-snippet/default-code-snippet'; -import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { getNewExtraToken } from '~/store/auth/auth-action'; +} from 'store/token-dialog/token-dialog-actions'; +import { DefaultCodeSnippet } from 'components/default-code-snippet/default-code-snippet'; +import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; +import { getNewExtraToken } from 'store/auth/auth-action'; +import { DetailsAttributeComponent } from 'components/details-attribute/details-attribute'; +import moment from 'moment'; -type CssRules = 'link' | 'paper' | 'button' | 'actionButton'; +type CssRules = 'link' | 'paper' | 'button' | 'actionButton' | 'codeBlock'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ link: { @@ -51,7 +53,10 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ marginTop: theme.spacing.unit * 2, marginBottom: theme.spacing.unit * 2, marginRight: theme.spacing.unit * 2, - } + }, + codeBlock: { + fontSize: '0.8125rem', + }, }); type TokenDialogProps = TokenDialogData & WithDialogProps<{}> & WithStyles & DispatchProp; @@ -90,6 +95,9 @@ unset ARVADOS_API_HOST_INSECURE` render() { const { classes, open, closeDialog, ...data } = this.props; + const tokenExpiration = data.tokenExpiration + ? `${data.tokenExpiration.toLocaleString()} (${moment(data.tokenExpiration).fromNow()})` + : `This token does not have an expiration date`; return The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados with the proper permissions. - - For more information see - - Getting an API token. - - + + For more information see + + Getting an API token. + + + + + + + { this.props.canCreateNewTokens && } + Paste the following lines at a shell prompt to set up the necessary environment for Arvados SDKs to authenticate to your account. - - - { data.tokenExpiration - ? `Expires at: ${data.tokenExpiration.toLocaleString()}` - : `This token does not have an expiration date` - } - - this.onCopy('Token copied to clipboard')}> + + this.onCopy('Shell code block copied')}> } - + Arvados virtual machines do this for you automatically. This setup is needed only when you use the API remotely (e.g., from your own workstation).