diff --git a/src/js/app.js b/src/js/app.js
index 857c9af..f19efae 100644
--- a/src/js/app.js
+++ b/src/js/app.js
@@ -10,19 +10,18 @@
     $routeProvider
       .when('/login', {
         'templateUrl': 'login.html',
-        'controller': 'loginController'
-      })
-      .when('/dashboard', {
-        'templateUrl': 'dashboard.html',
-        'controller': 'dashboardController'
+        'controller': 'loginController',
+         authenticated: false
       })
       .when('/power-operations', {
         'templateUrl': 'power-operations.html',
-        'controller': 'powerOperationsController'
+        'controller': 'powerOperationsController',
+         authenticated: true
       })
       .when('/system-overview', {
         'templateUrl': 'system-overview.html',
-        'controller': 'systemOverviewController'
+        'controller': 'systemOverviewController',
+         authenticated: true
       })
       .when('/unit-id', {
         'templateUrl': 'unit-id.html',
@@ -38,10 +37,31 @@
         'redirectTo': '/login'
       });
  }])
- .run(['$rootScope', '$location', 'dataService',
-    function($rootScope, $location, dataService){
+ .run(['$rootScope', '$location', 'dataService', 'userModel',
+    function($rootScope, $location, dataService, userModel){
     $rootScope.dataService = dataService;
     dataService.path = $location.path();
+    $rootScope.$on('$routeChangeStart', function(event, next, current){
+
+      if(next.$$route == null || next.$$route == undefined) return;
+
+      if(next.$$route.authenticated){
+        if(!userModel.isLoggedIn()){
+          $location.path('/login');
+        }
+      }
+
+      if(next.$$route.originalPath == '/' ||
+        next.$$route.originalPath == '/login'){
+         if(userModel.isLoggedIn()){
+            if(current){
+              $location.path(current.$$route.originalPath);
+            }else{
+              $location.path('/system-overview');
+            }
+         }
+      }
+    });
     $rootScope.$on('$locationChangeSuccess', function(event){
         var path = $location.path();
         dataService.path = path;
diff --git a/src/js/controllers.js b/src/js/controllers.js
index 854af78..b9490e6 100644
--- a/src/js/controllers.js
+++ b/src/js/controllers.js
@@ -1,20 +1,23 @@
  angular
  .module('app.controllers', [])
-   .controller('loginController', ['$scope', '$window', 'APIUtils', 'dataService', function($scope, $window, APIUtils, dataService){
+   .controller('loginController', ['$scope', '$window', 'APIUtils', 'dataService', 'userModel', function($scope, $window, APIUtils, dataService, userModel){
+    $scope.dataService = dataService;
+
+    $scope.tryLogin = function(username, password, event){
+        if(event.keyCode === 13){
+            $scope.login(username, password);
+        }
+    };
     $scope.login = function(username, password){
         $scope.error = false;
-        $scope.dataService = dataService;
         if(!username || username == "" ||
            !password || password == ""){
             return false;
         }else{
-            //@TODO: service should handle
-            if(username == APIUtils.LOGIN_CREDENTIALS.username &&
-               password == APIUtils.LOGIN_CREDENTIALS.password){
-                $window.location.hash = '#/dashboard';
+            if(userModel.login(username, password)){
+                $window.location.hash = '#/system-overview';
             }else{
                 $scope.error = true;
-                //@TODO: show error message
             }
         }
     }
@@ -158,4 +161,4 @@
         $scope.confirm = true;
         $scope.immediately_confirm = true;
     };
- }]);
\ No newline at end of file
+ }]);
diff --git a/src/js/directives.js b/src/js/directives.js
index af78ae7..f8aae3d 100644
--- a/src/js/directives.js
+++ b/src/js/directives.js
@@ -10,7 +10,7 @@
         'scope': {
             'path': '='
         },
-        'controller': ['$scope','dataService', function($scope, dataService){
+        'controller': ['$scope','dataService', 'userModel', '$location', function($scope, dataService, userModel, $location){
             $scope.server_status = 01;
             $scope.dataService = dataService;
             APIUtils.login(function(){
@@ -25,6 +25,11 @@
                 });
             });
 
+            $scope.logout = function(){
+                userModel.logout();
+                $location.path('/logout');
+            }
+
             $scope.refresh = function(){
                 console.log("--refresh status--");
             }
diff --git a/src/js/services.js b/src/js/services.js
index 38b4b85..d37dc7f 100644
--- a/src/js/services.js
+++ b/src/js/services.js
@@ -241,4 +241,28 @@
         }
     };
     return SERVICE;
+ }])
+ .factory('userModel',['APIUtils',function(APIUtils){
+    return {
+        login : function(username, password){
+            if(username == APIUtils.LOGIN_CREDENTIALS.username &&
+               password == APIUtils.LOGIN_CREDENTIALS.password){
+                sessionStorage.setItem('LOGIN_ID', username);
+                return true;
+            }else{
+                return false;
+            }
+        },
+        isLoggedIn : function(){
+            if(sessionStorage.getItem('LOGIN_ID') === null){
+                return false;
+            }
+
+            return true;
+        },
+        logout : function(){
+            sessionStorage.removeItem('LOGIN_ID');
+            return true;
+        }
+    };
  }]);
diff --git a/src/login.html b/src/login.html
index ed6f949..bad16f7 100644
--- a/src/login.html
+++ b/src/login.html
@@ -22,10 +22,10 @@
         <div class="columns large-6">
             <form id="login__form" role="form" action="" >
                 <label for="username">Username</label>
-                <input type="text" id="username" name="username" required ng-model="username" ng-class="{error: error}">
+                <input type="text" id="username" name="username" required ng-model="username" ng-class="{error: error}" ng-keydown="tryLogin(username, password, $event)">
 
                 <label for="password">Password</label>
-                <input type="password" id="password" name="password" class="" required ng-model="password">
+                <input type="password" id="password" name="password" class="" required ng-model="password" ng-keydown="tryLogin(username, password, $event)">
 
                 <input id="login__submit" class="btn-primary submit" type="button" value="Log in" role="button" ng-click="login(username, password)" ng-class="{error: error}">
 
