diff --git a/apps/steward-app/src/main/js/app/client/common/authentication/authentication.js b/apps/steward-app/src/main/js/app/client/common/authentication/authentication-js.del
similarity index 100%
copy from apps/steward-app/src/main/js/app/client/common/authentication/authentication.js
copy to apps/steward-app/src/main/js/app/client/common/authentication/authentication-js.del
diff --git a/apps/steward-app/src/main/js/app/client/common/authentication/authentication-model.js b/apps/steward-app/src/main/js/app/client/common/authentication/authentication-model-js.del
similarity index 100%
copy from apps/steward-app/src/main/js/app/client/common/authentication/authentication-model.js
copy to apps/steward-app/src/main/js/app/client/common/authentication/authentication-model-js.del
diff --git a/apps/steward-app/src/main/js/app/client/common/authentication/authentication.js b/apps/steward-app/src/main/js/app/client/login/authentication-js.del
similarity index 100%
rename from apps/steward-app/src/main/js/app/client/common/authentication/authentication.js
rename to apps/steward-app/src/main/js/app/client/login/authentication-js.del
diff --git a/apps/steward-app/src/main/js/app/client/common/authentication/authentication-model.js b/apps/steward-app/src/main/js/app/client/login/authentication-model-js.del
similarity index 100%
rename from apps/steward-app/src/main/js/app/client/common/authentication/authentication-model.js
rename to apps/steward-app/src/main/js/app/client/login/authentication-model-js.del
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 e69de29bb..a9bd6501f 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
@@ -0,0 +1,30 @@
+(function () {
+    'use strict';
+
+    angular
+        .module('shrine.steward.login');
+
+    LoginController.$inject = ['LoginModel','LoginService', '$location', 'constants'];
+    function LoginController(loginModel, loginService, $location, constants) {
+        var login = this;
+        login.loginFail = false;
+
+        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);
+        }
+
+        function setLoginToError(response) {
+            loginService.clearCredentials();
+            login.loginFail = true;
+            login.username = login.password = '';
+        }
+    }
+})();
diff --git a/apps/steward-app/src/main/js/app/client/login/login.model.js b/apps/steward-app/src/main/js/app/client/login/login.model.js
new file mode 100644
index 000000000..3c75f6b72
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/login/login.model.js
@@ -0,0 +1,50 @@
+(function () {
+    'use strict';
+
+    angular
+        .module('shrine.steward.login')
+        .factory('loginModel', LoginModel);
+
+    LoginModel.$inject = ['$http', '$q', 'constants'];
+    function LoginModel($http, $q, constants) {
+
+        // -- private --//
+        var loginModel = this;
+        var authFail = 'AuthenticationFailed';
+        var url = constants.baseUrl + 'user/whoami/';
+
+        return {
+            login: authenticate
+        };
+
+        function authenticate() {
+            return $http.get(url)
+                .then(parse, reject);
+        }
+
+        function parse(result) {
+
+            var data = result.data;
+
+            return (data === 'AuthenticationFailed') ?
+                reject(result) : {
+                    success: true,
+                    msg: result.data.statusText,
+                    userId: result.data.userId,
+                    roles: result.data.roles
+                };
+        }
+
+        function reject(result, msg) {
+
+            var statusText = result.data.statusText || result.data;
+
+            var response = {
+                success: false,
+                msg: 'invalid login ' + statusText
+            };
+
+            return $q.reject(response);
+        }
+    }
+})();
diff --git a/apps/steward-app/src/main/js/app/client/login/login.model.spec.js b/apps/steward-app/src/main/js/app/client/login/login.model.spec.js
new file mode 100644
index 000000000..bc327ed54
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/login/login.model.spec.js
@@ -0,0 +1,45 @@
+(function () {
+    'use strict';
+
+
+    describe('loginModel services', LoginModelSpec);
+
+    function LoginModelSpec() {
+
+        var loginModel, $httpBackend, constants;
+
+        function setup() {
+            module('shrine.steward.login');
+
+            inject(function (_$httpBackend_, _loginModel_, _constants_) {
+                $httpBackend = _$httpBackend_;
+                loginModel = _loginModel_;
+                constants = _constants_;
+                $httpBackend.whenGET(/\.html$/).respond('');
+            });
+        }
+
+        beforeEach(setup);
+
+        it('loginModel.bar() - test', function () {
+            var mockData = {
+                statusText: 'success',
+                userId: 'test',
+                roles: ['testRole1,testRole2,testRole3']
+            };
+
+            var expectedResult = {
+                success: true,
+                msg: 'success',
+                userId: mockData.userId,
+                roles: mockData.roles
+            }
+
+            $httpBackend.expectGET(constants.baseUrl + 'user/whoami/').respond(mockData);
+            loginModel.login().then(function (data) {
+                expect(data.userId).toEqual(mockData.userId);
+            });
+            $httpBackend.flush();
+        });
+    }
+})();
diff --git a/apps/steward-app/src/main/js/app/client/login/login.module.js b/apps/steward-app/src/main/js/app/client/login/login.module.js
new file mode 100644
index 000000000..2e2cd6806
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/login/login.module.js
@@ -0,0 +1,8 @@
+(function() {
+    'use strict';
+
+    var dependencies = ['shrine.steward'];
+
+    angular
+        .module('shrine.steward.login', dependencies);
+})();
diff --git a/apps/steward-app/src/main/js/app/client/login/login.service.js b/apps/steward-app/src/main/js/app/client/login/login.service.js
new file mode 100644
index 000000000..d89db033b
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/login/login.service.js
@@ -0,0 +1,35 @@
+(function () {
+    'use strict';
+
+    angular
+        .module('shrine.steward.login')
+        .factory('LoginService', LoginService);
+
+    LoginService.$inject = ['$http','StewardService'];
+    function LoginService($http, StewardService) {
+
+        var svc = StewardService;
+
+        return {
+            setAuthHeader: setAuthHeader,
+            setCredentials: setCredentials,
+            clearCredentials: clearCredentials
+        };
+
+        function setAuthHeader(username, password) {
+            var authdata = svc.commonService.toBase64(username + ':' + password);
+            $http.defaults.headers.common['Authorization'] =  'Basic ' + authdata;
+        }
+
+        function setCredentials(username, password, roles) {
+            var authdata = svc.commonService.toBase64(username + ':' + password);
+            svc.setAppUser(username, authdata, roles);
+        }
+
+        function clearCredentials() {
+            var user = svc.getAppUser();
+            svc.deleteAppUser();
+            $http.defaults.headers.common.Authorization = ' Basic ';
+        }
+    }
+})();
diff --git a/apps/steward-app/src/main/js/app/client/login/login.service.spec.js b/apps/steward-app/src/main/js/app/client/login/login.service.spec.js
new file mode 100644
index 000000000..9670b367b
--- /dev/null
+++ b/apps/steward-app/src/main/js/app/client/login/login.service.spec.js
@@ -0,0 +1,76 @@
+(function () {
+    'use strict';
+
+    describe('shrine.steward.login LoginService tests', LoginServiceSpec);
+
+    function LoginServiceSpec() {
+
+        // -- vars -- //
+        var loginService, http, stewardService;
+        // -- arrange -- //
+        var username = 'test';
+        var password = 'testpassword';
+        var roles = ['testRole1', 'testRole2', 'testRole3'];
+
+        function setup() {
+            module('shrine.steward.login');
+            inject(function (LoginService, $http, StewardService) {
+                loginService = LoginService;
+                http = $http;
+                stewardService = StewardService;
+            });
+        }
+
+        //-- setup --/
+        beforeEach(setup);
+
+        // -- tests -- //
+        it('LoginService should exist', function () {
+            expect(typeof (loginService)).toBe('object');
+        });
+
+        it('setAuthHeader should set the Authorization Header', function () {
+
+            // -- arrange -- //
+            var expectedAuthHeader = 'Basic dGVzdDp0ZXN0cGFzc3dvcmQ=';
+
+            //-- act --//
+            loginService.setAuthHeader(username, password);
+            var result = http.defaults.headers.common['Authorization'];
+
+            // -- assert --//
+            expect(result).toEqual(expectedAuthHeader);
+        });
+
+        it('setCredentials should set the proper user credentials', function () {
+
+            // -- arrange -- //
+            var expectedResult = {
+                username: 'test',
+                authdata: 'dGVzdDp0ZXN0cGFzc3dvcmQ=',
+                isLoggedIn: true,
+                roles: ['testRole1', 'testRole2', 'testRole3']
+            };
+
+            // -- act -- //
+            loginService.setCredentials(username, password, roles);
+            var user = stewardService.getAppUser();
+
+            // -- assert --/
+            expect(user).toEqual(expectedResult);
+        });
+
+        it('clearCredentials should clear the user', function () {
+            // -- arrange -- //
+            var expectedResult = {};
+
+            // -- act -- //
+            loginService.clearCredentials();
+            var user = stewardService.getAppUser();
+
+            // -- assert --/
+            expect(user).toEqual({});
+        });
+
+    }
+})();