--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import Axios, { AxiosInstance } from "axios";
+
+export const API_HOST = 'https://qr1hi.arvadosapi.com/arvados/v1';
+
+export const serverApi: AxiosInstance = Axios.create({
+ baseURL: API_HOST
+});
+
+export function setServerApiAuthorizationHeader(token: string) {
+ serverApi.defaults.headers.common = {
+ 'Authorization': `OAuth2 ${token}`
+ };
+}
+
+export function removeServerApiAuthorizationHeader() {
+ delete serverApi.defaults.headers.common.Authorization;
+}
//
// SPDX-License-Identifier: AGPL-3.0
+import Axios from "axios";
+import { API_HOST, serverApi } from "../../common/server-api";
+
const API_TOKEN_KEY = 'api_token';
-const API_HOST = 'https://qr1hi.arvadosapi.com';
export default class AuthService {
window.location.href = `${API_HOST}/login?return_to=${currentUrl}`;
}
- public logout() {
- this.removeApiToken();
+ public logout(): Promise<any> {
+ const currentUrl = `${window.location.protocol}//${window.location.host}`;
+ return Axios.get(`${API_HOST}/logout?return_to=${currentUrl}`);
}
}
import actions, { AuthAction } from "./auth-action";
import { User } from "../models/user";
import { authService } from "../services/services";
+import { removeServerApiAuthorizationHeader, serverApi, setServerApiAuthorizationHeader } from "../common/server-api";
type AuthState = User | {};
switch (action.type) {
case getType(actions.saveApiToken): {
authService.saveApiToken(action.payload);
+ setServerApiAuthorizationHeader(action.payload);
+ serverApi.get('/users/current');
return {...state, apiToken: action.payload};
}
case getType(actions.login): {
return state;
}
case getType(actions.logout): {
+ authService.removeApiToken();
+ removeServerApiAuthorizationHeader();
authService.logout();
return {...state, apiToken: null };
}