diff --git a/apps/steward-app/src/main/js/app/client/login/login.controller.js b/apps/steward-app/src/main/js/app/client/login/login.controller.js
index a9bd6501f..e396516e6 100644
--- a/apps/steward-app/src/main/js/app/client/login/login.controller.js
+++ b/apps/steward-app/src/main/js/app/client/login/login.controller.js
@@ -1,30 +1,34 @@
 (function () {
     'use strict';
 
     angular
         .module('shrine.steward.login');
 
-    LoginController.$inject = ['LoginModel','LoginService', '$location', 'constants'];
+    LoginController.$inject = ['LoginModel', 'LoginService', '$location', 'constants'];
     function LoginController(loginModel, loginService, $location, constants) {
+
+        // -- public --//
         var login = this;
         login.loginFail = false;
+        this.checkLogin = checkLogin;
+        this.navigateToHome = navigateToHome;
 
+        // -- private -- //
         function checkLogin() {
             loginService.setAuthHeader(login.username, login.password);
             loginService.login()
                 .then(navigateToHome, setLoginToError);
-
         }
 
         function navigateToHome(response) {
             loginService.setCredentials(login.username, login.password, response.roles);
-            $location.path(constants.defaultRoute);
+            $location.path(constants.homeRoute);
         }
 
         function setLoginToError(response) {
             loginService.clearCredentials();
             login.loginFail = true;
             login.username = login.password = '';
         }
     }
 })();
diff --git a/apps/steward-app/src/main/js/app/client/steward.constants.js b/apps/steward-app/src/main/js/app/client/steward.constants.js
index cb889c8c1..9d24f553b 100644
--- a/apps/steward-app/src/main/js/app/client/steward.constants.js
+++ b/apps/steward-app/src/main/js/app/client/steward.constants.js
@@ -1,56 +1,58 @@
 (function () {
   'use strict';
 
   var baseUrl = 'https://localhost:6443/steward/';
   var testPort = '8000';
-  var defaultRoute = '/topics';
+  var homeRoute = '/topics';
+  var defaultRoute = '/login';
 
   var restOptions = {
     skip: '{$SKIP$}',
     limit: '{$LIMIT$}',
     state: '{$STATE$}',
     direction: '{$DIRECTION$}',
     sortBy: '{$SORT_BY$}',
     minDate: '{$MIN_DATE$}',
     maxDate: '{$MAX_DATE$}',
   };
 
   var restInterpolators = {
     skip: 'skip=' + restOptions.skip,
     limit: 'limit=' + restOptions.limit,
     state: 'state=' + restOptions.state,
     direction: 'sortDirection=' + restOptions.direction,
     sortBy: 'sortBy=' + restOptions.sortBy,
     minDate: 'minDate=' + restOptions.minDate,
     maxDate: 'maxDate=' + restOptions.maxDate
   };
 
   var states = {
     state1: 'Pending',
     state2: 'Approved',
     state3: 'Rejected'
   };
 
   // -- todo: delete?
   var title = 'SHRINE DATA STEWARD';
 
   var roles = {
     role1: 'researcher',
     role2: 'data-steward',
     role3: 'admin'
   };
 
   angular
     .module('shrine.steward')
     .constant('constants', {
+      'homeRoute': homeRoute,
       'defaultRoute': defaultRoute,
       'baseUrl': baseUrl,
       'restOptions': restOptions,
       'restInterpolators': restInterpolators,
       'states': states,
       'roles': roles,
       'testPort': testPort,
       'title': title//todo: delete?
     });
 })();
 
