You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by an...@apache.org on 2017/08/24 11:29:33 UTC

ranger git commit: RANGER-1726 : Users are not getting deleted when Knox proxy is Enabled

Repository: ranger
Updated Branches:
  refs/heads/master 053cdd7b7 -> 18a47ed4b


RANGER-1726 : Users are not getting deleted when Knox proxy is Enabled


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

Branch: refs/heads/master
Commit: 18a47ed4b8ea910a2c93c8707a0128f9b2af6ce5
Parents: 053cdd7
Author: Nikhil P <ni...@gmail.com>
Authored: Tue Aug 22 12:03:02 2017 +0530
Committer: Ankita Sinha <an...@apache.org>
Committed: Thu Aug 24 16:59:09 2017 +0530

----------------------------------------------------------------------
 .../java/org/apache/ranger/biz/XUserMgr.java    |  2 +-
 .../java/org/apache/ranger/rest/XUserREST.java  | 35 +++++++++
 .../webapp/scripts/model_bases/VXGroupBase.js   |  3 +-
 .../webapp/scripts/model_bases/VXUserBase.js    |  3 +-
 .../scripts/views/users/UserTableLayout.js      | 79 +++++++++++++-------
 5 files changed, 91 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/18a47ed4/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
index 1ae1659..447aebb 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
@@ -1906,7 +1906,7 @@ public class XUserMgr extends XUserMgrBase {
 		}
 	}
 
-	public void deleteXUser(Long id, boolean force) {
+        public synchronized void deleteXUser(Long id, boolean force) {
 		checkAdminAccess();
 		XXUserDao xXUserDao = daoManager.getXXUser();
 		XXUser xXUser =	xXUserDao.getById(id);

http://git-wip-us.apache.org/repos/asf/ranger/blob/18a47ed4/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 6e9161e..739ea05 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
@@ -1026,6 +1026,7 @@ public class XUserREST {
 		return vXStringList;
 	}
 
+
 	@DELETE
 	@Path("/secure/users/delete")
 	@Produces({ "application/xml", "application/json" })
@@ -1046,6 +1047,7 @@ public class XUserREST {
 		}
 	}
 
+
 	@DELETE
 	@Path("/secure/groups/delete")
 	@Produces({ "application/xml", "application/json" })
@@ -1066,4 +1068,37 @@ public class XUserREST {
 			}
 		}
 	}
+
+        @DELETE
+        @Path("/secure/users/{userName}")
+        @Produces({ "application/xml", "application/json" })
+        @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+        public void deleteSingleUserByUserName(@Context HttpServletRequest request, @PathParam("userName") String userName) {
+                String forceDeleteStr = request.getParameter("forceDelete");
+                boolean forceDelete = false;
+                if (StringUtils.isNotEmpty(forceDeleteStr) && "true".equalsIgnoreCase(forceDeleteStr)) {
+                        forceDelete = true;
+                }
+
+                if (StringUtils.isNotEmpty(userName)) {
+                        VXUser vxUser = xUserService.getXUserByUserName(userName);
+                        xUserMgr.deleteXUser(vxUser.getId(), forceDelete);
+                }
+        }
+
+        @DELETE
+        @Path("/secure/groups/{groupName}")
+        @Produces({ "application/xml", "application/json" })
+        @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+        public void deleteSingleGroupByGroupName(@Context HttpServletRequest request, @PathParam("groupName") String groupName) {
+                String forceDeleteStr = request.getParameter("forceDelete");
+                boolean forceDelete = false;
+                if (StringUtils.isNotEmpty(forceDeleteStr) && "true".equalsIgnoreCase(forceDeleteStr)) {
+                        forceDelete = true;
+                }
+                if (StringUtils.isNotEmpty(groupName)) {
+                        VXGroup vxGroup = xGroupService.getGroupByGroupName(groupName.trim());
+                        xUserMgr.deleteXGroup(vxGroup.getId(), forceDelete);
+                }
+        }
 }

