X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/122fba47e0b0629ebb449c5206ba400021bc6de1..c8f9ad8b41c678eef32c6df467f259d141fa9376:/src/services/services.ts?ds=sidebyside diff --git a/src/services/services.ts b/src/services/services.ts index dd3178790a..af547deccf 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3,6 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import Axios from "axios"; +import { AxiosInstance } from "axios"; import { ApiClientAuthorizationService } from '~/services/api-client-authorization-service/api-client-authorization-service'; import { AuthService } from "./auth-service/auth-service"; import { GroupsService } from "./groups-service/groups-service"; @@ -35,8 +36,26 @@ import { LinkAccountService } from "./link-account-service/link-account-service" export type ServiceRepository = ReturnType; -export const createServices = (config: Config, actions: ApiActions) => { - const apiClient = Axios.create(); +export function setAuthorizationHeader(services: ServiceRepository, token: string) { + services.apiClient.defaults.headers.common = { + Authorization: `Bearer ${token}` + }; + services.webdavClient.defaults.headers = { + Authorization: `Bearer ${token}` + }; +} + +export function removeAuthorizationHeader(services: ServiceRepository) { + delete services.apiClient.defaults.headers.common; + delete services.webdavClient.defaults.headers.common; +} + +export const createServices = (config: Config, actions: ApiActions, useApiClient?: AxiosInstance) => { + // Need to give empty 'headers' object or it will create an + // instance with a reference to the global default headers object, + // which is very bad because that means setAuthorizationHeader + // would update the global default instead of the instance default. + const apiClient = useApiClient || Axios.create({ headers: {} }); apiClient.defaults.baseURL = config.baseUrl; const webdavClient = new WebDAV();