1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { API_HOST } from "../../common/server-api";
6 import { User } from "../../models/user";
8 export const API_TOKEN_KEY = 'apiToken';
9 export const USER_EMAIL_KEY = 'userEmail';
10 export const USER_FIRST_NAME_KEY = 'userFirstName';
11 export const USER_LAST_NAME_KEY = 'userLastName';
13 export default class AuthService {
15 public saveApiToken(token: string) {
16 localStorage.setItem(API_TOKEN_KEY, token);
19 public removeApiToken() {
20 localStorage.removeItem(API_TOKEN_KEY);
23 public getApiToken() {
24 return localStorage.getItem(API_TOKEN_KEY) || undefined;
27 public getUser(): User | undefined {
28 const email = localStorage.getItem(USER_EMAIL_KEY);
29 const firstName = localStorage.getItem(USER_FIRST_NAME_KEY);
30 const lastName = localStorage.getItem(USER_LAST_NAME_KEY);
31 return email && firstName && lastName
32 ? { email, firstName, lastName }
36 public saveUser(user: User) {
37 localStorage.setItem(USER_EMAIL_KEY, user.email);
38 localStorage.setItem(USER_FIRST_NAME_KEY, user.firstName);
39 localStorage.setItem(USER_LAST_NAME_KEY, user.lastName);
43 localStorage.removeItem(USER_EMAIL_KEY);
44 localStorage.removeItem(USER_FIRST_NAME_KEY);
45 localStorage.removeItem(USER_LAST_NAME_KEY);
49 const currentUrl = `${window.location.protocol}//${window.location.host}/token`;
50 window.location.assign(`${API_HOST}/login?return_to=${currentUrl}`);
54 const currentUrl = `${window.location.protocol}//${window.location.host}`;
55 window.location.assign(`${API_HOST}/logout?return_to=${currentUrl}`);