import { Dispatch } from "redux";
import { setBreadcrumbs } from "~/store/breadcrumbs/breadcrumbs-actions";
import { RootState } from "~/store/store";
-import { ServiceRepository } from "~/services/services";
+import { ServiceRepository, createServices, setAuthorizationHeader } from "~/services/services";
import Axios from "axios";
import { getUserFullname, User } from "~/models/user";
import { authActions } from "~/store/auth/auth-action";
import { normalizeURLPath } from "~/common/url";
import { Session, SessionStatus } from "~/models/session";
import { progressIndicatorActions } from "~/store/progress-indicator/progress-indicator-actions";
-import { AuthService, UserDetailsResponse } from "~/services/auth-service/auth-service";
+import { AuthService } from "~/services/auth-service/auth-service";
import { snackbarActions, SnackbarKind } from "~/store/snackbar/snackbar-actions";
import * as jsSHA from "jssha";
return null;
};
-const getUserDetails = async (baseUrl: string, token: string): Promise<UserDetailsResponse> => {
- const resp = await Axios.get<UserDetailsResponse>(`${baseUrl}/users/current`, {
- headers: {
- Authorization: `OAuth2 ${token}`
- }
- });
- return resp.data;
-};
-
const invalidV2Token = "Must be a v2 token";
export const getSaltedToken = (clusterId: string, token: string) => {
Promise<{ user: User; token: string }> => {
const saltedToken = getSaltedToken(config.uuidPrefix, useToken);
- const user = await getUserDetails(config.baseUrl, saltedToken);
+
+ const svc = createServices(config, { progressFn: () => { }, errorFn: () => { } });
+ setAuthorizationHeader(svc, saltedToken);
+
+ const user = await svc.authService.getUserDetails();
return {
- user: {
- firstName: user.first_name,
- lastName: user.last_name,
- uuid: user.uuid,
- ownerUuid: user.owner_uuid,
- email: user.email,
- isAdmin: user.is_admin,
- isActive: user.is_active,
- username: user.username,
- prefs: user.prefs
- },
+ user,
token: saltedToken,
};
};
}
}
}
- services.authService.saveSessions(sessions);
+ services.authService.saveSessions(getState().auth.sessions);
dispatch(progressIndicatorActions.STOP_WORKING("sessionsValidation"));
}
};
};
if (sessions.find(s => s.clusterId === config.uuidPrefix)) {
- dispatch(authActions.UPDATE_SESSION(session));
+ await dispatch(authActions.UPDATE_SESSION(session));
} else {
- dispatch(authActions.ADD_SESSION(session));
+ await dispatch(authActions.ADD_SESSION(session));
}
services.authService.saveSessions(getState().auth.sessions);
export const initSessions = (authService: AuthService, config: Config, user: User) =>
(dispatch: Dispatch<any>) => {
const sessions = authService.buildSessions(config, user);
- authService.saveSessions(sessions);
dispatch(authActions.SET_SESSIONS(sessions));
dispatch(validateSessions());
};