You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2016/07/14 15:36:30 UTC

incubator-geode git commit: GEODE-1571: fix permission needed for remove data command

Repository: incubator-geode
Updated Branches:
  refs/heads/develop 4a0de723c -> 1318a4aeb


GEODE-1571: fix permission needed for remove data command


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/1318a4ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/1318a4ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/1318a4ae

Branch: refs/heads/develop
Commit: 1318a4aebda46b4aad8aadb1e00804db33017bc9
Parents: 4a0de72
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Wed Jul 13 14:56:42 2016 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Thu Jul 14 08:35:52 2016 -0700

----------------------------------------------------------------------
 .../management/internal/cli/commands/DataCommands.java  | 12 +++++++++---
 .../management/internal/security/TestCommand.java       |  2 +-
 2 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1318a4ae/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DataCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DataCommands.java b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DataCommands.java
index b6ee8b5..89dce97 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DataCommands.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DataCommands.java
@@ -30,6 +30,8 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.apache.geode.security.GeodePermission.Operation;
+import org.apache.geode.security.GeodePermission.Resource;
 import org.springframework.shell.core.CommandMarker;
 import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
 import org.springframework.shell.core.annotation.CliCommand;
@@ -77,8 +79,6 @@ import com.gemstone.gemfire.management.internal.cli.result.ResultBuilder;
 import com.gemstone.gemfire.management.internal.cli.result.TabularResultData;
 import com.gemstone.gemfire.management.internal.cli.shell.Gfsh;
 import com.gemstone.gemfire.management.internal.security.ResourceOperation;
-import org.apache.geode.security.GeodePermission.Operation;
-import org.apache.geode.security.GeodePermission.Resource;
 
 /**
  * 
@@ -1130,7 +1130,6 @@ public class DataCommands implements CommandMarker {
       CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION
   })
   @CliCommand(value = { CliStrings.REMOVE }, help = CliStrings.REMOVE__HELP)
-  @ResourceOperation(resource=Resource.DATA, operation = Operation.MANAGE)
   public Result remove(
       @CliOption(key = { CliStrings.REMOVE__KEY }, help = CliStrings.REMOVE__KEY__HELP) String key,
       @CliOption(key = { CliStrings.REMOVE__REGION }, mandatory = true, help = CliStrings.REMOVE__REGION__HELP, optionContext = ConverterHint.REGIONPATH) String regionPath,
@@ -1151,6 +1150,13 @@ public class DataCommands implements CommandMarker {
               CliStrings.REMOVE__MSG__KEY_EMPTY, false));
     }
 
+    if(removeAllKeys){
+      GeodeSecurityUtil.authorizeRegionWrite(regionPath);
+    }
+    else {
+      GeodeSecurityUtil.authorizeRegionWrite(regionPath, key);
+    }
+
     @SuppressWarnings("rawtypes")
     Region region = cache.getRegion(regionPath);
     DataCommandFunction removefn = new DataCommandFunction();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1318a4ae/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/TestCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/TestCommand.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/TestCommand.java
index d6bae35..d3d14d5 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/TestCommand.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/TestCommand.java
@@ -102,7 +102,7 @@ public class TestCommand {
     createTestCommand("import data --region=RegionA --file=import.txt --member=importMember", regionAWrite);
     createTestCommand("put --key=key1 --value=value1 --region=RegionA", regionAWrite);
     createTestCommand("get --key=key1 --region=RegionA", regionARead);
-    createTestCommand("remove --region=RegionA", dataManage);
+    createTestCommand("remove --region=RegionA --key=key1", regionAWrite);
     createTestCommand("query --query='SELECT * FROM /RegionA'", regionARead);
     createTestCommand("locate entry --key=k1 --region=RegionA", regionARead);