From 0ab8f0d76dc0f93ca07ab93039177a6fd5696915 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 12 Sep 2019 17:27:26 -0400 Subject: [PATCH 1/3] 5338 - initial code to optionally limit multi-user access --- .../autopsy/casemodule/AccessLimiter.java | 49 +++++++++++++++++++ .../sleuthkit/autopsy/casemodule/Case.java | 2 +- .../casemodule/NewCaseVisualPanel1.java | 2 +- .../dsp/Bundle.properties-MERGED | 4 +- 4 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java b/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java new file mode 100644 index 0000000000..9a84ac4657 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java @@ -0,0 +1,49 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule; + +import java.io.File; +import java.nio.file.Paths; +import org.sleuthkit.autopsy.coreutils.PlatformUtil; + +/** + * Class for methods to check if access should be limited to a feature + * + */ +final class AccessLimiter { + + 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. + * + * @return True if privileges should be restricted, false otherwise. + */ + static boolean limitMultiUserAccess() { + return new File(MULTI_USER_ACCESS_FILE_PATH).exists(); + } + + /** + * Private constructor for a utility class + */ + private AccessLimiter() { + //private constructer left empty intentionally + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index f455a0c9fb..2fb17fdd36 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -1049,7 +1049,7 @@ public class Case { /* * Enable the case-specific actions. */ - CallableSystemAction.get(AddImageAction.class).setEnabled(true); + CallableSystemAction.get(AddImageAction.class).setEnabled(Case.getCurrentCase().getMetadata().getCaseType() == CaseType.SINGLE_USER_CASE || !AccessLimiter.limitMultiUserAccess()); 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 aedbb3671f..f49f91a490 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java @@ -61,7 +61,7 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener { */ void readSettings() { caseNameTextField.setText(""); - if (UserPreferences.getIsMultiUserModeEnabled()) { + if (UserPreferences.getIsMultiUserModeEnabled() && !AccessLimiter.limitMultiUserAccess()) { multiUserCaseRadioButton.setEnabled(true); multiUserCaseRadioButton.setSelected(true); } else { diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED index 6636cdda9f..21ed945bd2 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED @@ -4,11 +4,11 @@ # {0} - file number # {1} - total files -AddLogicalImageTask.addingExtractedFile=Adding extracted file ({0}/{1}) +AddLogicalImageTask.addingExtractedFile=Adding extracted files ({0}/{1}) AddLogicalImageTask.addingExtractedFiles=Adding extracted files # {0} - file number # {1} - total files -AddLogicalImageTask.addingInterestingFile=Adding interesting file ({0}/{1}) +AddLogicalImageTask.addingInterestingFile=Adding interesting files ({0}/{1}) AddLogicalImageTask.addingInterestingFiles=Adding search results as interesting files # {0} - file AddLogicalImageTask.addingToReport=Adding {0} to report From 861a47fe6a1acb128421670d6435ff947263eca5 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 12 Sep 2019 17:42:17 -0400 Subject: [PATCH 2/3] 5338 undo accidental commit of merged file unrelated to this PR --- .../autopsy/logicalimager/dsp/Bundle.properties-MERGED | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED index 21ed945bd2..6636cdda9f 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle.properties-MERGED @@ -4,11 +4,11 @@ # {0} - file number # {1} - total files -AddLogicalImageTask.addingExtractedFile=Adding extracted files ({0}/{1}) +AddLogicalImageTask.addingExtractedFile=Adding extracted file ({0}/{1}) AddLogicalImageTask.addingExtractedFiles=Adding extracted files # {0} - file number # {1} - total files -AddLogicalImageTask.addingInterestingFile=Adding interesting files ({0}/{1}) +AddLogicalImageTask.addingInterestingFile=Adding interesting file ({0}/{1}) AddLogicalImageTask.addingInterestingFiles=Adding search results as interesting files # {0} - file AddLogicalImageTask.addingToReport=Adding {0} to report From e41e53b478c422a8c280fdb93a8c9a672d131d42 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Tue, 17 Sep 2019 15:56:32 -0400 Subject: [PATCH 3/3] 5338 rename AccessLimiter class to satisy codacy complaint --- .../{AccessLimiter.java => AccessLimiterUtils.java} | 4 ++-- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 2 +- .../org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename Core/src/org/sleuthkit/autopsy/casemodule/{AccessLimiter.java => AccessLimiterUtils.java} (95%) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java b/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiterUtils.java similarity index 95% rename from Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java rename to Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiterUtils.java index 9a84ac4657..3b2a201e07 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiter.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AccessLimiterUtils.java @@ -26,7 +26,7 @@ import org.sleuthkit.autopsy.coreutils.PlatformUtil; * Class for methods to check if access should be limited to a feature * */ -final class AccessLimiter { +final class AccessLimiterUtils { 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(); @@ -43,7 +43,7 @@ final class AccessLimiter { /** * Private constructor for a utility class */ - private AccessLimiter() { + private AccessLimiterUtils() { //private constructer left empty intentionally } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 2fb17fdd36..0a4586dd42 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -1049,7 +1049,7 @@ public class Case { /* * Enable the case-specific actions. */ - CallableSystemAction.get(AddImageAction.class).setEnabled(Case.getCurrentCase().getMetadata().getCaseType() == CaseType.SINGLE_USER_CASE || !AccessLimiter.limitMultiUserAccess()); + CallableSystemAction.get(AddImageAction.class).setEnabled(Case.getCurrentCase().getMetadata().getCaseType() == CaseType.SINGLE_USER_CASE || !AccessLimiterUtils.limitMultiUserAccess()); 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 f49f91a490..789913d78a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java @@ -61,7 +61,7 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener { */ void readSettings() { caseNameTextField.setText(""); - if (UserPreferences.getIsMultiUserModeEnabled() && !AccessLimiter.limitMultiUserAccess()) { + if (UserPreferences.getIsMultiUserModeEnabled() && !AccessLimiterUtils.limitMultiUserAccess()) { multiUserCaseRadioButton.setEnabled(true); multiUserCaseRadioButton.setSelected(true); } else {