2016-09-03 06:03:13 +02:00
|
|
|
|
angular
|
|
|
|
|
.module('bit.services')
|
|
|
|
|
|
2016-09-03 21:44:32 +02:00
|
|
|
|
.factory('loginService', function (cryptoService, apiService, apiService, userService, tokenService, $q) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
var _service = {};
|
|
|
|
|
|
|
|
|
|
_service.logIn = function (email, masterPassword) {
|
|
|
|
|
var key = cryptoService.makeKey(masterPassword, email);
|
2016-09-03 21:44:32 +02:00
|
|
|
|
var request = new TokenRequest(email, cryptoService.hashPassword(masterPassword, key));
|
2016-09-03 06:03:13 +02:00
|
|
|
|
|
|
|
|
|
var deferred = $q.defer();
|
2016-09-03 21:44:32 +02:00
|
|
|
|
apiService.postToken(request, function (response) {
|
|
|
|
|
if (!response || !response.token) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-03 21:44:32 +02:00
|
|
|
|
tokenService.setToken(response.token, function () {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
cryptoService.setKey(key, function () {
|
2016-09-03 21:44:32 +02:00
|
|
|
|
userService.setUserProfile(response.profile, function () {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
deferred.resolve(response);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}, function (error) {
|
|
|
|
|
deferred.reject(error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return deferred.promise;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
_service.logInTwoFactor = function (code, provider) {
|
|
|
|
|
var request = {
|
|
|
|
|
code: code,
|
|
|
|
|
provider: provider
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var deferred = $q.defer();
|
|
|
|
|
apiService.auth.tokenTwoFactor(request, function (response) {
|
|
|
|
|
if (!response || !response.Token) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tokenService.setToken(response.Token, function () {
|
|
|
|
|
userService.setUserProfile(response.Profile, function () {
|
|
|
|
|
deferred.resolve(response);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}, function (error) {
|
|
|
|
|
deferred.reject(error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return deferred.promise;
|
|
|
|
|
};
|
|
|
|
|
|
2016-09-03 21:44:32 +02:00
|
|
|
|
_service.logOut = function (callback) {
|
2016-09-03 06:03:13 +02:00
|
|
|
|
tokenService.clearToken(function () {
|
|
|
|
|
cryptoService.clearKey(function () {
|
|
|
|
|
userService.clearUserProfile();
|
2016-09-03 21:44:32 +02:00
|
|
|
|
callback();
|
2016-09-03 06:03:13 +02:00
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return _service;
|
|
|
|
|
});
|