2016-09-21 05:30:16 +02:00
|
|
|
|
function UserService(tokenService, apiService, cryptoService) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
this.tokenService = tokenService;
|
2016-09-03 06:38:27 +02:00
|
|
|
|
this.apiService = apiService;
|
2016-09-21 05:30:16 +02:00
|
|
|
|
this.cryptoService = cryptoService;
|
2016-09-04 06:34:24 +02:00
|
|
|
|
|
|
|
|
|
initUserService();
|
2016-09-03 06:03:13 +02:00
|
|
|
|
};
|
|
|
|
|
|
2016-09-04 06:34:24 +02:00
|
|
|
|
function initUserService() {
|
2016-09-21 05:30:16 +02:00
|
|
|
|
var userIdKey = 'userId',
|
|
|
|
|
userEmailKey = 'userEmail';
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
var _userId = null,
|
|
|
|
|
_email = null;
|
|
|
|
|
|
|
|
|
|
UserService.prototype.setUserId = function (userId, callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_userId = userId;
|
|
|
|
|
var obj = {};
|
|
|
|
|
obj[userIdKey] = userId;
|
|
|
|
|
chrome.storage.local.set(obj, function () {
|
|
|
|
|
callback();
|
2016-09-03 18:07:30 +02:00
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
UserService.prototype.getUserId = function (callback) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
if (_userId) {
|
|
|
|
|
return callback(_userId);
|
2016-09-03 06:03:13 +02:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
chrome.storage.local.get(userIdKey, function (obj) {
|
|
|
|
|
if (obj && obj[userIdKey]) {
|
|
|
|
|
_userId = obj[userIdKey];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return callback(_userId);
|
2016-09-03 06:03:13 +02:00
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
UserService.prototype.clearUserId = function (callback) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
_userId = null;
|
|
|
|
|
chrome.storage.local.remove(userIdKey, function () {
|
|
|
|
|
callback();
|
|
|
|
|
});
|
|
|
|
|
};
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
UserService.prototype.setEmail = function (email, callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
_email = email;
|
|
|
|
|
var obj = {};
|
|
|
|
|
obj[userEmailKey] = email;
|
|
|
|
|
chrome.storage.local.set(obj, function () {
|
|
|
|
|
callback();
|
2016-09-03 06:03:13 +02:00
|
|
|
|
});
|
2016-09-21 05:30:16 +02:00
|
|
|
|
};
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
UserService.prototype.getEmail = function (callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
if (_email) {
|
|
|
|
|
return callback(_email);
|
2016-09-03 06:03:13 +02:00
|
|
|
|
}
|
2016-09-21 05:30:16 +02:00
|
|
|
|
|
|
|
|
|
chrome.storage.local.get(userEmailKey, function (obj) {
|
|
|
|
|
if (obj && obj[userEmailKey]) {
|
|
|
|
|
_email = obj[userEmailKey];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return callback(_email);
|
|
|
|
|
});
|
2016-09-03 06:03:13 +02:00
|
|
|
|
};
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
UserService.prototype.clearEmail = function (callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_email = null;
|
|
|
|
|
chrome.storage.local.remove(userEmailKey, function () {
|
|
|
|
|
callback();
|
|
|
|
|
});
|
2016-09-03 06:03:13 +02:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
UserService.prototype.isAuthenticated = function (callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
var self = this;
|
|
|
|
|
self.cryptoService.getKey(false, function (key) {
|
|
|
|
|
if (!key) {
|
|
|
|
|
callback(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
self.tokenService.getToken(function (token) {
|
|
|
|
|
if (!token) {
|
|
|
|
|
callback(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
self.getUserId(function (userId) {
|
|
|
|
|
callback(userId !== null);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2016-09-03 06:03:13 +02:00
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
UserService.prototype.isTwoFactorAuthenticated = function (callback) {
|
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
|
throw 'callback function required';
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-21 05:30:16 +02:00
|
|
|
|
var self = this;
|
|
|
|
|
self.cryptoService.getKey(false, function (key) {
|
|
|
|
|
if (!key) {
|
|
|
|
|
callback(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
self.tokenService.getToken(function (token) {
|
|
|
|
|
if (!token) {
|
|
|
|
|
callback(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
self.getUserId(function (userId) {
|
|
|
|
|
callback(userId === null);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2016-09-03 06:03:13 +02:00
|
|
|
|
});
|
|
|
|
|
};
|
2016-09-04 06:34:24 +02:00
|
|
|
|
};
|