org keys and optimized org profile load for sidenav
This commit is contained in:
parent
b3c8337f83
commit
0ea4b4400f
|
@ -6,6 +6,7 @@ angular
|
||||||
vm.bodyClass = '';
|
vm.bodyClass = '';
|
||||||
vm.searchVaultText = null;
|
vm.searchVaultText = null;
|
||||||
vm.version = appSettings.version;
|
vm.version = appSettings.version;
|
||||||
|
vm.userProfile = authService.getUserProfile();
|
||||||
|
|
||||||
$scope.currentYear = new Date().getFullYear();
|
$scope.currentYear = new Date().getFullYear();
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,21 @@
|
||||||
angular
|
angular
|
||||||
.module('bit.global')
|
.module('bit.global')
|
||||||
|
|
||||||
.controller('sideNavController', function ($scope, $state, authService, apiService) {
|
.controller('sideNavController', function ($scope, $state, authService) {
|
||||||
$scope.$state = $state;
|
$scope.$state = $state;
|
||||||
$scope.params = $state.params;
|
$scope.params = $state.params;
|
||||||
|
|
||||||
if ($state.includes('backend.user')) {
|
if ($state.includes('backend.org')) {
|
||||||
$scope.userProfile = authService.getUserProfile();
|
var userProfile = authService.getUserProfile();
|
||||||
}
|
if (!userProfile.organizations.length) {
|
||||||
else if ($state.includes('backend.org')) {
|
return;
|
||||||
$scope.orgProfile = {};
|
}
|
||||||
apiService.organizations.get({ id: $state.params.orgId }, function (response) {
|
|
||||||
$scope.orgProfile.name = response.Name;
|
for (var i = 0; i < userProfile.organizations.length; i++) {
|
||||||
});
|
if (userProfile.organizations[i].id === $state.params.orgId) {
|
||||||
|
$scope.orgProfile = userProfile.organizations[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,13 @@
|
||||||
|
|
||||||
$scope.confirm = function (user) {
|
$scope.confirm = function (user) {
|
||||||
apiService.users.getPublicKey({ id: user.userId }, function (userKey) {
|
apiService.users.getPublicKey({ id: user.userId }, function (userKey) {
|
||||||
var key = cryptoService.rsaEncrypt('org key', userKey.PublicKey);
|
var orgKey = cryptoService.getOrgKey($state.params.orgId);
|
||||||
|
if (!orgKey) {
|
||||||
|
toastr.error('Unable to confirm user.', 'Error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var key = cryptoService.rsaEncrypt(orgKey, userKey.PublicKey);
|
||||||
apiService.organizationUsers.confirm({ orgId: $state.params.orgId, id: user.id }, { key: key }, function () {
|
apiService.organizationUsers.confirm({ orgId: $state.params.orgId, id: user.id }, { key: key }, function () {
|
||||||
user.status = 2;
|
user.status = 2;
|
||||||
toastr.success(user.email + ' has been confirmed.', 'User Confirmed');
|
toastr.success(user.email + ' has been confirmed.', 'User Confirmed');
|
||||||
|
|
|
@ -92,11 +92,14 @@ angular
|
||||||
for (var i = 0; i < profile.Organizations.length; i++) {
|
for (var i = 0; i < profile.Organizations.length; i++) {
|
||||||
orgs.push({
|
orgs.push({
|
||||||
id: profile.Organizations[i].Id,
|
id: profile.Organizations[i].Id,
|
||||||
name: profile.Organizations[i].Name
|
name: profile.Organizations[i].Name,
|
||||||
|
key: profile.Organizations[i].Key,
|
||||||
|
status: profile.Organizations[i].Status
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_userProfile.organizations = orgs;
|
_userProfile.organizations = orgs;
|
||||||
|
cryptoService.setOrgKeys(orgs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,8 @@ angular
|
||||||
_key,
|
_key,
|
||||||
_b64Key,
|
_b64Key,
|
||||||
_privateKey,
|
_privateKey,
|
||||||
_publicKey;
|
_publicKey,
|
||||||
|
_orgKeys;
|
||||||
|
|
||||||
_service.setKey = function (key) {
|
_service.setKey = function (key) {
|
||||||
_key = key;
|
_key = key;
|
||||||
|
@ -24,6 +25,28 @@ angular
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.setOrgKeys = function (orgKeysCt, privateKey) {
|
||||||
|
if (!orgKeysCt.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var orgKeysb64 = {},
|
||||||
|
_orgKeys = {};
|
||||||
|
for (var i = 0; i < orgKeysCt.length; i++) {
|
||||||
|
try {
|
||||||
|
var orgKey = _service.rsaDecrypt(orgKeysCt[i].key, privateKey);
|
||||||
|
_orgKeys[orgKeysCt[i].id] = orgKey;
|
||||||
|
orgKeysb64[orgKeysCt[i].id] = forge.util.encode64(orgKey);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log('Cannot set org key ' + i + '. Decryption failed.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$sessionStorage.orgKeys = orgKeysb64;
|
||||||
|
};
|
||||||
|
|
||||||
_service.getKey = function (b64) {
|
_service.getKey = function (b64) {
|
||||||
if (b64 && b64 === true && _b64Key) {
|
if (b64 && b64 === true && _b64Key) {
|
||||||
return _b64Key;
|
return _b64Key;
|
||||||
|
@ -86,6 +109,33 @@ angular
|
||||||
return _publicKey;
|
return _publicKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.getOrgKeys = function () {
|
||||||
|
if (_orgKeys) {
|
||||||
|
return _orgKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sessionStorage.orgKeys) {
|
||||||
|
_orgKeys = {};
|
||||||
|
for (var orgId in $sessionStorage.orgKeys) {
|
||||||
|
if ($sessionStorage.orgKeys.hasOwnProperty(orgId)) {
|
||||||
|
var orgKeyBytes = forge.util.decode64($sessionStorage.orgKeys[orgId]);
|
||||||
|
_orgKeys[orgId] = orgKeyBytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _orgKeys;
|
||||||
|
};
|
||||||
|
|
||||||
|
_service.getOrgKey = function (orgId) {
|
||||||
|
var orgKeys = _service.getOrgKeys();
|
||||||
|
if (!orgKeys || !(orgId in orgKeys)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return orgKeys[orgId];
|
||||||
|
}
|
||||||
|
|
||||||
_service.clearKey = function () {
|
_service.clearKey = function () {
|
||||||
_key = _b64Key = null;
|
_key = _b64Key = null;
|
||||||
delete $sessionStorage.key;
|
delete $sessionStorage.key;
|
||||||
|
@ -97,9 +147,15 @@ angular
|
||||||
delete $sessionStorage.privateKey;
|
delete $sessionStorage.privateKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.clearOrgKeys = function () {
|
||||||
|
_orgKeys = {};
|
||||||
|
delete $sessionStorage.orgKeys;
|
||||||
|
};
|
||||||
|
|
||||||
_service.clearKeys = function () {
|
_service.clearKeys = function () {
|
||||||
_service.clearKey();
|
_service.clearKey();
|
||||||
_service.clearKeyPair();
|
_service.clearKeyPair();
|
||||||
|
_service.clearOrgKeys();
|
||||||
};
|
};
|
||||||
|
|
||||||
_service.makeKey = function (password, salt, b64) {
|
_service.makeKey = function (password, salt, b64) {
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
<section class="sidebar">
|
<section class="sidebar">
|
||||||
<div class="user-panel">
|
<div class="user-panel">
|
||||||
<div class="pull-left image">
|
<div class="pull-left image">
|
||||||
<img src="//www.gravatar.com/avatar/{{ userProfile.email | gravatar }}.jpg?s=45&d=mm"
|
<img src="//www.gravatar.com/avatar/{{ main.userProfile.email | gravatar }}.jpg?s=45&d=mm"
|
||||||
class="img-circle" alt="User Image">
|
class="img-circle" alt="User Image">
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left info">
|
<div class="pull-left info">
|
||||||
<p>{{userProfile.extended && userProfile.extended.name ? userProfile.extended.name : userProfile.email}}</p>
|
<p>{{main.userProfile.extended && main.userProfile.extended.name ? main.userProfile.extended.name : main.userProfile.email}}</p>
|
||||||
<a ui-sref="frontend.logout">Log Out</a>
|
<a ui-sref="frontend.logout">Log Out</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue