From 7a2c1319dad002486431a39a4ba61bf47a698463 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 10 Mar 2020 16:08:43 -0400 Subject: [PATCH 1/3] 5790 multi-user case deletion control --- .../org/sleuthkit/autopsy/casemodule/Case.java | 2 +- .../autopsy/casemodule/CaseDeleteAction.java | 5 +++-- .../autopsy/featureaccess/FeatureAccessUtils.java | 15 ++++++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index e684b4af4b..a031c9b5ed 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -1114,7 +1114,7 @@ public class Case { CallableSystemAction.get(CaseCloseAction.class).setEnabled(true); CallableSystemAction.get(CaseDetailsAction.class).setEnabled(true); CallableSystemAction.get(DataSourceSummaryAction.class).setEnabled(true); - CallableSystemAction.get(CaseDeleteAction.class).setEnabled(true); + CallableSystemAction.get(CaseDeleteAction.class).setEnabled(FeatureAccessUtils.canDeleteCases()); CallableSystemAction.get(OpenTimelineAction.class).setEnabled(true); CallableSystemAction.get(OpenCommVisualizationToolAction.class).setEnabled(true); CallableSystemAction.get(CommonAttributeSearchAction.class).setEnabled(true); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index a389aca979..f7bb3d6a62 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2018 Basis Technology Corp. + * Copyright 2011-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,6 +35,7 @@ import org.openide.util.NbBundle.Messages; import org.openide.util.actions.CallableSystemAction; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.featureaccess.FeatureAccessUtils; /** * The action associated with the Delete button of the Case Properties panel. It @@ -54,7 +55,7 @@ final class CaseDeleteAction extends CallableSystemAction { /* * A value of 'null' signifies that there is no case open. */ - setEnabled(null != evt.getNewValue()); + setEnabled(null != evt.getNewValue() && FeatureAccessUtils.canDeleteCases()); }); } diff --git a/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java b/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java index 87b4fed4f7..738aedf331 100644 --- a/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java +++ b/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java @@ -73,6 +73,15 @@ final public class FeatureAccessUtils { return dataSourceDeletionAllowed; } + /** + * Indicates whether or not a user can delete the current case. + * + * @return True or false. + */ + public static boolean canDeleteCases() { + return currentCaseIsSingleUserCase() || multiUserCaseRestrictionsFileAbsent(); + } + /** * Indicates whether or not the current case is a single-user case. * @@ -83,12 +92,12 @@ final public class FeatureAccessUtils { } /** - * Indicates whether or not the current user is allowed to create or modify - * (add or delete data sources) multi-user cases. + * Indicates whether or not the multi-user case privileges restriction file + * is absent. * * @return True or false. */ - public static boolean multiUserCaseRestrictionsFileAbsent() { + private static boolean multiUserCaseRestrictionsFileAbsent() { File accessLimitingFile = new File(MULTIUSER_CASE_RESTRICTED_FILE_PATH); return !accessLimitingFile.exists(); } From 45cd32b997bc20d20dbf5ccca944e5bd2bc7ca7b Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 10 Mar 2020 16:09:41 -0400 Subject: [PATCH 2/3] 5790 multi-user case deletion control --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index a031c9b5ed..39a13dcfab 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2012-2019 Basis Technology Corp. + * Copyright 2012-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); From 8353d8436b6279ee97e409f27a0f89023b20e6b6 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 10 Mar 2020 16:11:41 -0400 Subject: [PATCH 3/3] 5790 multi-user case deletion control --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 2 +- Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java | 2 +- .../org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 39a13dcfab..b70845e3df 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -1114,7 +1114,7 @@ public class Case { CallableSystemAction.get(CaseCloseAction.class).setEnabled(true); CallableSystemAction.get(CaseDetailsAction.class).setEnabled(true); CallableSystemAction.get(DataSourceSummaryAction.class).setEnabled(true); - CallableSystemAction.get(CaseDeleteAction.class).setEnabled(FeatureAccessUtils.canDeleteCases()); + CallableSystemAction.get(CaseDeleteAction.class).setEnabled(FeatureAccessUtils.canDeleteCurrentCase()); CallableSystemAction.get(OpenTimelineAction.class).setEnabled(true); CallableSystemAction.get(OpenCommVisualizationToolAction.class).setEnabled(true); CallableSystemAction.get(CommonAttributeSearchAction.class).setEnabled(true); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index f7bb3d6a62..6bd0231405 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -55,7 +55,7 @@ final class CaseDeleteAction extends CallableSystemAction { /* * A value of 'null' signifies that there is no case open. */ - setEnabled(null != evt.getNewValue() && FeatureAccessUtils.canDeleteCases()); + setEnabled(null != evt.getNewValue() && FeatureAccessUtils.canDeleteCurrentCase()); }); } diff --git a/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java b/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java index 738aedf331..fdc5d8b222 100644 --- a/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java +++ b/Core/src/org/sleuthkit/autopsy/featureaccess/FeatureAccessUtils.java @@ -78,7 +78,7 @@ final public class FeatureAccessUtils { * * @return True or false. */ - public static boolean canDeleteCases() { + public static boolean canDeleteCurrentCase() { return currentCaseIsSingleUserCase() || multiUserCaseRestrictionsFileAbsent(); }