http://git-wip-us.apache.org/repos/asf/ranger/blob/18a47ed4/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 96e0946..b86120b 100644
--- a/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
+++ b/security-admin/src/main/webapp/scripts/model_bases/VXGroupBase.js
@@ -89,10 +89,9 @@ define(function(require){
 			this.modelName = 'VXGroupBase';
 		},
 	 deleteGroups : function(groupNameValues, options){
-		var url = this.urlRoot  + '/delete?forceDelete=true';
+                var url = this.urlRoot+'/'+ groupNameValues + '?forceDelete=true';
 
 		options = _.extend({
-			data : JSON.stringify(groupNameValues),
 			contentType : 'application/json',
 			dataType : 'json',
 

http://git-wip-us.apache.org/repos/asf/ranger/blob/18a47ed4/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 db6d511..c4a0d6c 100644
--- a/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
+++ b/security-admin/src/main/webapp/scripts/model_bases/VXUserBase.js
@@ -43,9 +43,8 @@ define(function(require){
 		},
 
 		deleteUsers : function(userNameValues,options){
-			var url = this.urlRoot + '/delete?forceDelete=true';
+                        var url = this.urlRoot +'/'+ userNameValues +'?forceDelete=true';
 			options = _.extend({
-				data : JSON.stringify(userNameValues),
 				contentType : 'application/json',
 				dataType : 'json',
 			}, options);

http://git-wip-us.apache.org/repos/asf/ranger/blob/18a47ed4/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 8e465d7..17bde37 100644
--- a/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
@@ -520,38 +520,65 @@ define(function(require){
 						XAUtil.blockUI();
 						if(that.showUsers){
 							var model = new VXUser();
-							model.deleteUsers(jsonUsers,{
-								success: function(response,options){
-									XAUtil.blockUI('unblock');
-									that.collection.getFirstPage({fetch:true});
-									XAUtil.notifySuccess('Success','User deleted successfully!');
-									that.collection.selected = {};
-								},
-								error:function(response,options){
-									XAUtil.blockUI('unblock');
-									XAUtil.notifyError('Error', 'Error deleting User!');
-								}
-							});
-						}
-						else {
+                            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)
+                                        }
+                                    });
+                            });
+                        }else {
 							var model = new VXGroup();
-							model.deleteGroups(jsonUsers,{
-								success: function(response){
-									XAUtil.blockUI('unblock');
-									that.groupList.getFirstPage({fetch:true});
-									XAUtil.notifySuccess('Success','Group deleted successfully!');
-									that.groupList.selected  = {};
-								},
-								error:function(response,options){
-									XAUtil.blockUI('unblock');
-									XAUtil.notifyError('Error', 'Error deleting Group!');
-								}
-							});
+                            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)
+                                        }
+                                    })
+                            });
 						}
 					}
 				});
 			}
 		},
+        userCollection : function(numberOfUser, count, notDeletedUserName){
+                if(count == numberOfUser){
+                        this.collection.getFirstPage({fetch:true});
+                        this.collection.selected = {};
+                        XAUtil.blockUI('unblock');
+                        if(notDeletedUserName === ""){
+                                XAUtil.notifySuccess('Success','User deleted successfully!');
+                        }else{
+                                XAUtil.notifyError('Error', 'Error occurred during deleting Users: '+ notDeletedUserName.slice(0 , -2));
+                        }
+                }
+        },
+        groupCollection : function(numberOfGroup, count ,notDeletedGroupName){
+                if(count == numberOfGroup){
+                        this.groupList.getFirstPage({fetch:true});
+                        this.groupList.selected  = {};
+                        XAUtil.blockUI('unblock');
+                        if(notDeletedGroupName === ""){
+                                XAUtil.notifySuccess('Success','User deleted successfully!');
+                        } else {
+                                XAUtil.notifyError('Error', 'Error occurred during deleting Groups: '+ notDeletedGroupName.slice(0 , -2));
+                        }
+                }
+        },
 		addVisualSearch : function(){
 			var that = this;
 			var coll,placeholder;