diff --git a/apps/steward-app/src/main/js/app/client/steward.constants.spec.js b/apps/steward-app/src/main/js/app/client/steward.constants.spec.js
index b0b0ee38b..b2b074f97 100644
--- a/apps/steward-app/src/main/js/app/client/steward.constants.spec.js
+++ b/apps/steward-app/src/main/js/app/client/steward.constants.spec.js
@@ -1,66 +1,66 @@
 (function () {
     'use strict';
 
     describe('shrine.steward constants tests', StewardConstantsSpec);
 
     function StewardConstantsSpec() {
 
         // -- vars -- //
         var stewardConstants;
 
         function setup() {
             module('shrine.steward');
             inject(function (constants) {
                 stewardConstants = constants;
             });
         }
 
         //-- setup --/
         beforeEach(setup);
 
         // -- tests -- //
         it('constants should exist.', function () {
             expect(stewardConstants).toBeDefined();
         });
 
         // -- tests -- //
-        it('defaultRoute member should exist.', function () {
-            expect(stewardConstants.defaultRoute).toBeDefined();
+        it('homeRoute member should exist.', function () {
+            expect(stewardConstants.homeRoute).toBeDefined();
         });
 
         // -- tests -- //
         it('baseUrl member should exist.', function () {
             expect(stewardConstants.baseUrl).toBeDefined();
         });
 
         // -- tests -- //
         it('restOptions member should exist.', function () {
             expect(stewardConstants.restOptions).toBeDefined();
         });
 
         // -- tests -- //
         it('restInterpolators member should exist.', function () {
             expect(stewardConstants.restInterpolators).toBeDefined();
         });
 
         // -- tests -- //
         it('states member should exist.', function () {
             expect(stewardConstants.states).toBeDefined();
         });
 
         // -- tests -- //
         it('roles member should exist.', function () {
             expect(stewardConstants.roles).toBeDefined();
         });
 
         // -- tests -- //
         it('testPort member should exist.', function () {
             expect(stewardConstants.testPort).toBeDefined();
         });
 
         // -- tests -- //
         it('title member should exist.', function () {
             expect(stewardConstants.title).toBeDefined();
         });
     }
 })();
diff --git a/apps/steward-app/src/main/js/app/client/steward.route.js b/apps/steward-app/src/main/js/app/client/steward.route.js
index 3ed7d42fb..2c6dc3f3e 100644
--- a/apps/steward-app/src/main/js/app/client/steward.route.js
+++ b/apps/steward-app/src/main/js/app/client/steward.route.js
@@ -1,50 +1,33 @@
 (function () {
     'use strict';  
-     var defaultRoute = '/topics';
+     var homeRoute = '/topics';
     
     angular
         .module('shrine.steward')
         .config(StewardConfiguration)
-        .run(StewardRunner);
 
     StewardConfiguration.$inject = ['$stateProvider', '$urlRouterProvider', '$httpProvider', 'StewardServiceProvider'];
     function StewardConfiguration($stateProvider, $urlRouterProvider, $httpProvider, stewardProvider) {
 
         // -- default route --//
-        $urlRouterProvider.otherwise(defaultRoute);
+        $urlRouterProvider.otherwise(homeRoute);
 
         stewardProvider.configureHttpProvider($httpProvider);
 
         // -- configure states -- //
         $stateProvider
             .state('topics',{
                 url:'/topics',
                 controller: 'TopicsController',
                 templateUrl:'app/client/topics/topics.tpl.html',
                 controllerAs:'topics'
             })
             .state('login',{
                 url:'/login',
                 controller: 'LoginController',
-                templateUrl:'app/client/login/topics.tpl.html',
+                templateUrl:'app/client/login/login.tpl.html',
                 controllerAs:'login'
             });
 
     }
-
-    /**
-    * App Run Phase - Set up listener to verify user has access.
-    */
-    StewardRunner.$inject = ['$rootScope', '$location', 'StewardService'];
-    function StewardRunner($rootScope, $location, StewardService) {
-        $rootScope.$on('$locationChangeStart', authenticateUser);
-
-        function authenticateUser(event, next, current) {
-            // redirect to login page if not logged in
-            // // redirect to login page if not logged in
-            // if ($location.path() !== '/login' && (!$app.globals.currentUser || !$app.globals.currentUser.isLoggedIn)) {
-            //     $location.path('/login');
-            // }
-        }
-    }
 })();
diff --git a/apps/steward-app/src/main/js/app/client/steward.route.spec.js b/apps/steward-app/src/main/js/app/client/steward.route.spec.js
index 751835a68..606ed50f0 100644
--- a/apps/steward-app/src/main/js/app/client/steward.route.spec.js
+++ b/apps/steward-app/src/main/js/app/client/steward.route.spec.js
@@ -1,45 +1,55 @@
 (function () {
     'use strict';
 
     describe('shrine.steward.route tests', StewardRouteSpec);
 
     function StewardRouteSpec() {
 
         // -- vars -- //
         var $state;
         var $rootScope;
         var templateCache;
+        var stewardService;
+
         var state = 'topics';
+        var user = {
+            username: 'testUser',
+            password: 'kapow',
+            roles: ['testRole1','testRole2','testRole3']
+        };
 
         function setup() {
             module('shrine.steward');
-            inject(function (_$state_, $templateCache, _$rootScope_) {
+            inject(function (_$state_, $templateCache, _$rootScope_, _StewardService_) {
                 $state = _$state_
                 $rootScope = _$rootScope_;
                 templateCache = $templateCache;
+                stewardService = _StewardService_;
             });
         }
 
         function activateRoute(template, name) {
             templateCache.put(template, '');
             $state.go(name);
             $rootScope.$digest();
         }
 
         //-- setup --/
         beforeEach(setup);
 
         // -- tests -- //
         it('topics route url should be set to #/topics', function () {
+            stewardService.setAppUser(user.username, user.password, user.roles);
             activateRoute('app/client/topics/topics.tpl.html', 'topics');
-            expect($state.href(state)).toEqual('#/topics');
+            expect($state.href($state.current.name)).toEqual('#/topics');
         });
 
-        // Test whether our state activates correctly
-        it('topics route should activate the state', function () {
-            activateRoute('app/client/topics/topics.tpl.html', 'topics');
-            expect($state.current.name).toBe('topics');
+                // -- tests -- //
+        it('login route url should be set to #/login', function () {
+            stewardService.deleteAppUser();
+            activateRoute('app/client/login/login.tpl.html', 'login');
+            expect($state.href($state.current.name)).toEqual('#/login');
         });
     }
 }
 )();
diff --git a/apps/steward-app/src/main/js/app/client/steward.runner.js b/apps/steward-app/src/main/js/app/client/steward.runner.js
new file mode 100644
index 000000000..ced2e6989
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/steward.runner.js
@@ -0,0 +1,33 @@
+(function () {
+    'use strict';
+
+    angular
+        .module('shrine.steward')
+        .run(StewardRunner);
+
+    /**
+    * App Run Phase - Set up listener to verify user has access.
+    */
+    StewardRunner.$inject = ['$rootScope', '$location', 'StewardService'];
+    function StewardRunner($rootScope, $location, StewardService) {
+
+        var defaultRoute = StewardService.constants.defaultRoute;
+        var path = $location.path();
+
+        $rootScope.$on('$locationChangeStart', verifyIdentity);
+
+        function verifyIdentity(event, next, current) {
+            if (isUserNotLoggedIn() && isRedirectNecessary()) {
+                $location.path(defaultRoute);
+            }
+        }
+
+        function isRedirectNecessary() {
+            return path !== defaultRoute;
+        }
+        function isUserNotLoggedIn() {
+            var currentUser = StewardService.getAppUser();
+            return (!currentUser || !currentUser.isLoggedIn);
+        }
+    }
+})();
diff --git a/apps/steward-app/src/main/js/app/client/steward.service.js b/apps/steward-app/src/main/js/app/client/steward.service.js
index 25260f96c..b7d9ff1ee 100644
--- a/apps/steward-app/src/main/js/app/client/steward.service.js
+++ b/apps/steward-app/src/main/js/app/client/steward.service.js
@@ -1,95 +1,95 @@
 (function () {
     'use strict';
     angular
         .module('shrine.steward')
         .provider('StewardService', StewardProvider);
 
     StewardProvider.$inject = ['constants'];
     function StewardProvider(constants) {
 
         // -- make available to configuration --//
         this.$get = get;
         this.configureHttpProvider = configureHttpProvider;
         this.constants = constants;
 
         // -- provide steward service --//
         get.$inject = ['CommonService'];
         function get(CommonService) {
             return new StewardService(CommonService, constants);
         }
 
         /**
          * Set up cross domain voodoo, if running from deployment, No IE Cache
          * @param httpProvider
          * @returns {*}
          * @see: http://stackoverflow.com/questions/16098430/angular-ie-caching-issue-for-http
          */
         function configureHttpProvider(httpProvider) {
 
             // -- set up cross domain -- //
             httpProvider.defaults.useXDomain = true;
             delete httpProvider.defaults.headers.common['X-Requested-With'];
 
             // -- If running from deployment, No IE Cache -- //
             if (window.location.origin.indexOf('http://localhost:' + constants.testPort) === -1) {
 
                 //initialize get if not there
                 if (!httpProvider.defaults.headers.get) {
                     httpProvider.defaults.headers.get = {};
                 }
                 //disable IE ajax request caching
                 httpProvider.defaults.headers.get['If-Modified-Since'] = 'Sat, 26 Jul 1997 05:00:00 GMT';
                 httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
                 httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
             }
 
             return httpProvider;
         }
     }
 
     /**
      * Steward Servcice.
      */
     function StewardService(CommonService, constants) {
 
         // -- private vars -- //
         var appTitle = null;
         var appUser = null;
 
         // -- public members -- //
         this.commonService = CommonService;
         this.constants = constants;
 
         // -- public methods -- //
         this.setAppUser = setAppUser;
         this.getAppUser = getAppUser;
         this.deleteAppUser = deleteAppUser;
-        
+
         /**
          * -- set app user. --
          */
         function setAppUser(username, authdata, roles) {
 
             appUser = {
                 username: username,
                 authdata: authdata,
                 isLoggedIn: true,
                 roles: roles
             };
         }
 
         /**
          * -- read only --
          */
         function getAppUser() {
             return angular.extend({}, appUser);
         }
 
         /**
          * -- delete user --
          */
         function deleteAppUser() {
             appUser = null;
         }
     }
 })();
diff --git a/apps/steward-app/src/main/js/src/app/login/login.tpl.html b/apps/steward-app/src/main/js/src/app/login/login.tpl.html
index 2697176b3..ad35cfb44 100644
--- a/apps/steward-app/src/main/js/src/app/login/login.tpl.html
+++ b/apps/steward-app/src/main/js/src/app/login/login.tpl.html
@@ -1,53 +1,72 @@
 
     <div class="row shrine-login">
         <div class="col-sm-4">
             <p class="shrine-copy-bold">
             </p>
 
 
             <ul class="shrine-copy">
 
             </ul>
 
             <p class="shrine-copy">
             </p>
 
         </div>
         <div class="col-sm-4">
             <div class="shrine-panel">
+                
                 <div class="panel-body">
-                    <form name="form" ng-submit="login()" role="form">
+                    <form name="form" 
+                    ng-submit="login.checkLogin()" 
+                    role="form">
+                        
                         <fieldset>
                             <div class="form-group">
                                 <label class="pull-right shrine-copy-bold"
-                                       ng-show="form.username.$error.required ||
-                                form.password.$error.required">
+                                       ng-show="form.username.$error.required ||form.password.$error.required">
                                     *<small>Required Field</small>
                                 </label>
                                 <span>Username*</span>
-
-                                <input class="form-control" type="text" name="username"
-                                       id="username" class="form-control"
-                                       ng-model="username" autofocus required novalidate/>
+                                <!-- ng username -->
+                                <input class="form-control" 
+                                    type="text" 
+                                    name="username"
+                                    id="username" 
+                                    class="form-control"
+                                    ng-model="login.username" 
+                                    autofocus required novalidate/>
                             </div>
+
                             <div class="form-group">
                                 <span>Password*</span>
-                                <input class="form-control" type="password"
-                                       name="password" id="password" ng-model="password"
-                                       required novalidate/>
+                                <!-- ng password -->
+                                <input class="form-control" 
+                                    type="password"
+                                    name="password" 
+                                    id="password" 
+                                    ng-model="login.password"
+                                    required novalidate/>
                             </div>
-                            <div class="form-group has-error" style="text-align: center">
-                                <label ng-show="loginFail === true"
-                                       class="control-label" for="inputError">Invalid Login</label>
+
+                            <div class="form-group has-error" 
+                                style="text-align: center">
+                                <!-- ng status -->
+                                <label ng-show="login.loginFail === true"
+                                       class="control-label" 
+                                       for="inputError">Invalid Login</label>
                             </div>
+
+                            <!-- ng submit -->
                             <div>
                                 <button type="submit"
                                         class="pull-right fa fa-chevron-right fa-3x shrine-button"
                                         ng-disabled="!form.$valid"></button>
                             </div>
+
                         </fieldset>
                     </form>
                 </div>
             </div>
         </div>
     </div>