X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/78224728bc808a560718e934ef124afa77b81834..4b961d16b8f8ef8afbd13697a79fe4684acd0416:/src/store/users/users-actions.ts diff --git a/src/store/users/users-actions.ts b/src/store/users/users-actions.ts index c1bad88b..caf466f7 100644 --- a/src/store/users/users-actions.ts +++ b/src/store/users/users-actions.ts @@ -12,7 +12,7 @@ import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions import { UserResource } from "~/models/user"; import { getResource } from '~/store/resources/resources'; import { navigateToProject, navigateToUsers, navigateToRootProject } from "~/store/navigation/navigation-action"; -import { saveApiToken, getUserDetails } from '~/store/auth/auth-action'; +import { saveApiToken } from '~/store/auth/auth-action'; export const USERS_PANEL_ID = 'usersPanel'; export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog'; @@ -34,7 +34,7 @@ export const openUserAttributes = (uuid: string) => }; export const openUserManagement = (uuid: string) => - (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const { resources } = getState(); const data = getResource(uuid)(resources); dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGEMENT_DIALOG, data })); @@ -51,12 +51,15 @@ export const openSetupShellAccount = (uuid: string) => export const loginAs = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const client = await services.apiClientAuthorizationService.get(uuid); - dispatch(saveApiToken(client.apiToken)); - dispatch(getUserDetails()).then(() => { - location.reload(); - dispatch(navigateToRootProject); - }); + const { resources } = getState(); + const data = getResource(uuid)(resources); + if (data) { + services.authService.saveUser(data); + } + const client = await services.apiClientAuthorizationService.create({ ownerUuid: uuid }); + dispatch(saveApiToken(`v2/${client.uuid}/${client.apiToken}`)); + location.reload(); + dispatch(navigateToRootProject); }; export const openUserCreateDialog = () =>