diff --git a/src/browser_action/app/accounts/accountsLoginController.js b/src/browser_action/app/accounts/accountsLoginController.js
index 9c6bf4eb32..a3ba091a9a 100644
--- a/src/browser_action/app/accounts/accountsLoginController.js
+++ b/src/browser_action/app/accounts/accountsLoginController.js
@@ -3,7 +3,9 @@
.controller('accountsLoginController', function ($scope, $state) {
$scope.login = function (model) {
- $state.go('tabs.current');
+ g_authService.logIn(model.email, model.masterPassword, function () {
+ $state.go('tabs.current');
+ });
};
$scope.twoFactor = function (model) {
diff --git a/src/browser_action/index.html b/src/browser_action/index.html
index 032fd33b81..4dac44e5b9 100644
--- a/src/browser_action/index.html
+++ b/src/browser_action/index.html
@@ -8,7 +8,7 @@
-
+
diff --git a/src/package.json b/src/package.json
index a700d5b960..861d05266a 100644
--- a/src/package.json
+++ b/src/package.json
@@ -3,6 +3,7 @@
"version": "0.0.1",
"devDependencies": {
"ionic-framework-v1": "1.3.1",
- "sjcl": "1.0.3"
+ "sjcl": "1.0.3",
+ "angular-jwt": "0.0.9"
}
}
diff --git a/src/services/authService.js b/src/services/authService.js
index 2dbcb53dda..8f29b9dc1d 100644
--- a/src/services/authService.js
+++ b/src/services/authService.js
@@ -1,15 +1,47 @@
var g_authService = function () {
var _service = {}, _userProfile = null;
- _service.logIn = function (email, masterPassword) {
- return;
+ _service.logIn = function (email, masterPassword, callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
+ var key = g_cryptoService.makeKey(masterPassword, email);
+
+ var request = {
+ email: email,
+ masterPasswordHash: g_cryptoService.hashPassword(masterPassword, key)
+ };
+
+ var response = {
+ Token: "",
+ Profile: {
+
+ }
+ };
+
+ g_tokenService.setToken(response.Token, function () {
+ g_cryptoService.setKey(key, function () {
+ _service.setUserProfile(response.Profile, function () {
+ callback();
+ });
+ });
+ });
};
- _service.logInTwoFactor = function (code, provider) {
+ _service.logInTwoFactor = function (code, provider, callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
return;
};
_service.logOut = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
g_tokenService.clearToken(function () {
g_cryptoService.clearKey(function () {
_userProfile = null;
@@ -19,6 +51,10 @@
};
_service.getUserProfile = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
if (!_userProfile) {
_service.setUserProfile(null, function () {
callback(_userProfile);
@@ -29,6 +65,10 @@
};
_service.setUserProfile = function (profile, callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
g_tokenService.getToken(function (token) {
if (!token) {
return;
@@ -63,16 +103,24 @@
}
_service.isAuthenticated = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
callback(_service.getUserProfile(function (profile) {
return profile !== null && !profile.twoFactor;
}));
};
_service.isTwoFactorAuthenticated = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
callback(_service.getUserProfile(function (profile) {
return profile !== null && profile.twoFactor;
}));
};
return _service;
-};
+}();
diff --git a/src/services/cryptoService.js b/src/services/cryptoService.js
index 12de9f4e3e..33370a208c 100644
--- a/src/services/cryptoService.js
+++ b/src/services/cryptoService.js
@@ -125,4 +125,4 @@
};
return _service;
-};
+}();
diff --git a/src/services/tokenService.js b/src/services/tokenService.js
index 77446d468a..2ba7b09b37 100644
--- a/src/services/tokenService.js
+++ b/src/services/tokenService.js
@@ -2,6 +2,10 @@
var _service = {}, _token;
_service.setToken = function (token, callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
_token = token;
chrome.storage.local.set({
'authBearer': token
@@ -11,6 +15,10 @@
};
_service.getToken = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
if (_token) {
return callback(_token);
}
@@ -25,6 +33,10 @@
};
_service.clearToken = function (callback) {
+ if (!callback || typeof callback !== 'function') {
+ throw 'callback function required';
+ }
+
_token = null;
chrome.storage.local.remove('authBearer', function () {
callback();
@@ -32,4 +44,4 @@
};
return _service;
-};
+}();