From af308901c14563697329f0af110e31f412b48fee Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Fri, 6 May 2016 15:31:21 +0800 Subject: [PATCH 01/26] Update SecurityUtils.java --- .../apache/zeppelin/utils/SecurityUtils.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index e7e39f223a6..c38e859efb3 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -17,6 +17,7 @@ package org.apache.zeppelin.utils; import org.apache.shiro.subject.Subject; +import org.apache.shiro.realm.Realm; import org.apache.zeppelin.conf.ZeppelinConfiguration; import java.net.InetAddress; @@ -84,4 +85,37 @@ public static HashSet getRoles() { return roles; } + public static boolean hasUser(String userName) { + + boolean state = false; + + org.apache.shiro.mgt.DefaultSecurityManager securityManager = (DefaultSecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + + List realms = (List) securityManager.getRealms(); + + org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; + Iterator iter = (securityManager.getRealms()).iterator(); + + while (iter.hasNext()) { + + Realm realm = (Realm)iter.next(); + + if (realm instanceof SimpleAccountRealm) { + + simpleRealm = (SimpleAccountRealm) realm; + + } + + } + + if (simpleRealm != null) { + + state = simpleRealm.accountExists(userName); + + } + + return state; + + } + } From 76fb0d0cf5d0108c6c9a47d27499dd9d90b67560 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Fri, 6 May 2016 17:54:20 +0800 Subject: [PATCH 02/26] Update SecurityUtils.java --- .../apache/zeppelin/utils/SecurityUtils.java | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index c38e859efb3..e7e39f223a6 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -17,7 +17,6 @@ package org.apache.zeppelin.utils; import org.apache.shiro.subject.Subject; -import org.apache.shiro.realm.Realm; import org.apache.zeppelin.conf.ZeppelinConfiguration; import java.net.InetAddress; @@ -85,37 +84,4 @@ public static HashSet getRoles() { return roles; } - public static boolean hasUser(String userName) { - - boolean state = false; - - org.apache.shiro.mgt.DefaultSecurityManager securityManager = (DefaultSecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); - - List realms = (List) securityManager.getRealms(); - - org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; - Iterator iter = (securityManager.getRealms()).iterator(); - - while (iter.hasNext()) { - - Realm realm = (Realm)iter.next(); - - if (realm instanceof SimpleAccountRealm) { - - simpleRealm = (SimpleAccountRealm) realm; - - } - - } - - if (simpleRealm != null) { - - state = simpleRealm.accountExists(userName); - - } - - return state; - - } - } From 9f3b850808daf51fea3c52e2f7b4f6833dbd432a Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 16:49:07 +0800 Subject: [PATCH 03/26] Update SecurityUtils.java --- .../apache/zeppelin/utils/SecurityUtils.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index e7e39f223a6..5d9b27370cf 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -17,6 +17,7 @@ package org.apache.zeppelin.utils; import org.apache.shiro.subject.Subject; +import org.apache.shiro.realm.Realm; import org.apache.zeppelin.conf.ZeppelinConfiguration; import java.net.InetAddress; @@ -83,5 +84,38 @@ public static HashSet getRoles() { } return roles; } + + public static boolean hasUser(String userName) { + + boolean state = false; + + org.apache.shiro.mgt.DefaultSecurityManager securityManager = (DefaultSecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + + List realms = (List) securityManager.getRealms(); + + org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; + Iterator iter = (securityManager.getRealms()).iterator(); + + while (iter.hasNext()) { + + Realm realm = (Realm)iter.next(); + + if (realm instanceof SimpleAccountRealm) { + + simpleRealm = (SimpleAccountRealm) realm; + + } + + } + + if (simpleRealm != null) { + + state = simpleRealm.accountExists(userName); + + } + + return state; + + } } From d91c933c3da6cf598e06d25048fb62b07e081b6b Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 16:56:35 +0800 Subject: [PATCH 04/26] Update NotebookRestApi.java --- .../apache/zeppelin/rest/NotebookRestApi.java | 89 +++++++++++++++++-- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 2796500ac86..e598c6ad7b8 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -50,6 +50,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.GsonBuilder; @@ -99,6 +100,10 @@ String ownerPermissionError(Set current, "Allowed owners: " + allowed.toString() + "\n\n" + "User belongs to: " + current.toString(); } + + String userNamePermissionError(String userName) throws IOException { + return "User: " + userName + " not Exists,Please Check !"; + } /** * set note authorization information @@ -119,6 +124,14 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re permMap.get("readers"), permMap.get("writers") ); + + String notExistsUserName = checkUser(permMap); + + if (!"".equals(notExistsUserName)) { + + return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(notExistsUserName)).build(); + + } HashSet userAndRoles = new HashSet(); userAndRoles.add(principal); @@ -127,9 +140,29 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re return new JsonResponse<>(Status.FORBIDDEN, ownerPermissionError(userAndRoles, notebookAuthorization.getOwners(noteId))).build(); } - notebookAuthorization.setOwners(noteId, permMap.get("owners")); - notebookAuthorization.setReaders(noteId, permMap.get("readers")); - notebookAuthorization.setWriters(noteId, permMap.get("writers")); + + HashSet readers = permMap.get("readers"); + HashSet owners = permMap.get("owners"); + HashSet writers = permMap.get("writers"); + // Set readers, if writers and owners is empty -> set to user requesting the change + if (readers != null && !readers.isEmpty()) { + if (writers.isEmpty()) { + writers = Sets.newHashSet(SecurityUtils.getPrincipal()); + } + if (owners.isEmpty()) { + owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + } + } + // Set writers, if owners is empty -> set to user requesting the change + if ( writers != null && !writers.isEmpty()) { + if (owners.isEmpty()) { + owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + } + } + + notebookAuthorization.setReaders(noteId, readers); + notebookAuthorization.setWriters(noteId, writers); + notebookAuthorization.setOwners(noteId, owners); LOG.debug("After set permissions {} {} {}", notebookAuthorization.getOwners(noteId), notebookAuthorization.getReaders(noteId), @@ -138,6 +171,37 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re notebookServer.broadcastNote(note); return new JsonResponse<>(Status.OK).build(); } + + private static String checkUser(HashMap permMap) { + + String userName = ""; + + HashSet owners = permMap.get("owners"); + HashSet readers = permMap.get("readers"); + HashSet writers = permMap.get("writers"); + + HashSet users = new HashSet(); + users.addAll(owners); + users.addAll(readers); + users.addAll(writers); + + for (String tmpUser : users) { + + if (!"*".equals(tmpUser)) { + if (!org.apache.zeppelin.utils.SecurityUtils.hasUser(tmpUser)) { + + userName = tmpUser; + + break; + + } + } + + } + + return userName; + + } /** * bind a setting to note @@ -644,14 +708,29 @@ public Response getCronJob(@PathParam("notebookId") String notebookId) throws } /** - * Search for a Notes + * Search for a Notes with permissions */ @GET @Path("search") public Response search(@QueryParam("q") String queryTerm) { LOG.info("Searching notebooks for: {}", queryTerm); + String principal = SecurityUtils.getPrincipal(); + HashSet roles = SecurityUtils.getRoles(); + HashSet userAndRoles = new HashSet(); + userAndRoles.add(principal); + userAndRoles.addAll(roles); List> notebooksFound = notebookIndex.query(queryTerm); - LOG.info("{} notbooks found", notebooksFound.size()); + for (int i = 0; i < notebooksFound.size(); i++) { + String[] Id = notebooksFound.get(i).get("id").split("/", 2); + String noteId = Id[0]; + if (!notebookAuthorization.isOwner(noteId, userAndRoles) && + !notebookAuthorization.isReader(noteId, userAndRoles) && + !notebookAuthorization.isWriter(noteId, userAndRoles)) { + notebooksFound.remove(i); + i--; + } + } + LOG.info("{} notebooks found", notebooksFound.size()); return new JsonResponse<>(Status.OK, notebooksFound).build(); } From 7f3c69057b45fe3d249422c64f20eb03e8d2ba95 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 19:27:07 +0800 Subject: [PATCH 05/26] Update SecurityUtils.java --- .../apache/zeppelin/utils/SecurityUtils.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index 5d9b27370cf..effb0ba51c7 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -18,6 +18,8 @@ import org.apache.shiro.subject.Subject; import org.apache.shiro.realm.Realm; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.mgt.SecurityManager; import org.apache.zeppelin.conf.ZeppelinConfiguration; import java.net.InetAddress; @@ -89,7 +91,18 @@ public static boolean hasUser(String userName) { boolean state = false; - org.apache.shiro.mgt.DefaultSecurityManager securityManager = (DefaultSecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + SecurityManager securityManager = (SecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + + DefaultSecurityManager defSecurityManager = null; + if (securityManager instanceof DefaultSecurityManager) { + + defSecurityManager = (DefaultSecurityManager) securityManager; + + } else { + + return true; + + } List realms = (List) securityManager.getRealms(); @@ -98,7 +111,7 @@ public static boolean hasUser(String userName) { while (iter.hasNext()) { - Realm realm = (Realm)iter.next(); + Realm realm = (Realm) iter.next(); if (realm instanceof SimpleAccountRealm) { From 51399348667fa1695643c4c9692e7a7c9fd11e13 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 21:09:28 +0800 Subject: [PATCH 06/26] Update SecurityUtils.java --- .../main/java/org/apache/zeppelin/utils/SecurityUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index effb0ba51c7..fadd462f343 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -91,12 +91,12 @@ public static boolean hasUser(String userName) { boolean state = false; - SecurityManager securityManager = (SecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + SecurityManager scManager = (SecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); DefaultSecurityManager defSecurityManager = null; - if (securityManager instanceof DefaultSecurityManager) { + if (scManager instanceof DefaultSecurityManager) { - defSecurityManager = (DefaultSecurityManager) securityManager; + defSecurityManager = (DefaultSecurityManager) scManager; } else { From 245f55e7f25800a84bc2c46cc13e0e4324b86b7f Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 21:10:26 +0800 Subject: [PATCH 07/26] Update SecurityUtils.java --- .../main/java/org/apache/zeppelin/utils/SecurityUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index fadd462f343..675a3a71455 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -91,12 +91,12 @@ public static boolean hasUser(String userName) { boolean state = false; - SecurityManager scManager = (SecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); + SecurityManager sm = (SecurityManager) org.apache.shiro.SecurityUtils.getSecurityManager(); DefaultSecurityManager defSecurityManager = null; - if (scManager instanceof DefaultSecurityManager) { + if (sm instanceof DefaultSecurityManager) { - defSecurityManager = (DefaultSecurityManager) scManager; + defSecurityManager = (DefaultSecurityManager) sm; } else { From 86476e68000ac8f554b5a597e5e8bfa4162731d8 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 21:11:34 +0800 Subject: [PATCH 08/26] Update NotebookRestApi.java --- .../main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index e598c6ad7b8..991754e49cc 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -125,11 +125,11 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re permMap.get("writers") ); - String notExistsUserName = checkUser(permMap); + String noExistUser = checkUser(permMap); - if (!"".equals(notExistsUserName)) { + if (!"".equals(noExistUser)) { - return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(notExistsUserName)).build(); + return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(noExistUser)).build(); } From 7b36eef7104129ef4f2f0a21d81e0fbddcbc4049 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 22:20:44 +0800 Subject: [PATCH 09/26] Update SecurityUtils.java --- .../main/java/org/apache/zeppelin/utils/SecurityUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index 675a3a71455..d63a96c827b 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -18,6 +18,7 @@ import org.apache.shiro.subject.Subject; import org.apache.shiro.realm.Realm; +import org.apache.shiro.realm.SimpleAccountRealm; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.mgt.SecurityManager; import org.apache.zeppelin.conf.ZeppelinConfiguration; @@ -28,6 +29,8 @@ import java.net.UnknownHostException; import java.util.Arrays; import java.util.HashSet; +import java.util.Iterator; +import java.util.List; /** * Tools for securing Zeppelin @@ -104,7 +107,7 @@ public static boolean hasUser(String userName) { } - List realms = (List) securityManager.getRealms(); + List realms = (List) defSecurityManager.getRealms(); org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; Iterator iter = (securityManager.getRealms()).iterator(); From ff084372f45a9910b2c26f3408d41fba66c5457b Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Wed, 11 May 2016 22:21:20 +0800 Subject: [PATCH 10/26] Update SecurityUtils.java --- .../src/main/java/org/apache/zeppelin/utils/SecurityUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index d63a96c827b..1eaaf19302c 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -119,6 +119,8 @@ public static boolean hasUser(String userName) { if (realm instanceof SimpleAccountRealm) { simpleRealm = (SimpleAccountRealm) realm; + + break; } From 7e8310c3dce26a4267a1bd65fc89a4fefbdafc6e Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 12 May 2016 09:09:08 +0800 Subject: [PATCH 11/26] Update SecurityUtils.java --- .../src/main/java/org/apache/zeppelin/utils/SecurityUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index 1eaaf19302c..de9d86bf806 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -110,7 +110,7 @@ public static boolean hasUser(String userName) { List realms = (List) defSecurityManager.getRealms(); org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; - Iterator iter = (securityManager.getRealms()).iterator(); + Iterator iter = (realms).iterator(); while (iter.hasNext()) { From 1112d0acb7e64eec3a61ec424ad13c7ceb33ba3c Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 12 May 2016 09:12:57 +0800 Subject: [PATCH 12/26] Update SecurityUtils.java --- .../src/main/java/org/apache/zeppelin/utils/SecurityUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java index de9d86bf806..355fafa199e 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java @@ -110,7 +110,7 @@ public static boolean hasUser(String userName) { List realms = (List) defSecurityManager.getRealms(); org.apache.shiro.realm.SimpleAccountRealm simpleRealm = null; - Iterator iter = (realms).iterator(); + Iterator iter = realms.iterator(); while (iter.hasNext()) { From 97dfad769e1316673e8d987441a9439e34b1fbdb Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 12 May 2016 14:53:20 +0800 Subject: [PATCH 13/26] Update NotebookRestApi.java --- .../apache/zeppelin/rest/NotebookRestApi.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 991754e49cc..36d2e54ef6a 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -100,10 +100,6 @@ String ownerPermissionError(Set current, "Allowed owners: " + allowed.toString() + "\n\n" + "User belongs to: " + current.toString(); } - - String userNamePermissionError(String userName) throws IOException { - return "User: " + userName + " not Exists,Please Check !"; - } /** * set note authorization information @@ -129,7 +125,9 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re if (!"".equals(noExistUser)) { - return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(noExistUser)).build(); + String message = "User: " + userName + " not Exists,Please Check !"; + + return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(message)).build(); } @@ -187,14 +185,12 @@ private static String checkUser(HashMap permMap) { for (String tmpUser : users) { - if (!"*".equals(tmpUser)) { - if (!org.apache.zeppelin.utils.SecurityUtils.hasUser(tmpUser)) { + if (!org.apache.zeppelin.utils.SecurityUtils.hasUser(tmpUser)) { - userName = tmpUser; + userName = tmpUser; - break; + break; - } } } From 978379cb2c4e630396c36bb9668d187e0e4495b5 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 12 May 2016 15:32:48 +0800 Subject: [PATCH 14/26] Update NotebookRestApi.java --- .../src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 36d2e54ef6a..d618f4074f8 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -127,7 +127,7 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re String message = "User: " + userName + " not Exists,Please Check !"; - return new JsonResponse<>(Status.FORBIDDEN, userNamePermissionError(message)).build(); + return new JsonResponse<>(Status.FORBIDDEN, message).build(); } From d427773af9c647c6a6fea209beb8ceb13318ccdd Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 12 May 2016 19:15:08 +0800 Subject: [PATCH 15/26] Update NotebookRestApi.java --- .../src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index d618f4074f8..c4c378c1cfd 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -125,7 +125,7 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re if (!"".equals(noExistUser)) { - String message = "User: " + userName + " not Exists,Please Check !"; + String message = "User: " + noExistUser + " not Exists,Please Check !"; return new JsonResponse<>(Status.FORBIDDEN, message).build(); From f81305858f0e7c8f2fde5796babb5853549cfd8f Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 12:01:02 +0800 Subject: [PATCH 16/26] Update NotebookRestApi.java --- .../apache/zeppelin/rest/NotebookRestApi.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index c4c378c1cfd..0381ee3bf05 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -142,19 +142,16 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re HashSet readers = permMap.get("readers"); HashSet owners = permMap.get("owners"); HashSet writers = permMap.get("writers"); - // Set readers, if writers and owners is empty -> set to user requesting the change - if (readers != null && !readers.isEmpty()) { - if (writers.isEmpty()) { - writers = Sets.newHashSet(SecurityUtils.getPrincipal()); - } + String principal = SecurityUtils.getPrincipal(); + if (!"anonymous".equals(princial)) { if (owners.isEmpty()) { - owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + owners = Sets.newHashSet(principal); } - } - // Set writers, if owners is empty -> set to user requesting the change - if ( writers != null && !writers.isEmpty()) { - if (owners.isEmpty()) { - owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + // Set writers, if owners is empty -> set to user requesting the change + if (readers != null && !readers.isEmpty()) { + if (writers.isEmpty()) { + writers = Sets.newHashSet(principal); + } } } From 425ec360771d64591103f21f896b0e9d1680103f Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:09:40 +0800 Subject: [PATCH 17/26] Update NotebookAuthorization.java --- .../notebook/NotebookAuthorization.java | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java index 7efa46d715b..53727eb49c9 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java @@ -110,16 +110,10 @@ public void setOwners(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet(entities)); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet()); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("owners"); - if (existingEntities == null) { - noteAuthInfo.put("owners", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("owners", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -130,16 +124,10 @@ public void setReaders(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet(entities)); noteAuthInfo.put("writers", new LinkedHashSet()); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("readers"); - if (existingEntities == null) { - noteAuthInfo.put("readers", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("readers", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -150,18 +138,31 @@ public void setWriters(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet(entities)); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("writers"); - if (existingEntities == null) { - noteAuthInfo.put("writers", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("writers", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); } + + public boolean checkNoteUser(String noteId, HashSet userAndRoles) { + boolean state = true; + Map> noteAuthInfo = authInfo.get(noteId); + Set entities = null; + if (noteAuthInfo == null) { + entities = new HashSet(); + } else { + entities.addAll(noteAuthInfo.get("owners")); + entities.addAll(noteAuthInfo.get("readers")); + entities.addAll(noteAuthInfo.get("writers")); + } + + if (!entities.isEmpty()) { + state = isReader(noteId, entities); + } + + return state; + } public Set getOwners(String noteId) { Map> noteAuthInfo = authInfo.get(noteId); From 882ddf4f4a72ef6f1c7df7909047fdf88b76f182 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:11:08 +0800 Subject: [PATCH 18/26] Update NotebookRestApi.java --- .../main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 0381ee3bf05..5ba936f51b6 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -716,9 +716,7 @@ public Response search(@QueryParam("q") String queryTerm) { for (int i = 0; i < notebooksFound.size(); i++) { String[] Id = notebooksFound.get(i).get("id").split("/", 2); String noteId = Id[0]; - if (!notebookAuthorization.isOwner(noteId, userAndRoles) && - !notebookAuthorization.isReader(noteId, userAndRoles) && - !notebookAuthorization.isWriter(noteId, userAndRoles)) { + if (!notebookAuthorization.checkNoteUser(noteId, userAndRoles)) { notebooksFound.remove(i); i--; } From 0b1bcd8e535341282b9058de2bc51a86f239f862 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:26:24 +0800 Subject: [PATCH 19/26] Update NotebookAuthorization.java --- .../notebook/NotebookAuthorization.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java index 53727eb49c9..4e8df0bd85c 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java @@ -110,7 +110,15 @@ public void setOwners(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet(entities)); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet()); + authInfo.put(noteId, noteAuthInfo); } else { + Set existingEntities = noteAuthInfo.get("owners"); + if (existingEntities == null) { + noteAuthInfo.put("owners", new LinkedHashSet(entities)); + } else { + existingEntities.clear(); + existingEntities.addAll(entities); + } noteAuthInfo.put("owners", new LinkedHashSet(entities)); } authInfo.put(noteId, noteAuthInfo); @@ -124,7 +132,15 @@ public void setReaders(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet(entities)); noteAuthInfo.put("writers", new LinkedHashSet()); + authInfo.put(noteId, noteAuthInfo); } else { + Set existingEntities = noteAuthInfo.get("readers"); + if (existingEntities == null) { + noteAuthInfo.put("readers", new LinkedHashSet(entities)); + } else { + existingEntities.clear(); + existingEntities.addAll(entities); + } noteAuthInfo.put("readers", new LinkedHashSet(entities)); } authInfo.put(noteId, noteAuthInfo); @@ -138,7 +154,15 @@ public void setWriters(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet(entities)); + authInfo.put(noteId, noteAuthInfo); } else { + Set existingEntities = noteAuthInfo.get("writers"); + if (existingEntities == null) { + noteAuthInfo.put("writers", new LinkedHashSet(entities)); + } else { + existingEntities.clear(); + existingEntities.addAll(entities); + } noteAuthInfo.put("writers", new LinkedHashSet(entities)); } authInfo.put(noteId, noteAuthInfo); From 311db8cd6abfb6292b765b5090633a85bb833e15 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:28:02 +0800 Subject: [PATCH 20/26] Update NotebookAuthorization.java --- .../org/apache/zeppelin/notebook/NotebookAuthorization.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java index 4e8df0bd85c..5d97c23ad53 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java @@ -134,7 +134,7 @@ public void setReaders(String noteId, Set entities) { noteAuthInfo.put("writers", new LinkedHashSet()); authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("readers"); + Set existingEntities = noteAuthInfo.get("readers"); if (existingEntities == null) { noteAuthInfo.put("readers", new LinkedHashSet(entities)); } else { From 51ca536a409f226e2884ba3498e8e55370c35449 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:31:40 +0800 Subject: [PATCH 21/26] Update NotebookAuthorization.java --- .../org/apache/zeppelin/notebook/NotebookAuthorization.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java index 5d97c23ad53..047264ed319 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java @@ -119,9 +119,7 @@ public void setOwners(String noteId, Set entities) { existingEntities.clear(); existingEntities.addAll(entities); } - noteAuthInfo.put("owners", new LinkedHashSet(entities)); } - authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -141,9 +139,7 @@ public void setReaders(String noteId, Set entities) { existingEntities.clear(); existingEntities.addAll(entities); } - noteAuthInfo.put("readers", new LinkedHashSet(entities)); } - authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -163,9 +159,7 @@ public void setWriters(String noteId, Set entities) { existingEntities.clear(); existingEntities.addAll(entities); } - noteAuthInfo.put("writers", new LinkedHashSet(entities)); } - authInfo.put(noteId, noteAuthInfo); saveToFile(); } From 4bd8e5f7233f18df60fa2432c143b120d6804c20 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 13:42:34 +0800 Subject: [PATCH 22/26] Update NotebookRestApi.java --- .../src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 5ba936f51b6..b1f17174119 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -701,7 +701,7 @@ public Response getCronJob(@PathParam("notebookId") String notebookId) throws } /** - * Search for a Notes with permissions + * Search for a Notes */ @GET @Path("search") From 6739605add354aa6afc829820098b7b07f7e1af7 Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 17:17:13 +0800 Subject: [PATCH 23/26] Update NotebookRestApi.java --- .../main/java/org/apache/zeppelin/rest/NotebookRestApi.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index b1f17174119..33ea2129fa6 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -716,7 +716,9 @@ public Response search(@QueryParam("q") String queryTerm) { for (int i = 0; i < notebooksFound.size(); i++) { String[] Id = notebooksFound.get(i).get("id").split("/", 2); String noteId = Id[0]; - if (!notebookAuthorization.checkNoteUser(noteId, userAndRoles)) { + if (!notebookAuthorization.isOwner(noteId, userAndRoles) && + !notebookAuthorization.isReader(noteId, userAndRoles) && + !notebookAuthorization.isWriter(noteId, userAndRoles)) { notebooksFound.remove(i); i--; } From 8db89489b77160189730cfc28be773faa44ddeed Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 18:23:54 +0800 Subject: [PATCH 24/26] Update NotebookRestApi.java --- .../apache/zeppelin/rest/NotebookRestApi.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 33ea2129fa6..dcb22e02a0b 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -142,18 +142,22 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re HashSet readers = permMap.get("readers"); HashSet owners = permMap.get("owners"); HashSet writers = permMap.get("writers"); - String principal = SecurityUtils.getPrincipal(); - if (!"anonymous".equals(princial)) { + // Set readers, if writers and owners is empty -> set to user requesting the change + if (readers != null && !readers.isEmpty()) { + if (writers.isEmpty()) { + writers = Sets.newHashSet(SecurityUtils.getPrincipal()); + } if (owners.isEmpty()) { - owners = Sets.newHashSet(principal); + owners = Sets.newHashSet(SecurityUtils.getPrincipal()); } - // Set writers, if owners is empty -> set to user requesting the change - if (readers != null && !readers.isEmpty()) { - if (writers.isEmpty()) { - writers = Sets.newHashSet(principal); - } + } + // Set writers, if owners is empty -> set to user requesting the change + if ( writers != null && !writers.isEmpty()) { + if (owners.isEmpty()) { + owners = Sets.newHashSet(SecurityUtils.getPrincipal()); } } + notebookAuthorization.setReaders(noteId, readers); notebookAuthorization.setWriters(noteId, writers); From d6348c76f03b52302952f38541d0845072a00cdd Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 18:26:04 +0800 Subject: [PATCH 25/26] Update NotebookRestApi.java --- .../apache/zeppelin/rest/NotebookRestApi.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index dcb22e02a0b..be425e55c77 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -142,21 +142,18 @@ public Response putNotePermissions(@PathParam("noteId") String noteId, String re HashSet readers = permMap.get("readers"); HashSet owners = permMap.get("owners"); HashSet writers = permMap.get("writers"); - // Set readers, if writers and owners is empty -> set to user requesting the change - if (readers != null && !readers.isEmpty()) { - if (writers.isEmpty()) { - writers = Sets.newHashSet(SecurityUtils.getPrincipal()); - } + String princial = SecurityUtils.getPrincipal(); + if (!"anonymous".equals(princial)) { if (owners.isEmpty()) { - owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + owners = Sets.newHashSet(principal); } - } - // Set writers, if owners is empty -> set to user requesting the change - if ( writers != null && !writers.isEmpty()) { - if (owners.isEmpty()) { - owners = Sets.newHashSet(SecurityUtils.getPrincipal()); + // Set writers, if owners is empty -> set to user requesting the change + if (readers != null && !readers.isEmpty()) { + if (writers.isEmpty()) { + writers = Sets.newHashSet(principal); + } } - } + } notebookAuthorization.setReaders(noteId, readers); @@ -720,9 +717,7 @@ public Response search(@QueryParam("q") String queryTerm) { for (int i = 0; i < notebooksFound.size(); i++) { String[] Id = notebooksFound.get(i).get("id").split("/", 2); String noteId = Id[0]; - if (!notebookAuthorization.isOwner(noteId, userAndRoles) && - !notebookAuthorization.isReader(noteId, userAndRoles) && - !notebookAuthorization.isWriter(noteId, userAndRoles)) { + if (!notebookAuthorization.checkNoteUser(noteId, userAndRoles)) { notebooksFound.remove(i); i--; } From fdb581f0cba29ef88eccef544e673786774ae02a Mon Sep 17 00:00:00 2001 From: wind0727 <82651730@qq.com> Date: Thu, 19 May 2016 18:28:27 +0800 Subject: [PATCH 26/26] Update NotebookAuthorization.java --- .../notebook/NotebookAuthorization.java | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java index 047264ed319..53727eb49c9 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NotebookAuthorization.java @@ -110,16 +110,10 @@ public void setOwners(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet(entities)); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet()); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("owners"); - if (existingEntities == null) { - noteAuthInfo.put("owners", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("owners", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -130,16 +124,10 @@ public void setReaders(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet(entities)); noteAuthInfo.put("writers", new LinkedHashSet()); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("readers"); - if (existingEntities == null) { - noteAuthInfo.put("readers", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("readers", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); } @@ -150,16 +138,10 @@ public void setWriters(String noteId, Set entities) { noteAuthInfo.put("owners", new LinkedHashSet()); noteAuthInfo.put("readers", new LinkedHashSet()); noteAuthInfo.put("writers", new LinkedHashSet(entities)); - authInfo.put(noteId, noteAuthInfo); } else { - Set existingEntities = noteAuthInfo.get("writers"); - if (existingEntities == null) { - noteAuthInfo.put("writers", new LinkedHashSet(entities)); - } else { - existingEntities.clear(); - existingEntities.addAll(entities); - } + noteAuthInfo.put("writers", new LinkedHashSet(entities)); } + authInfo.put(noteId, noteAuthInfo); saveToFile(); }