Repository: ranger
Updated Branches:
  refs/heads/master 11bf91527 -> 23046e9e8


RANGER-1819: Not able to delete group that is having special 
character(ampersand) from ranger admin

Signed-off-by: Mehul Parikh <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/23046e9e
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/23046e9e
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/23046e9e

Branch: refs/heads/master
Commit: 23046e9e81941060df0faa76984a64832a42f516
Parents: 11bf915
Author: ni3galave <[email protected]>
Authored: Wed Oct 4 15:18:41 2017 +0530
Committer: Mehul Parikh <[email protected]>
Committed: Wed Oct 4 16:59:11 2017 +0530

----------------------------------------------------------------------
 .../java/org/apache/ranger/rest/XUserREST.java  | 36 ++++++++++++--
 .../webapp/scripts/model_bases/VXGroupBase.js   | 10 ++--
 .../webapp/scripts/model_bases/VXUserBase.js    |  4 +-
 .../scripts/views/users/UserTableLayout.js      | 51 ++++++++++----------
 .../authentication/PasswordValidator.java       |  2 +-
 5 files changed, 66 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/23046e9e/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
index 5a58346..a07c243 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
@@ -354,7 +354,7 @@ public class XUserREST {
                SearchCriteria searchCriteria = 
searchUtil.extractCommonCriterias(
                                request, xUserService.sortFields);
                String userName = null;
-               if(request != null && request.getUserPrincipal() != null){
+               if (request.getUserPrincipal() != null){
                        userName = request.getUserPrincipal().getName();
                }
                searchUtil.extractString(request, searchCriteria, "name", "User 
name",null);
@@ -370,7 +370,7 @@ public class XUserREST {
                        if 
(!(searchCriteria.getParamList().containsKey("name"))) {
                                searchCriteria.addParam("name", userName);
                        }
-                       else if 
((searchCriteria.getParamList().containsKey("name")) && 
userName.contains((String) searchCriteria.getParamList().get("name"))) {
+                       else if 
((searchCriteria.getParamList().containsKey("name")) && userName!= null && 
userName.contains((String) searchCriteria.getParamList().get("name"))) {
                                searchCriteria.addParam("name", userName);
                        }
                        else {
@@ -1122,4 +1122,34 @@ public class XUserREST {
                         xUserMgr.deleteXGroup(vxGroup.getId(), forceDelete);
                 }
         }
-}
+
+        @DELETE
+        @Path("/secure/users/id/{userId}")
+        @Produces({ "application/xml", "application/json" })
+        @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+        public void deleteSingleUserByUserId(@Context HttpServletRequest 
request, @PathParam("userId") Long userId) {
+                String forceDeleteStr = request.getParameter("forceDelete");
+                boolean forceDelete = false;
+                if (StringUtils.isNotEmpty(forceDeleteStr) && 
"true".equalsIgnoreCase(forceDeleteStr)) {
+                        forceDelete = true;
+                }
+                if (userId != null) {
+                        xUserMgr.deleteXUser(userId, forceDelete);
+                }
+        }
+
+        @DELETE
+        @Path("/secure/groups/id/{groupId}")
+        @Produces({ "application/xml", "application/json" })
+        @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+        public void deleteSingleGroupByGroupId(@Context HttpServletRequest 
request, @PathParam("groupId") Long groupId) {
+                String forceDeleteStr = request.getParameter("forceDelete");
+                boolean forceDelete = false;
+                if (StringUtils.isNotEmpty(forceDeleteStr) && 
"true".equalsIgnoreCase(forceDeleteStr)) {
+                        forceDelete = true;
+                }
+                if (groupId != null) {
+                        xUserMgr.deleteXGroup(groupId, forceDelete);
+                }
+        }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ranger/blob/23046e9e/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js 
b/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
index b86120b..fce4cf6 100644
--- a/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
+++ b/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
@@ -88,14 +88,12 @@ define(function(require){
                initialize: function() {
                        this.modelName = 'VXGroupBase';
                },
-        deleteGroups : function(groupNameValues, options){
-                var url = this.urlRoot+'/'+ groupNameValues + 
'?forceDelete=true';
-
-               options = _.extend({
+        deleteGroups : function(groupId, options){
+                var url = this.urlRoot + '/id/' + groupId + 
'?forceDelete=true';
+                options = _.extend({
                        contentType : 'application/json',
                        dataType : 'json',
-
-               }, options);
+                }, options);
 
                return this.constructor.nonCrudOperation.call(this, url, 
'DELETE', options);
        },

http://git-wip-us.apache.org/repos/asf/ranger/blob/23046e9e/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js 
b/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
index c4a0d6c..5f59874 100644
--- a/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
+++ b/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
@@ -42,8 +42,8 @@ define(function(require){
                        this.modelName = 'VXUserBase';
                },
 
-               deleteUsers : function(userNameValues,options){
-                        var url = this.urlRoot +'/'+ userNameValues 
+'?forceDelete=true';
+               deleteUsers : function(userId,options){
+                       var url = this.urlRoot + '/id/' + userId 
+'?forceDelete=true';
                        options = _.extend({
                                contentType : 'application/json',
                                dataType : 'json',

http://git-wip-us.apache.org/repos/asf/ranger/blob/23046e9e/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js 
b/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
index 65a1d18..9febd99 100644
--- a/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
@@ -485,15 +485,16 @@ define(function(require){
                        var message = '';
                        collection.each(function(obj){
                                if(obj.selected){
-                       selArr.push(obj.get('name'));
+                       selArr.push({"value" : obj.get('name') , "id" : 
obj.get('id')});
                    }
             });
                        var  vXStrings = [];
                        var jsonUsers  = {};
                        for(var i in selArr) {
-                               var item = selArr[i];
+                               var itemName = selArr[i].value , itemId = 
selArr[i].id;
                                vXStrings.push({
-                                       "value" : item,
+                                       "value" : itemName,
+                                       "id" : itemId
                                });
                        }
                        jsonUsers.vXStrings = vXStrings;
@@ -522,33 +523,33 @@ define(function(require){
                                                        var model = new 
VXUser();
                             var count = 0 , notDeletedUserName = "";
                             _.map(jsonUsers.vXStrings , function(m){
-                                    model.deleteUsers(m.value,{
-                                       success: function(response,options){
-                                                    count += 1;
-                                                    
that.userCollection(jsonUsers.vXStrings.length, count, notDeletedUserName)
-                                        },
-                                        error:function(response,options){
-                                                count += 1;
-                                                notDeletedUserName += m.value 
+ ", ";
-                                                
that.userCollection(jsonUsers.vXStrings.length, count, notDeletedUserName)
-                                        }
-                                    });
+                               model.deleteUsers(m.id,{
+                                       success: function(response,options){
+                                               count += 1;
+                                               
that.userCollection(jsonUsers.vXStrings.length, count, notDeletedUserName)
+                                       },
+                                       error:function(response,options){
+                                               count += 1;
+                                               notDeletedUserName += m.value + 
", ";
+                                               
that.userCollection(jsonUsers.vXStrings.length, count, notDeletedUserName)
+                                       }
+                               });
                             });
                         }else {
                                                        var model = new 
VXGroup();
                             var count = 0, notDeletedGroupName ="";
                             _.map(jsonUsers.vXStrings, function(m){
-                                    model.deleteGroups(m.value,{
-                                       success: function(response){
-                                                    count += 1;
-                                                    
that.groupCollection(jsonUsers.vXStrings.length,count,notDeletedGroupName)
-                                        },
-                                        error:function(response,options){
-                                                count += 1;
-                                                notDeletedGroupName += m.value 
+ ", ";
-                                                
that.groupCollection(jsonUsers.vXStrings.length,count, notDeletedGroupName)
-                                        }
-                                    })
+                               model.deleteGroups(m.id,{
+                                       success: function(response){
+                                               count += 1;
+                                               
that.groupCollection(jsonUsers.vXStrings.length,count,notDeletedGroupName)
+                                       },
+                                       error:function(response,options){
+                                               count += 1;
+                                               notDeletedGroupName += m.value 
+ ", ";
+                                               
that.groupCollection(jsonUsers.vXStrings.length,count, notDeletedGroupName)
+                                       }
+                               })
                             });
                                                }
                                        }

http://git-wip-us.apache.org/repos/asf/ranger/blob/23046e9e/unixauthservice/src/main/java/org/apache/ranger/authentication/PasswordValidator.java
----------------------------------------------------------------------
diff --git 
a/unixauthservice/src/main/java/org/apache/ranger/authentication/PasswordValidator.java
 
b/unixauthservice/src/main/java/org/apache/ranger/authentication/PasswordValidator.java
index d3e25fe..59cc914 100644
--- 
a/unixauthservice/src/main/java/org/apache/ranger/authentication/PasswordValidator.java
+++ 
b/unixauthservice/src/main/java/org/apache/ranger/authentication/PasswordValidator.java
@@ -114,7 +114,7 @@ public class PasswordValidator implements Runnable {
                        if (userName != null && writer != null ) {
                                 String res = "FAILED: unable to validate due 
to error " + t.getMessage();
                                writer.println(res);
-                                LOG.error("Response [" + res + "] for user: " 
+ userName+","+ t.getMessage());
+                                LOG.error("Response [" + res + "] for user: " 
+ userName+", "+ t.getMessage());
                        }
                }
                finally {

Reply via email to