[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