[ARVADOS-WORKBENCH2] created: 1.1.4-359-g823ac86
Git user
git at public.curoverse.com
Tue Jul 24 06:18:44 EDT 2018
at 823ac8656c70068c6cd59bb96ec8b6d6201076d9 (commit)
commit 823ac8656c70068c6cd59bb96ec8b6d6201076d9
Author: Janicki Artur <artur.janicki at contractors.roche.com>
Date: Tue Jul 24 12:18:21 2018 +0200
add current token modal and modify workbench
Feature #13786
Arvados-DCO-1.1-Signed-off-by: Janicki Artur <artur.janicki at contractors.roche.com>
diff --git a/src/views-components/current-token-dialog/current-token-dialog.tsx b/src/views-components/current-token-dialog/current-token-dialog.tsx
new file mode 100644
index 0000000..fe5f850
--- /dev/null
+++ b/src/views-components/current-token-dialog/current-token-dialog.tsx
@@ -0,0 +1,90 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from 'react';
+import { Dialog, DialogActions, DialogTitle, DialogContent, WithStyles, withStyles, StyleRulesCallback, Button, Typography, Paper } from '@material-ui/core';
+import { ArvadosTheme } from '../../common/custom-theme';
+
+type CssRules = 'link' | 'paper' | 'button';
+
+const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
+ link: {
+ color: theme.palette.primary.main,
+ textDecoration: 'none',
+ margin: '0px 4px'
+ },
+ paper: {
+ padding: theme.spacing.unit,
+ marginBottom: theme.spacing.unit * 2,
+ backgroundColor: theme.palette.grey["200"],
+ border: `1px solid ${theme.palette.grey["300"]}`
+ },
+ button: {
+ fontSize: '0.8125rem',
+ fontWeight: 600
+ }
+});
+
+interface CurrentTokenDataProps {
+ currentToken?: string;
+ open: boolean;
+}
+
+interface CurrentTokenActionProps {
+ handleClose: () => void;
+}
+
+type CurrentTokenProps = CurrentTokenDataProps & CurrentTokenActionProps & WithStyles<CssRules>;
+
+export const CurrentTokenDialog = withStyles(styles)(
+ class extends React.Component<CurrentTokenProps> {
+
+ render() {
+ const { classes, open, handleClose, currentToken } = this.props;
+ return (
+ <Dialog open={open} onClose={handleClose} fullWidth={true} maxWidth='md'>
+ <DialogTitle>Current Token</DialogTitle>
+ <DialogContent>
+ <Typography variant='body1' paragraph={true}>
+ The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados with the proper permissions.
+ <Typography component='p'>
+ For more information see
+ <a href='http://doc.arvados.org/user/reference/api-tokens.html' target='blank' className={classes.link}>
+ Getting an API token.
+ </a>
+ </Typography>
+ </Typography>
+
+ <Typography variant='body1' paragraph={true}>
+ Paste the following lines at a shell prompt to set up the necessary environment for Arvados SDKs to authenticate to your klingenc account.
+ </Typography>
+
+ <Paper className={classes.paper} elevation={0}>
+ <Typography variant='body1'>
+ HISTIGNORE=$HISTIGNORE:'export ARVADOS_API_TOKEN=*'
+ </Typography>
+ <Typography variant='body1'>
+ export ARVADOS_API_TOKEN={currentToken}
+ </Typography>
+ <Typography variant='body1'>
+ export ARVADOS_API_HOST=api.ardev.roche.com
+ </Typography>
+ <Typography variant='body1'>
+ unset ARVADOS_API_HOST_INSECURE
+ </Typography>
+ </Paper>
+ <Typography variant='body1'>
+ Arvados
+ <a href='http://doc.arvados.org/user/reference/api-tokens.html' target='blank' className={classes.link}>virtual machines</a>
+ do this for you automatically. This setup is needed only when you use the API remotely (e.g., from your own workstation).
+ </Typography>
+ </DialogContent>
+ <DialogActions>
+ <Button onClick={handleClose} className={classes.button} color="primary">CLOSE</Button>
+ </DialogActions>
+ </Dialog>
+ );
+ }
+ }
+);
\ No newline at end of file
diff --git a/src/views/workbench/workbench.tsx b/src/views/workbench/workbench.tsx
index a62b713..74ab8ff 100644
--- a/src/views/workbench/workbench.tsx
+++ b/src/views/workbench/workbench.tsx
@@ -32,6 +32,7 @@ import { SidePanelIdentifiers } from '../../store/side-panel/side-panel-reducer'
import { ProjectResource } from '../../models/project';
import { ResourceKind } from '../../models/resource';
import { ContextMenu, ContextMenuKind } from "../../views-components/context-menu/context-menu";
+import { CurrentTokenDialog } from '../../views-components/current-token-dialog/current-token-dialog';
const drawerWidth = 240;
const appBarHeight = 100;
@@ -78,6 +79,7 @@ interface WorkbenchDataProps {
projects: Array<TreeItem<ProjectResource>>;
currentProjectId: string;
user?: User;
+ currentToken?: string;
sidePanelItems: SidePanelItem[];
}
@@ -95,6 +97,7 @@ interface NavMenuItem extends MainAppBarMenuItem {
}
interface WorkbenchState {
+ isCurrentTokenDialogOpen: boolean;
anchorEl: any;
searchText: string;
menuItems: {
@@ -110,18 +113,24 @@ export const Workbench = withStyles(styles)(
projects: state.projects.items,
currentProjectId: state.projects.currentItemId,
user: state.auth.user,
+ currentToken: state.auth.apiToken,
sidePanelItems: state.sidePanel
})
)(
class extends React.Component<WorkbenchProps, WorkbenchState> {
state = {
isCreationDialogOpen: false,
+ isCurrentTokenDialogOpen: false,
anchorEl: null,
searchText: "",
breadcrumbs: [],
menuItems: {
accountMenu: [
{
+ label: 'Current token',
+ action: () => this.toggleCurrentTokenModal()
+ },
+ {
label: "Logout",
action: () => this.props.dispatch(authActions.LOGOUT())
},
@@ -197,6 +206,10 @@ export const Workbench = withStyles(styles)(
</main>
<ContextMenu />
<CreateProjectDialog />
+ <CurrentTokenDialog
+ currentToken={this.props.currentToken}
+ open={this.state.isCurrentTokenDialogOpen}
+ handleClose={this.toggleCurrentTokenModal} />
</div>
);
}
@@ -255,6 +268,10 @@ export const Workbench = withStyles(styles)(
})
);
}
+
+ toggleCurrentTokenModal = () => {
+ this.setState({ isCurrentTokenDialogOpen: !this.state.isCurrentTokenDialogOpen });
+ }
}
)
);
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list