refs #14565-login-as-other-user
authorPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 3 Jan 2019 09:25:16 +0000 (10:25 +0100)
committerPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 3 Jan 2019 09:25:16 +0000 (10:25 +0100)
Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>

src/store/users/users-actions.ts
src/views-components/user-dialog/manage-dialog.tsx

index 42406858623aa9f0f99dde829ae4fca1d99b6948..7ea927de3e5a4637a68f59f5b6fb7e2fcec5e4a2 100644 (file)
@@ -36,11 +36,8 @@ export const openUserAttributes = (uuid: string) =>
 export const openUserManagement = (uuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         const { resources } = getState();
-        const user = getResource<UserResource>(uuid)(resources);
-        const clients = await services.apiClientAuthorizationService.list();
-        const client = clients.items.find(it => it.ownerUuid === uuid);
-        console.log(client);
-        dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGEMENT_DIALOG, data: { user, client } }));
+        const data = getResource<UserResource>(uuid)(resources);
+        dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGEMENT_DIALOG, data }));
     };
 
 export const openSetupShellAccount = (uuid: string) =>
@@ -54,7 +51,7 @@ export const openSetupShellAccount = (uuid: string) =>
 
 export const loginAs = (uuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        const client = await services.apiClientAuthorizationService.get(uuid);
+        const client = await services.apiClientAuthorizationService.create({ ownerUuid: uuid });
         dispatch<any>(saveApiToken(client.apiToken));
         dispatch<any>(getUserDetails()).then(() => {
             location.reload();
index 12c5d2b6c820978fad5e171cd9452badf603b4b6..05e4a3fc091b5d71943f42adaa6da3e9110f05e9 100644 (file)
@@ -10,7 +10,6 @@ import { WithStyles, withStyles } from '@material-ui/core/styles';
 import { ArvadosTheme } from '~/common/custom-theme';
 import { compose, Dispatch } from "redux";
 import { USER_MANAGEMENT_DIALOG, openSetupShellAccount, loginAs } from "~/store/users/users-actions";
-import { UserResource } from "~/models/user";
 import { connect } from "react-redux";
 
 type CssRules = 'spacing';
@@ -47,21 +46,21 @@ export const UserManageDialog = compose(
                 onClose={props.closeDialog}
                 fullWidth
                 maxWidth="md">
-                {props.data.user &&
+                {props.data &&
                     <span>
-                        <DialogTitle>{`Manage - ${props.data.user.firstName} ${props.data.user.lastName}`}</DialogTitle>
+                        <DialogTitle>{`Manage - ${props.data.firstName} ${props.data.lastName}`}</DialogTitle>
                         <DialogContent>
                             <Typography variant='body1' className={props.classes.spacing}>
                                 As an admin, you can log in as this user. When you’ve finished, you will need to log out and log in again with your own account.
                     </Typography>
-                            <Button variant="contained" color="primary" onClick={() => props.loginAs(props.data.client.uuid)}>
-                                {`LOG IN AS ${props.data.user.firstName} ${props.data.user.lastName}`}
+                            <Button variant="contained" color="primary" onClick={() => props.loginAs(props.data.uuid)}>
+                                {`LOG IN AS ${props.data.firstName} ${props.data.lastName}`}
                             </Button>
                             <Typography variant='body1' className={props.classes.spacing}>
                                 As an admin, you can setup a shell account for this user. The login name is automatically generated from the user's e-mail address.
                     </Typography>
                             <Button variant="contained" color="primary" onClick={() => props.openSetupShellAccount(props.data.uuid)}>
-                                {`SETUP SHELL ACCOUNT FOR ${props.data.user.firstName} ${props.data.user.lastName}`}
+                                {`SETUP SHELL ACCOUNT FOR ${props.data.firstName} ${props.data.lastName}`}
                             </Button>
                         </DialogContent></span>}