Merge branch 'master' of git.curoverse.com:arvados-workbench2 into 14503_keep_services 14503_keep_services
authorJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 29 Nov 2018 11:17:06 +0000 (12:17 +0100)
committerJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 29 Nov 2018 11:17:06 +0000 (12:17 +0100)
refs #2
14503

Arvados-DCO-1.1-Signed-off-by: Janicki Artur <artur.janicki@contractors.roche.com>

src/models/user.ts
src/services/auth-service/auth-service.ts
src/store/auth/auth-reducer.test.ts

index c2f21e582798dacd5597872696ff7fc1685d62e7..9f9c534763ca86ee40190c2361c89b4e81da2f95 100644 (file)
@@ -10,6 +10,7 @@ export interface User {
     lastName: string;
     uuid: string;
     ownerUuid: string;
+    isAdmin: boolean;
 }
 
 export const getUserFullname = (user?: User) => {
index 50760bb4d8493b5384b1564ca6e936c00001b40e..edc6e24fce752b628a7573899f21af2e6063073b 100644 (file)
@@ -13,6 +13,7 @@ export const USER_FIRST_NAME_KEY = 'userFirstName';
 export const USER_LAST_NAME_KEY = 'userLastName';
 export const USER_UUID_KEY = 'userUuid';
 export const USER_OWNER_UUID_KEY = 'userOwnerUuid';
+export const USER_IS_ADMIN = 'isAdmin';
 
 export interface UserDetailsResponse {
     email: string;
@@ -50,15 +51,20 @@ export class AuthService {
         return localStorage.getItem(USER_OWNER_UUID_KEY) || undefined;
     }
 
+    public getIsAdmin(): boolean {
+        return !!localStorage.getItem(USER_IS_ADMIN);
+    }
+
     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);
-        const uuid = localStorage.getItem(USER_UUID_KEY);
-        const ownerUuid = localStorage.getItem(USER_OWNER_UUID_KEY);
+        const uuid = this.getUuid();
+        const ownerUuid = this.getOwnerUuid();
+        const isAdmin = this.getIsAdmin();
 
         return email && firstName && lastName && uuid && ownerUuid
-            ? { email, firstName, lastName, uuid, ownerUuid }
+            ? { email, firstName, lastName, uuid, ownerUuid, isAdmin }
             : undefined;
     }
 
@@ -68,6 +74,7 @@ export class AuthService {
         localStorage.setItem(USER_LAST_NAME_KEY, user.lastName);
         localStorage.setItem(USER_UUID_KEY, user.uuid);
         localStorage.setItem(USER_OWNER_UUID_KEY, user.ownerUuid);
+        localStorage.setItem(USER_IS_ADMIN, JSON.stringify(user.isAdmin));
     }
 
     public removeUser() {
@@ -76,6 +83,7 @@ export class AuthService {
         localStorage.removeItem(USER_LAST_NAME_KEY);
         localStorage.removeItem(USER_UUID_KEY);
         localStorage.removeItem(USER_OWNER_UUID_KEY);
+        localStorage.removeItem(USER_IS_ADMIN);
     }
 
     public login() {
@@ -100,7 +108,8 @@ export class AuthService {
                     firstName: resp.data.first_name,
                     lastName: resp.data.last_name,
                     uuid: resp.data.uuid,
-                    ownerUuid: resp.data.owner_uuid
+                    ownerUuid: resp.data.owner_uuid,
+                    isAdmin: resp.data.is_admin
                 };
             })
             .catch(e => {
index 8cde324549008b4790ff4d4595e4bfa46d55a948..3dd486b31cba402bd1adc92be9a8574837729b9d 100644 (file)
@@ -29,7 +29,8 @@ describe('auth-reducer', () => {
             firstName: "John",
             lastName: "Doe",
             uuid: "uuid",
-            ownerUuid: "ownerUuid"
+            ownerUuid: "ownerUuid",
+            isAdmin: true
         };
         const state = reducer(initialState, authActions.INIT({ user, token: "token" }));
         expect(state).toEqual({
@@ -58,7 +59,8 @@ describe('auth-reducer', () => {
             firstName: "John",
             lastName: "Doe",
             uuid: "uuid",
-            ownerUuid: "ownerUuid"
+            ownerUuid: "ownerUuid",
+            isAdmin: true
         };
 
         const state = reducer(initialState, authActions.USER_DETAILS_SUCCESS(user));
@@ -71,6 +73,7 @@ describe('auth-reducer', () => {
                 lastName: "Doe",
                 uuid: "uuid",
                 ownerUuid: "ownerUuid",
+                isAdmin: true
             }
         });
     });