Make login/logout tests compatible with jsdom
[arvados.git] / src / services / auth-service / auth-service.ts
index cedf3c6215222d1db0f82d1209e1d0f239d22a73..4b213fb06cb727f62bf5c7e02326d56c077d350d 100644 (file)
@@ -2,10 +2,13 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import Axios from "axios";
 import { API_HOST } from "../../common/server-api";
+import { User } from "../../models/user";
 
-const API_TOKEN_KEY = 'api_token';
+export const API_TOKEN_KEY = 'apiToken';
+export const USER_EMAIL_KEY = 'userEmail';
+export const USER_FIRST_NAME_KEY = 'userFirstName';
+export const USER_LAST_NAME_KEY = 'userLastName';
 
 export default class AuthService {
 
@@ -18,20 +21,37 @@ export default class AuthService {
     }
 
     public getApiToken() {
-        return localStorage.getItem(API_TOKEN_KEY);
+        return localStorage.getItem(API_TOKEN_KEY) || undefined;
     }
 
-    public isUserLoggedIn() {
-        return this.getApiToken() !== null;
+    public getUser(): User | undefined {
+        const email = localStorage.getItem(USER_EMAIL_KEY);
+        const firstName = localStorage.getItem(USER_FIRST_NAME_KEY);
+        const lastName = localStorage.getItem(USER_LAST_NAME_KEY);
+        return email && firstName && lastName
+            ? { email, firstName, lastName }
+            : undefined;
+    }
+
+    public saveUser(user: User) {
+        localStorage.setItem(USER_EMAIL_KEY, user.email);
+        localStorage.setItem(USER_FIRST_NAME_KEY, user.firstName);
+        localStorage.setItem(USER_LAST_NAME_KEY, user.lastName);
+    }
+
+    public removeUser() {
+        localStorage.removeItem(USER_EMAIL_KEY);
+        localStorage.removeItem(USER_FIRST_NAME_KEY);
+        localStorage.removeItem(USER_LAST_NAME_KEY);
     }
 
     public login() {
         const currentUrl = `${window.location.protocol}//${window.location.host}/token`;
-        window.location.href = `${API_HOST}/login?return_to=${currentUrl}`;
+        window.location.assign(`${API_HOST}/login?return_to=${currentUrl}`);
     }
 
-    public logout(): Promise<any> {
+    public logout() {
         const currentUrl = `${window.location.protocol}//${window.location.host}`;
-        return Axios.get(`${API_HOST}/logout?return_to=${currentUrl}`);
+        window.location.assign(`${API_HOST}/logout?return_to=${currentUrl}`);
     }
 }