1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-10-19 07:35:48 +02:00
bitwarden-browser/src/services/userService.js

136 lines
3.6 KiB
JavaScript
Raw Normal View History

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;
initUserService();
2016-09-03 06:03:13 +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.tokenService.getToken(function (token) {
if (!token) {
2016-09-21 05:30:16 +02:00
callback(false);
}
else {
self.getUserId(function (userId) {
callback(userId !== null);
2016-09-21 05:30:16 +02:00
});
}
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.tokenService.getToken(function (token) {
if (!token) {
2016-09-21 05:30:16 +02:00
callback(false);
}
else {
self.getUserId(function (userId) {
callback(userId === null);
2016-09-21 05:30:16 +02:00
});
}
2016-09-03 06:03:13 +02:00
});
};
};