Skip to content

Commit 21a1ab2

Browse files
committed
Added backward compatibilty to mark summaries as new
1 parent 422e22e commit 21a1ab2

File tree

3 files changed

+61
-10
lines changed

3 files changed

+61
-10
lines changed

apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java

+21
Original file line numberDiff line numberDiff line change
@@ -2970,11 +2970,32 @@ private static void moveOktaOidcSSO(BackwardCompatibility backwardCompatibility)
29702970
}
29712971
}
29722972

2973+
private static void markSummariesAsVulnerable(BackwardCompatibility backwardCompatibility){
2974+
// case for the customers where vulnerable are stored in new collection and only testing runs are marked as new.
2975+
2976+
if(backwardCompatibility.getMarkSummariesVulnerable() == 0){
2977+
2978+
List<ObjectId> summaryIds = VulnerableTestingRunResultDao.instance.summaryIdsStoredForVulnerableTests();
2979+
if(!summaryIds.isEmpty()){
2980+
TestingRunResultSummariesDao.instance.updateMany(
2981+
Filters.in(Constants.ID, summaryIds),
2982+
Updates.set(TestingRunResultSummary.IS_NEW_TESTING_RUN_RESULT_SUMMARY, true)
2983+
);
2984+
}
2985+
2986+
BackwardCompatibilityDao.instance.updateOne(
2987+
Filters.eq("_id", backwardCompatibility.getId()),
2988+
Updates.set(BackwardCompatibility.MARK_SUMMARIES_NEW_FOR_VULNERABLE, Context.now())
2989+
);
2990+
}
2991+
}
2992+
29732993
public static void setBackwardCompatibilities(BackwardCompatibility backwardCompatibility){
29742994
if (DashboardMode.isMetered()) {
29752995
initializeOrganizationAccountBelongsTo(backwardCompatibility);
29762996
setOrganizationsInBilling(backwardCompatibility);
29772997
}
2998+
markSummariesAsVulnerable(backwardCompatibility);
29782999
setAktoDefaultNewUI(backwardCompatibility);
29793000
dropLastCronRunInfoField(backwardCompatibility);
29803001
fetchIntegratedConnections(backwardCompatibility);

libs/dao/src/main/java/com/akto/dao/testing/VulnerableTestingRunResultDao.java

+27-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.akto.dao.testing;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45

56
import org.bson.conversions.Bson;
@@ -11,6 +12,10 @@
1112
import com.akto.dto.testing.TestingRunResult;
1213
import com.akto.dto.testing.TestingRunResultSummary;
1314
import com.akto.util.Constants;
15+
import com.mongodb.BasicDBObject;
16+
import com.mongodb.client.MongoCursor;
17+
import com.mongodb.client.model.Accumulators;
18+
import com.mongodb.client.model.Aggregates;
1419
import com.mongodb.client.model.CreateCollectionOptions;
1520
import com.mongodb.client.model.Filters;
1621
import com.mongodb.client.model.Projections;
@@ -51,15 +56,7 @@ public boolean isStoredInVulnerableCollection(ObjectId objectId, boolean isSumma
5156
Filters.eq(TestingRunResultSummary.IS_NEW_TESTING_RUN_RESULT_SUMMARY, true)
5257
);
5358
boolean isNew = TestingRunResultSummariesDao.instance.count(filter) > 0;
54-
if(!isNew){
55-
TestingRunResultSummary trrs = TestingRunResultSummariesDao.instance.findOne(
56-
Filters.eq(Constants.ID, objectId),
57-
Projections.include(TestingRunResultSummary.TESTING_RUN_ID)
58-
);
59-
return TestingRunDao.instance.isStoredInVulnerableCollection(trrs.getTestingRunId());
60-
}else{
61-
return isNew;
62-
}
59+
return isNew;
6360
} catch (Exception e) {
6461
e.printStackTrace();
6562
return false;
@@ -100,6 +97,27 @@ public List<TestingRunResult> findAll(Bson q, Bson projection, boolean isStoredI
10097
return TestingRunResultDao.instance.findAll(q, projection);
10198
}
10299

100+
public List<ObjectId> summaryIdsStoredForVulnerableTests(){
101+
String groupedId = "summaries";
102+
List<Bson> pipeLine = new ArrayList<>();
103+
pipeLine.add(
104+
Aggregates.group(groupedId, Accumulators.addToSet("summaryIds", "$" + TestingRunResult.TEST_RUN_RESULT_SUMMARY_ID))
105+
);
106+
try {
107+
MongoCursor<BasicDBObject> cursor = instance.getMCollection().aggregate(pipeLine, BasicDBObject.class).cursor();
108+
List<ObjectId> uniqueSummaries = new ArrayList<>();
109+
while (cursor.hasNext()) {
110+
BasicDBObject dbObject = cursor.next();
111+
uniqueSummaries = (List<ObjectId>) dbObject.get("summaryIds");
112+
}
113+
return uniqueSummaries;
114+
} catch (Exception e) {
115+
e.printStackTrace();
116+
return new ArrayList<>();
117+
}
118+
119+
}
120+
103121
@Override
104122
public String getCollName() {
105123
return "vulnerable_testing_run_results";

libs/dao/src/main/java/com/akto/dto/BackwardCompatibility.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ public class BackwardCompatibility {
103103
public static final String MOVE_OKTA_OIDC_SSO = "moveOktaOidcSSO";
104104
private int moveOktaOidcSSO;
105105

106+
public static final String MARK_SUMMARIES_NEW_FOR_VULNERABLE = "markSummariesVulnerable";
107+
private int markSummariesVulnerable;
108+
106109
public BackwardCompatibility(int id, int dropFilterSampleData, int resetSingleTypeInfoCount, int dropWorkflowTestResult,
107110
int readyForNewTestingFramework,int addAktoDataTypes, boolean deploymentStatusUpdated,
108111
int authMechanismData, boolean mirroringLambdaTriggered, int deleteAccessListFromApiToken,
@@ -112,7 +115,7 @@ public BackwardCompatibility(int id, int dropFilterSampleData, int resetSingleTy
112115
int loginSignupGroups, int vulnerableApiUpdationVersionV1, int riskScoreGroups,
113116
int deactivateCollections, int disableAwsSecretPii, int apiCollectionAutomatedField,
114117
int automatedApiGroups, int addAdminRoleIfAbsent, int dropSpecialCharacterApiCollections, int fixApiAccessType,
115-
int addDefaultFilters, int moveAzureSamlToNormalSaml, int deleteOptionsAPIs, int moveOktaOidcSSO) {
118+
int addDefaultFilters, int moveAzureSamlToNormalSaml, int deleteOptionsAPIs, int moveOktaOidcSSO, int markSummariesVulnerable) {
116119
this.id = id;
117120
this.dropFilterSampleData = dropFilterSampleData;
118121
this.resetSingleTypeInfoCount = resetSingleTypeInfoCount;
@@ -145,6 +148,7 @@ public BackwardCompatibility(int id, int dropFilterSampleData, int resetSingleTy
145148
this.moveAzureSamlToNormalSaml = moveAzureSamlToNormalSaml;
146149
this.deleteOptionsAPIs = deleteOptionsAPIs;
147150
this.moveOktaOidcSSO = moveOktaOidcSSO;
151+
this.markSummariesVulnerable = markSummariesVulnerable;
148152
}
149153

150154
public BackwardCompatibility() {
@@ -437,4 +441,12 @@ public int getMoveOktaOidcSSO() {
437441
public void setMoveOktaOidcSSO(int moveOktaOidcSSO) {
438442
this.moveOktaOidcSSO = moveOktaOidcSSO;
439443
}
444+
445+
public int getMarkSummariesVulnerable() {
446+
return markSummariesVulnerable;
447+
}
448+
449+
public void setMarkSummariesVulnerable(int markSummariesVulnerable) {
450+
this.markSummariesVulnerable = markSummariesVulnerable;
451+
}
440452
}

0 commit comments

Comments
 (0)