X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/154991e8c07361906eab8a1fdefa00858bbc6818..f35559bdd3569d836d084524ff64ed050e3c926e:/src/store/users/users-actions.ts diff --git a/src/store/users/users-actions.ts b/src/store/users/users-actions.ts index 9b721e60a4..caf466f7ed 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,13 +51,15 @@ export const openSetupShellAccount = (uuid: string) => export const loginAs = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const clients = await services.apiClientAuthorizationService.list(); - const client = clients.items.find(it => it.uuid === 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 = () =>