This is an automated email from the ASF dual-hosted git repository.

rmani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new a69820b  RANGER-2437:Update grant/revoke error message to provide more 
information about the principal type
a69820b is described below

commit a69820be287d9ae1a6ed390a8a2d17dbe44eb88f
Author: rmani <[email protected]>
AuthorDate: Tue May 21 10:52:58 2019 -0700

    RANGER-2437:Update grant/revoke error message to provide more information 
about the principal type
    
    Signed-off-by: rmani <[email protected]>
---
 .../java/org/apache/ranger/rest/ServiceREST.java   | 60 +++++++++++++++++-----
 1 file changed, 48 insertions(+), 12 deletions(-)

diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 01f1a12..e1f6eec 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -129,6 +129,7 @@ import org.apache.ranger.view.RangerPluginInfoList;
 import org.apache.ranger.view.RangerPolicyList;
 import org.apache.ranger.view.RangerServiceDefList;
 import org.apache.ranger.view.RangerServiceList;
+import org.apache.ranger.view.VXGroup;
 import org.apache.ranger.view.VXResponse;
 import org.apache.ranger.view.VXString;
 import org.apache.ranger.view.VXUser;
@@ -3710,22 +3711,57 @@ public class ServiceREST {
 
        private void validateGrantRevokeRequest(GrantRevokeRequest request){
                if( request!=null){
-                       if(CollectionUtils.isEmpty(request.getUsers()) && 
CollectionUtils.isEmpty(request.getGroups())){
-                               throw 
restErrorUtil.createGrantRevokeRESTException( "Grantee users/groups list is 
empty");
-                       }
-                       String grantor=request.getGrantor();
-                       if(grantor==null || userMgr.getXUserByUserName(grantor) 
== null) {
-                               throw 
restErrorUtil.createGrantRevokeRESTException( "Grantor user "+grantor+" doesn't 
exist");
+                       
validateUsersAndGroups(request.getUsers(),request.getGroups());
+                       validateGrantor(request.getGrantor());
+                       validateGrantees(request.getUsers());
+                       validateGroups(request.getGroups());
+               }
+       }
+
+       private void validateUsersAndGroups(Set<String> users, Set<String> 
groups){
+               if(CollectionUtils.isEmpty(users) && 
CollectionUtils.isEmpty(groups)){
+                       throw restErrorUtil.createGrantRevokeRESTException( 
"Grantee users/groups list is empty");
+               }
+       }
+
+       private void validateGrantor(String grantor)  {
+               VXUser   vxUser = null;
+               if (grantor != null) {
+                       try {
+                               vxUser = userMgr.getXUserByUserName(grantor);
+                               if (vxUser == null) {
+                                       throw 
restErrorUtil.createGrantRevokeRESTException("Grantor user " + grantor + " 
doesn't exist");
+                               }
+                       } catch (Exception e) {
+                               throw 
restErrorUtil.createGrantRevokeRESTException("Grantor user " + grantor + " 
doesn't exist");
                        }
-                       for(String userName:request.getUsers()){
-                               if(userMgr.getXUserByUserName(userName) == 
null) {
-                                       throw 
restErrorUtil.createGrantRevokeRESTException( "Grantee user "+userName+" 
doesn't exist");
+               }
+       }
+
+       private void validateGrantees(Set<String> grantees) {
+               VXUser   vxUser = null;
+               for (String userName : grantees) {
+                       try {
+                               vxUser = userMgr.getXUserByUserName(userName);
+                               if (vxUser == null) {
+                                       throw 
restErrorUtil.createGrantRevokeRESTException("Grantee user " + userName + " 
doesn't exist");
                                }
+                       } catch (Exception e) {
+                               throw 
restErrorUtil.createGrantRevokeRESTException("Grantee user " + userName + " 
doesn't exist");
                        }
-                       for(String groupName:request.getGroups()){
-                               if(userMgr.getGroupByGroupName(groupName)== 
null) {
-                                       throw 
restErrorUtil.createGrantRevokeRESTException( "Grantee group "+groupName+" 
doesn't exist");
+               }
+       }
+
+       private void validateGroups(Set<String> groups) {
+               VXGroup   vxGroup = null;
+               for (String groupName : groups) {
+                       try {
+                               vxGroup = 
userMgr.getGroupByGroupName(groupName);
+                               if (vxGroup == null) {
+                                       throw 
restErrorUtil.createGrantRevokeRESTException( "Grantee group "+ groupName +" 
doesn't exist");
                                }
+                       } catch (Exception e) {
+                               throw 
restErrorUtil.createGrantRevokeRESTException( "Grantee group "+ groupName +" 
doesn't exist");
                        }
                }
        }

Reply via email to