From a52786d3fca2b7561adf47e1b37aa4558a30c5fd Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 6 Nov 2019 17:38:09 -0500 Subject: [PATCH] Data source deletion support changes --- .../sleuthkit/autopsy/casemodule/Case.java | 4 ++-- .../casemodule/NewCaseVisualPanel1.java | 4 ++-- .../autopsy/datamodel/ImageNode.java | 6 +++--- ...Utils.java => UserFeatureAccessUtils.java} | 19 ++++++++++--------- 4 files changed, 17 insertions(+), 16 deletions(-) rename Core/src/org/sleuthkit/autopsy/featureaccess/{AccessLimiterUtils.java => UserFeatureAccessUtils.java} (68%) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 88ec63f8ea..16fe5ad187 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -18,7 +18,7 @@ */ package org.sleuthkit.autopsy.casemodule; -import org.sleuthkit.autopsy.featureaccess.AccessLimiterUtils; +import org.sleuthkit.autopsy.featureaccess.UserFeatureAccessUtils; import com.google.common.annotations.Beta; import com.google.common.eventbus.Subscribe; import org.sleuthkit.autopsy.casemodule.multiusercases.CaseNodeData; @@ -1089,7 +1089,7 @@ public class Case { /* * Enable the case-specific actions. */ - CallableSystemAction.get(AddImageAction.class).setEnabled(Case.getCurrentCase().getMetadata().getCaseType() == CaseType.SINGLE_USER_CASE || !AccessLimiterUtils.limitMultiUserAccess()); + CallableSystemAction.get(AddImageAction.class).setEnabled(Case.getCurrentCase().getMetadata().getCaseType() == CaseType.SINGLE_USER_CASE || UserFeatureAccessUtils.canCreateOrModifyMultiUserCases()); CallableSystemAction.get(CaseCloseAction.class).setEnabled(true); CallableSystemAction.get(CaseDetailsAction.class).setEnabled(true); CallableSystemAction.get(DataSourceSummaryAction.class).setEnabled(true); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java index cbe1a87847..76492893b2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java @@ -18,7 +18,7 @@ */ package org.sleuthkit.autopsy.casemodule; -import org.sleuthkit.autopsy.featureaccess.AccessLimiterUtils; +import org.sleuthkit.autopsy.featureaccess.UserFeatureAccessUtils; import java.awt.Component; import org.openide.util.NbBundle; @@ -62,7 +62,7 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener { */ void readSettings() { caseNameTextField.setText(""); - if (UserPreferences.getIsMultiUserModeEnabled() && !AccessLimiterUtils.limitMultiUserAccess()) { + if (UserPreferences.getIsMultiUserModeEnabled() && UserFeatureAccessUtils.canCreateOrModifyMultiUserCases()) { multiUserCaseRadioButton.setEnabled(true); multiUserCaseRadioButton.setSelected(true); } else { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java index 0f83f7fe4c..3827eaf08a 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java @@ -33,7 +33,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; -import org.sleuthkit.autopsy.featureaccess.AccessLimiterUtils; +import org.sleuthkit.autopsy.featureaccess.UserFeatureAccessUtils; import org.sleuthkit.autopsy.casemodule.DeleteDataSourceAction; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; @@ -220,8 +220,8 @@ public class ImageNode extends AbstractContentNode { private Boolean canAddDeleteDataSourceAction() { boolean canAddAction = false; CaseDbSchemaVersionNumber creationVersion = Case.getCurrentCase().getSleuthkitCase().getDBSchemaCreationVersion(); - if ((creationVersion.getMajor() == 8 && creationVersion.getMinor() >= 3) || (creationVersion.getMajor() > 8)) { - canAddAction = Case.getCurrentCase().getCaseType() == Case.CaseType.SINGLE_USER_CASE || !AccessLimiterUtils.limitMultiUserAccess(); + if ((creationVersion.getMajor() == 8 && creationVersion.getMinor() >= 4) || (creationVersion.getMajor() > 8)) { + canAddAction = Case.getCurrentCase().getCaseType() == Case.CaseType.SINGLE_USER_CASE || UserFeatureAccessUtils.canCreateOrModifyMultiUserCases(); } return canAddAction; } diff --git a/Core/src/org/sleuthkit/autopsy/featureaccess/AccessLimiterUtils.java b/Core/src/org/sleuthkit/autopsy/featureaccess/UserFeatureAccessUtils.java similarity index 68% rename from Core/src/org/sleuthkit/autopsy/featureaccess/AccessLimiterUtils.java rename to Core/src/org/sleuthkit/autopsy/featureaccess/UserFeatureAccessUtils.java index 5f352939b5..ce8ac3ea3c 100644 --- a/Core/src/org/sleuthkit/autopsy/featureaccess/AccessLimiterUtils.java +++ b/Core/src/org/sleuthkit/autopsy/featureaccess/UserFeatureAccessUtils.java @@ -23,27 +23,28 @@ import java.nio.file.Paths; import org.sleuthkit.autopsy.coreutils.PlatformUtil; /** - * Class for methods to check if access should be limited to a feature - * + * Check if access to various features is permitted for the current user. */ -final public class AccessLimiterUtils { +final public class UserFeatureAccessUtils { private final static String MULTI_USER_ACCESS_FILE_NAME = "mualimit"; // NON-NLS private final static String MULTI_USER_ACCESS_FILE_PATH = Paths.get(PlatformUtil.getUserConfigDirectory(), MULTI_USER_ACCESS_FILE_NAME).toString(); /** - * Check if privileges regarding multi-user cases should be restricted. + * Indicates whether or not the current user is allowed to create or modify + * (add or delete data sourcess) multi-user cases. * * @return True if privileges should be restricted, false otherwise. */ - public static boolean limitMultiUserAccess() { - return new File(MULTI_USER_ACCESS_FILE_PATH).exists(); + public static boolean canCreateOrModifyMultiUserCases() { + File accessLimitingFile = new File(MULTI_USER_ACCESS_FILE_PATH); + return !accessLimitingFile.exists(); } /** - * Private constructor for a utility class + * Private constructor to prevent instatiation of this utility class. */ - private AccessLimiterUtils() { - //private constructer left empty intentionally + private UserFeatureAccessUtils() { } + }