diff --git a/src/app/authentication.service.ts b/src/app/authentication.service.ts
index 7f5349c3d8550d1b5f9cf516763c1af02eafc0ff..c4afdd393fa5e7b86026db8e573f1dca4a84e4e1 100644
--- a/src/app/authentication.service.ts
+++ b/src/app/authentication.service.ts
@@ -3,17 +3,27 @@ import { User } from './user';
 import { Observable } from 'rxjs/Observable';
 import { of } from 'rxjs/observable/of';
 import { UserRole } from './user-roles.enum';
+import { DataStoreService } from './data-store.service';
 
 // TODO: connect to API
 // TODO: persist user data (shouldn't get lost on page refresh)
 @Injectable()
 export class AuthenticationService {
-  private mockUser: User;
-
-  constructor() { }
+  private readonly STORAGE_KEY: string = 'USER';
+  private user: User;
+
+  constructor(private dataStoreService: DataStoreService) {
+    if (dataStoreService.has(this.STORAGE_KEY)) {
+      // Load user data from local data store if available
+      this.user = JSON.parse(dataStoreService.get(this.STORAGE_KEY));
+    }
+  }
 
   login(email: string, password: string, role: UserRole): Observable<boolean> {
-    this.mockUser = new User(1, '', email, role);
+    this.user = new User(1, '', email, role, 'TOKEN');
+    // Store user data in local storage to retain the data when the user reloads the page
+    this.dataStoreService.set(this.STORAGE_KEY, JSON.stringify(this.user));
+
     return of(true);
   }
 
@@ -26,19 +36,21 @@ export class AuthenticationService {
   }
 
   logout() {
-    this.mockUser = null;
+    // Destroy the persisted user data
+    this.dataStoreService.remove(this.STORAGE_KEY);
+    this.user = undefined;
   }
 
   getUser(): Observable<User> {
-    return of(this.mockUser);
+    return of(this.user);
   }
 
   isLoggedIn(): Observable<boolean> {
-    return of(this.mockUser !== undefined);
+    return of(this.user !== undefined);
   }
 
   getRole(): Observable<UserRole> {
-    return of(this.mockUser.role);
+    return of(this.user.role);
   }
 
 }