diff --git a/src/app/core/auth/selectors.ts b/src/app/core/auth/selectors.ts
index fa637981ae..8c88e0fce5 100644
--- a/src/app/core/auth/selectors.ts
+++ b/src/app/core/auth/selectors.ts
@@ -8,6 +8,7 @@ import { createSelector } from '@ngrx/store';
*/
import { AuthState } from './auth.reducer';
import { AppState } from '../../app.reducer';
+import { EPerson } from '../eperson/models/eperson.model';
/**
* Returns the user state.
@@ -35,11 +36,12 @@ const _isAuthenticatedLoaded = (state: AuthState) => state.loaded;
/**
* Return the users state
+ * NOTE: when state is REHYDRATED user object lose prototype so return always a new EPerson object
* @function _getAuthenticatedUser
* @param {State} state
- * @returns {User}
+ * @returns {EPerson}
*/
-const _getAuthenticatedUser = (state: AuthState) => state.user;
+const _getAuthenticatedUser = (state: AuthState) => Object.assign(new EPerson(), state.user);
/**
* Returns the authentication error.
diff --git a/src/app/shared/auth-nav-menu/auth-nav-menu.component.html b/src/app/shared/auth-nav-menu/auth-nav-menu.component.html
index 56a62c0fbd..b560283ad5 100644
--- a/src/app/shared/auth-nav-menu/auth-nav-menu.component.html
+++ b/src/app/shared/auth-nav-menu/auth-nav-menu.component.html
@@ -13,10 +13,9 @@
diff --git a/src/app/shared/auth-nav-menu/user-menu/user-menu.component.html b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.html
new file mode 100644
index 0000000000..7c576fee86
--- /dev/null
+++ b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.html
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/src/app/shared/auth-nav-menu/user-menu/user-menu.component.scss b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/shared/auth-nav-menu/user-menu/user-menu.component.ts b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.ts
new file mode 100644
index 0000000000..41298b559f
--- /dev/null
+++ b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.ts
@@ -0,0 +1,45 @@
+import { Component, OnInit } from '@angular/core';
+
+import { Observable } from 'rxjs';
+import { select, Store } from '@ngrx/store';
+
+import { EPerson } from '../../../core/eperson/models/eperson.model';
+import { AppState } from '../../../app.reducer';
+import { getAuthenticatedUser, isAuthenticationLoading } from '../../../core/auth/selectors';
+
+@Component({
+ selector: 'ds-user-menu',
+ templateUrl: './user-menu.component.html',
+ styleUrls: ['./user-menu.component.scss']
+})
+export class UserMenuComponent implements OnInit {
+
+ /**
+ * True if the authentication is loading.
+ * @type {Observable}
+ */
+ public loading$: Observable;
+
+ /**
+ * The authenticated user.
+ * @type {Observable}
+ */
+ public user$: Observable;
+
+ constructor(private store: Store) {
+ }
+
+ ngOnInit(): void {
+
+ // set loading
+ this.loading$ = this.store.pipe(select(isAuthenticationLoading));
+
+ // set user
+ this.user$ = this.store.pipe(select(getAuthenticatedUser));
+
+ this.user$.subscribe((user) => {
+ console.log(user, user.name);
+ })
+
+ }
+}
diff --git a/src/app/shared/log-out/log-out.component.html b/src/app/shared/log-out/log-out.component.html
index f3ceae0087..ab398d1735 100644
--- a/src/app/shared/log-out/log-out.component.html
+++ b/src/app/shared/log-out/log-out.component.html
@@ -1,5 +1,4 @@
-
-