Merge branch 'feature/add-compromised-filter'

Signed-off-by: binsky <timo@binsky.org>
This commit is contained in:
binsky 2023-06-25 18:03:19 +02:00
commit b4f6ec07ed
No known key found for this signature in database
GPG key ID: B438F7FA2E3AC98F
3 changed files with 44 additions and 18 deletions

View file

@ -390,6 +390,7 @@
$scope.no_credentials_label.s_medium=false; $scope.no_credentials_label.s_medium=false;
$scope.no_credentials_label.s_low=false; $scope.no_credentials_label.s_low=false;
$scope.no_credentials_label.expired=false; $scope.no_credentials_label.expired=false;
$scope.no_credentials_label.compromised=false;
$scope.disableAllLabels = function(){ $scope.disableAllLabels = function(){
$scope.no_credentials_label.all=false; $scope.no_credentials_label.all=false;
@ -397,6 +398,7 @@
$scope.no_credentials_label.s_medium=false; $scope.no_credentials_label.s_medium=false;
$scope.no_credentials_label.s_low=false; $scope.no_credentials_label.s_low=false;
$scope.no_credentials_label.expired=false; $scope.no_credentials_label.expired=false;
$scope.no_credentials_label.compromised=false;
}; };
$scope.currentSpecialFilter = "all"; $scope.currentSpecialFilter = "all";
@ -426,6 +428,10 @@
$scope.filterExpired(); $scope.filterExpired();
$scope.no_credentials_label.expired=true; $scope.no_credentials_label.expired=true;
break; break;
case "compromised":
$scope.filterCompromised();
$scope.no_credentials_label.compromised=true;
break;
case "all": case "all":
$scope.filterAll(noFilterReset); $scope.filterAll(noFilterReset);
$scope.no_credentials_label.all=true; $scope.no_credentials_label.all=true;
@ -434,16 +440,16 @@
}; };
$scope.getListSizes = function(){ $scope.getListSizes = function(){
var l = $scope.filtered_credentials; const l = $scope.filtered_credentials;
let deleted=0;
let result=[];
var deleted=0; for (let i = 0; i < l.length; i++) {
for (var i = 0; i < l.length; i++) {
if(l[i].delete_time>0){ if(l[i].delete_time>0){
deleted++; deleted++;
} }
} }
var result=[];
result.listsize=l.length; result.listsize=l.length;
result.listsize_wout_deleted=l.length-deleted; result.listsize_wout_deleted=l.length-deleted;
result.listsize_deleted=deleted; result.listsize_deleted=deleted;
@ -456,9 +462,9 @@
$scope.filterOptions.filterText=""; $scope.filterOptions.filterText="";
$scope.selectedtags=[]; $scope.selectedtags=[];
} }
var creds_filtered=[]; let creds_filtered=[];
for (var i = 0; i < $scope.active_vault.credentials.length; i++) { for (let i = 0; i < $scope.active_vault.credentials.length; i++) {
if($scope.active_vault.credentials[i].delete_time===0 || $scope.delete_time > 0){ if($scope.active_vault.credentials[i].delete_time===0 || $scope.delete_time > 0){
creds_filtered.push($scope.active_vault.credentials[i]); creds_filtered.push($scope.active_vault.credentials[i]);
} }
@ -468,11 +474,12 @@
}; };
$scope.filterStrength = function(strength_min, strength_max){ $scope.filterStrength = function(strength_min, strength_max){
var initialCredentials=$scope.active_vault.credentials; const initialCredentials=$scope.active_vault.credentials;
var postFiltered=[]; let postFiltered=[];
for (var i = 0; i < initialCredentials.length; i++) {
var _credential = initialCredentials[i]; for (let i = 0; i < initialCredentials.length; i++) {
var zxcvbn_result = zxcvbn(_credential.password); const _credential = initialCredentials[i];
const zxcvbn_result = zxcvbn(_credential.password);
if(zxcvbn_result.score>=strength_min && zxcvbn_result.score<=strength_max){ if(zxcvbn_result.score>=strength_min && zxcvbn_result.score<=strength_max){
postFiltered.push(initialCredentials[i]); postFiltered.push(initialCredentials[i]);
@ -482,12 +489,12 @@
}; };
$scope.filterExpired = function(){ $scope.filterExpired = function(){
var initialCredentials=$scope.active_vault.credentials; const initialCredentials=$scope.active_vault.credentials;
var now = Date.now(); const now = Date.now();
var postFiltered=[]; let postFiltered=[];
for (var i = 0; i < initialCredentials.length; i++) { for (let i = 0; i < initialCredentials.length; i++) {
var _credential = initialCredentials[i]; const _credential = initialCredentials[i];
if(_credential.expire_time!==0 && _credential.expire_time <= now){ if(_credential.expire_time!==0 && _credential.expire_time <= now){
postFiltered.push(initialCredentials[i]); postFiltered.push(initialCredentials[i]);
@ -496,9 +503,23 @@
$scope.filtered_credentials=$scope.filterHidden(postFiltered); $scope.filtered_credentials=$scope.filterHidden(postFiltered);
}; };
$scope.filterCompromised = function(){
const initialCredentials=$scope.active_vault.credentials;
let postFiltered=[];
for (let i = 0; i < initialCredentials.length; i++) {
const _credential = initialCredentials[i];
if(_credential.compromised !== false){
postFiltered.push(initialCredentials[i]);
}
}
$scope.filtered_credentials=$scope.filterHidden(postFiltered);
};
$scope.filterHidden = function(list){ $scope.filterHidden = function(list){
var list_without_hidden=[]; let list_without_hidden=[];
for (var i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
if(list[i].hidden!==1){ if(list[i].hidden!==1){
list_without_hidden.push(list[i]); list_without_hidden.push(list[i]);
} }

View file

@ -421,6 +421,7 @@ class TranslationController extends ApiController {
'navigation.strength.medium' => $this->trans->t('Medium Strength'), 'navigation.strength.medium' => $this->trans->t('Medium Strength'),
'navigation.strength.bad' => $this->trans->t('Bad Strength'), 'navigation.strength.bad' => $this->trans->t('Bad Strength'),
'navigation.expired' => $this->trans->t('Expired'), 'navigation.expired' => $this->trans->t('Expired'),
'navigation.compromised' => $this->trans->t('Compromised'),
'navigation.advanced.filter' => $this->trans->t('Filter Tags'), 'navigation.advanced.filter' => $this->trans->t('Filter Tags'),
'navigation.advanced.checkbox' => $this->trans->t('Simple Navigation'), 'navigation.advanced.checkbox' => $this->trans->t('Simple Navigation'),

View file

@ -155,6 +155,10 @@ style('passman', 'app');
</li> </li>
</ul> </ul>
</li> </li>
<li>
<div class="app-navigation-entry-bullet-with-hover bullet-color-red"></div>
<a ng-class="{selected: clickedNavigationItem=='compromised'}" ng-click="filterCredentialBySpecial('compromised')">{{ 'navigation.compromised' | translate }}</a>
</li>
<li> <li>
<div class="app-navigation-entry-bullet-with-hover bullet-color-red"></div> <div class="app-navigation-entry-bullet-with-hover bullet-color-red"></div>
<a ng-class="{selected: clickedNavigationItem=='strength_low'}" ng-click="filterCredentialBySpecial('strength_low')">{{ 'navigation.strength.bad' | translate }}</a> <a ng-class="{selected: clickedNavigationItem=='strength_low'}" ng-click="filterCredentialBySpecial('strength_low')">{{ 'navigation.strength.bad' | translate }}</a>