Skip to content

Commit 9240971

Browse files
committed
Avoid storing PHI to preferences
Signed-off-by: Mitch Gaffigan <mitch.gaffigan@comcast.net>
1 parent cab7392 commit 9240971

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowserRecentFilterStore.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@
1111

1212
import java.util.ArrayList;
1313
import java.util.List;
14-
import java.util.prefs.Preferences;
14+
import java.util.Map;
15+
import java.util.concurrent.ConcurrentHashMap;
1516

1617
import org.apache.commons.lang3.StringUtils;
1718

18-
import com.mirth.connect.client.ui.Mirth;
1919
import com.mirth.connect.model.converters.ObjectXMLSerializer;
2020
import com.mirth.connect.model.filters.MessageFilter;
2121

2222
class MessageBrowserRecentFilterStore {
2323
private static final int MAX_RECENT_FILTERS = 10;
2424
private static final String RECENT_FILTERS_PREFERENCE_PREFIX = "messageBrowserRecentFilters.";
25+
// TODO: Replace with a cross-session time-limited encrypted store
26+
// (In-memory assuming text searches represent PHI)
27+
private static final Map<String, String> RECENT_FILTERS_BY_CHANNEL = new ConcurrentHashMap<>();
2528

2629
private final String prefKey;
2730

@@ -31,7 +34,7 @@ public MessageBrowserRecentFilterStore(String channelId) {
3134

3235
public List<MessageFilter> getRecentFilters() {
3336
try {
34-
String serialized = Preferences.userNodeForPackage(Mirth.class).get(prefKey, "");
37+
String serialized = RECENT_FILTERS_BY_CHANNEL.getOrDefault(prefKey, "");
3538
if (StringUtils.isBlank(serialized)) return List.of();
3639

3740
var result = ObjectXMLSerializer.getInstance().deserialize(serialized, List.class);
@@ -62,8 +65,7 @@ public void addRecentFilter(MessageFilter filter) {
6265
}
6366

6467
try {
65-
var preferences = Preferences.userNodeForPackage(Mirth.class);
66-
preferences.put(prefKey, ObjectXMLSerializer.getInstance().serialize(filters));
68+
RECENT_FILTERS_BY_CHANNEL.put(prefKey, ObjectXMLSerializer.getInstance().serialize(filters));
6769
} catch (Exception e) {
6870
e.printStackTrace();
6971
}

0 commit comments

Comments
 (0)