+export const setupUserVM = (setupData: AddLoginFormData) =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(startSubmit(SETUP_SHELL_ACCOUNT_DIALOG));
+ try {
+ const userResource = await services.userService.get(setupData.user.uuid);
+
+ const resources = await services.userService.setup(setupData.user.uuid);
+ dispatch(updateResources(resources.items));
+
+ const permission = await services.permissionService.create({
+ headUuid: setupData.vmUuid,
+ tailUuid: userResource.uuid,
+ name: PermissionLevel.CAN_LOGIN,
+ properties: {
+ username: userResource.username,
+ groups: setupData.groups,
+ }
+ });
+ dispatch(updateResources([permission]));
+
+ dispatch(dialogActions.CLOSE_DIALOG({ id: SETUP_SHELL_ACCOUNT_DIALOG }));
+ dispatch(reset(SETUP_SHELL_ACCOUNT_DIALOG));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "User has been added to VM.", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
+ } catch (e) {
+ dispatch(stopSubmit(SETUP_SHELL_ACCOUNT_DIALOG));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000, kind: SnackbarKind.ERROR }));
+ }
+ };
+