X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/db2c87fbe29eed8c4bfca47a97c97cee77959d58..49f27beea17ab1ef448f3c485dcdf9bea0a740b9:/src/store/users/users-actions.ts diff --git a/src/store/users/users-actions.ts b/src/store/users/users-actions.ts index 71fd107b..44b2bad6 100644 --- a/src/store/users/users-actions.ts +++ b/src/store/users/users-actions.ts @@ -11,8 +11,8 @@ import { startSubmit, reset } from "redux-form"; 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 { navigateTo, navigateToUsers, navigateToRootProject } from "~/store/navigation/navigation-action"; +import { saveApiToken } from '~/store/auth/auth-action'; export const USERS_PANEL_ID = 'usersPanel'; export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog'; @@ -36,9 +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(uuid)(resources); - const clients = await services.apiClientAuthorizationService.list(); - dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGEMENT_DIALOG, data: { user, ...clients } })); + const data = getResource(uuid)(resources); + dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGEMENT_DIALOG, data })); }; export const openSetupShellAccount = (uuid: string) => @@ -52,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 = () => @@ -71,7 +73,7 @@ export const openUserCreateDialog = () => export const openUserProjects = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - dispatch(navigateToProject(uuid)); + dispatch(navigateTo(uuid)); }; @@ -107,7 +109,7 @@ export const toggleIsActive = (uuid: string) => const { resources } = getState(); const data = getResource(uuid)(resources); const isActive = data!.isActive; - const newActivity = await services.userService.update(uuid, { ...data, isActive: !isActive }); + const newActivity = await services.userService.update(uuid, { isActive: !isActive }); dispatch(loadUsersPanel()); return newActivity; }; @@ -117,7 +119,7 @@ export const toggleIsAdmin = (uuid: string) => const { resources } = getState(); const data = getResource(uuid)(resources); const isAdmin = data!.isAdmin; - const newActivity = await services.userService.update(uuid, { ...data, isAdmin: !isAdmin }); + const newActivity = await services.userService.update(uuid, { isAdmin: !isAdmin }); dispatch(loadUsersPanel()); return newActivity; }; @@ -133,4 +135,3 @@ export const loadUsersPanel = () => (dispatch: Dispatch) => { dispatch(userBindedActions.REQUEST_ITEMS()); }; - \ No newline at end of file