This is an automated email from the ASF dual-hosted git repository.
dineshkumar 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 39479100f RANGER-4347-User name with comma split in old Ranger admin
UI.
39479100f is described below
commit 39479100fdaafaf6360e4648b8048280669116eb
Author: Dhaval.Rajpara <[email protected]>
AuthorDate: Wed Nov 22 10:34:06 2023 +0530
RANGER-4347-User name with comma split in old Ranger admin UI.
Signed-off-by: Dineshkumar Yadav <[email protected]>
---
.../main/webapp/libs/fsOverrides/BBFOverrides.js | 21 ++++++-----
.../src/main/webapp/scripts/models/RangerZone.js | 20 ++++++-----
.../src/main/webapp/scripts/utils/XAUtils.js | 11 ++++--
.../views/permissions/ModulePermissionForm.js | 4 +--
.../scripts/views/policies/RangerPolicyForm.js | 2 +-
.../scripts/views/reports/UserAccessLayout.js | 11 +++---
.../scripts/views/security_zone/ZoneCreate.js | 5 ---
.../scripts/views/security_zone/ZoneCreateForm.js | 24 +++++++++++++
.../scripts/views/service/AuditFilterConfig.js | 42 ++++++++++++++++++++--
.../scripts/views/users/AddUsersOrGroupsList.js | 6 ++--
security-admin/src/main/webapp/styles/xa.css | 24 +++++++++++--
.../permissions/ModulePermissionForm_tmpl.html | 6 ++--
.../security_zone/ZoneCreateForm_tmpl.html | 2 +-
.../main/webapp/templates/users/RoleForm_tmpl.html | 6 ++--
14 files changed, 135 insertions(+), 49 deletions(-)
diff --git a/security-admin/src/main/webapp/libs/fsOverrides/BBFOverrides.js
b/security-admin/src/main/webapp/libs/fsOverrides/BBFOverrides.js
index 469f4aa9c..5b4901d5d 100644
--- a/security-admin/src/main/webapp/libs/fsOverrides/BBFOverrides.js
+++ b/security-admin/src/main/webapp/libs/fsOverrides/BBFOverrides.js
@@ -137,15 +137,18 @@ define(['jquery', 'underscore', 'backbone',
'backbone-forms', 'backbone-forms.li
return this;
},
- getValue: function() {
- return this.$el.val();
- },
-
- setValue: function(value) {
- this.$el.val(value);
- }
-
-
+ getValue : function(val ,name){
+ var arr = [];
+ if (_.isArray(this.$el.select2("data"))){
+ this.$el.select2("data").map(function(m){
+ arr.push(m.text)
+ return m.text
+ })
+ } else {
+ return this.$el.val();
+ }
+ return arr;
+ }
});
/**
diff --git a/security-admin/src/main/webapp/scripts/models/RangerZone.js
b/security-admin/src/main/webapp/scripts/models/RangerZone.js
index 08d118132..27b9e9487 100644
--- a/security-admin/src/main/webapp/scripts/models/RangerZone.js
+++ b/security-admin/src/main/webapp/scripts/models/RangerZone.js
@@ -145,14 +145,13 @@ define(function(require) {
]
},
})
-
},
- getPluginAttr: function(typeGroup, $select) {
+ getPluginAttr: function(typeGroup, selectVal) {
var that = this,
- tags = [],
+ tags = [], selectedVals = [],
placeholder = (typeGroup) ? 'Select Group' : 'Select User',
searchUrl = (typeGroup) ? "service/xusers/lookup/groups" :
"service/xusers/lookup/users";
- _.each(this.get($select), function(name) {
+ _.each(this.get(selectVal), function(name) {
tags.push({
'id': _.escape(name),
'text': _.escape(name)
@@ -161,9 +160,8 @@ define(function(require) {
return {
closeOnSelect: true,
placeholder: placeholder,
- // width: '500px',
- tokenSeparators: [",", " "],
- tags: true,
+ separator:"@-undefined-@",
+ multiple: true,
initSelection: function(element, callback) {
callback(tags);
},
@@ -178,9 +176,8 @@ define(function(require) {
},
results: function(data, page) {
var results = [],
- selectedVals = [];
//Get selected values of groups/users dropdown
- // selectedVals =
that.getSelectedValues(typeGroup);
+ selectedVals =
that.getSelectedValues(data.vXStrings, selectVal);
if (data.totalCount != "0") {
if (typeGroup) {
results = data.vXStrings.map(function(m) {
@@ -229,6 +226,11 @@ define(function(require) {
}
},
+ getSelectedValues : function(list, fieldNameKey){
+ if(!_.isEmpty(this.attributes[fieldNameKey])){
+ return this.attributes[fieldNameKey]
+ }
+ },
toString : function(){
return this.get('name');
},
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index cf4afe4c4..fc3ff5b5d 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1673,6 +1673,7 @@ define(function(require) {
return {
closeOnSelect : true,
placeholder : placeholder,
+ separator : "@-undefined-@",
tags : true,
width : width,
initSelection: function(element, callback) {
@@ -1725,8 +1726,14 @@ define(function(require) {
//remove selected values
if(that.collection && that.collection.models){
_.filter(that.collection.models, function(model){
- if(model && !_.isUndefined(model.get('name'))){
- selectedVals.push(model.get('name'));
+ if(auditFilter !== "auditFilter"){
+ if(model &&
!_.isUndefined(model.get('name'))){
+ selectedVals.push(model.get('name'));
+ }
+ } else {
+ if(model &&
!_.isUndefined(model.get($select))){
+ selectedVals = model.get($select);
+ }
}
})
}
diff --git
a/security-admin/src/main/webapp/scripts/views/permissions/ModulePermissionForm.js
b/security-admin/src/main/webapp/scripts/views/permissions/ModulePermissionForm.js
index ef3e8f67f..a1de45b4c 100644
---
a/security-admin/src/main/webapp/scripts/views/permissions/ModulePermissionForm.js
+++
b/security-admin/src/main/webapp/scripts/views/permissions/ModulePermissionForm.js
@@ -95,13 +95,13 @@ define(function(require) {
},
selectGroups : {
type : 'Select2Remote',
- editorAttrs : {'placeholder' :'Select
Group','tokenSeparators': [",", " "],multiple:true},
+ editorAttrs : {'placeholder' :'Select
Group',multiple:true},
pluginAttr:
this.getPlugginAttr(true,{'lookupURL':"service/xusers/groups",'idKey':'groupId','textKey':'groupName'}),
title :
localization.tt('lbl.selectGroup')+' *'
},
selectUsers : {
type : 'Select2Remote',
- editorAttrs : {'placeholder' :'Select
User','tokenSeparators': [",", " "],multiple:true},
+ editorAttrs : {'placeholder' :'Select
User',multiple:true},
pluginAttr:
this.getPlugginAttr(true,{'lookupURL':"service/xusers/users",'idKey':'userId','textKey':'userName'}),
title :
localization.tt('lbl.selectUser')+' *',
},
diff --git
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
index 394b161ad..5f6d9ac01 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -454,7 +454,7 @@ define(function(require){
}
if(this.model.has('policyLabels')){
- var policyLabel = _.isEmpty(this.model.get('policyLabels')) ?
[] : this.model.get('policyLabels').split(',');
+ var policyLabel = _.isEmpty(this.model.get('policyLabels')) ?
[] : this.model.get('policyLabels');
this.model.set('policyLabels', policyLabel);
}
if(!_.isUndefined(App.vZone) && App.vZone.vZoneName){
diff --git
a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
index b7bae7b1b..d134bdbe6 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
@@ -814,7 +814,6 @@ define(function(require) {'use strict';
closeOnSelect : true,
placeholder : 'Select Group',
maximumSelectionSize : 1,
- tokenSeparators: [",", " "],
allowClear: true,
// tags : this.groupArr,
initSelection : function (element, callback) {
@@ -831,7 +830,7 @@ define(function(require) {'use strict';
results: function (data, page) {
var results = [],selectedVals =
[];
if(!_.isEmpty(that.ui.userGroup.val()))
- selectedVals =
that.ui.userGroup.val().split(',');
+
selectedVals.push(that.ui.userGroup.val());
if(data.totalCount != "0"){
results =
data.vXStrings.map(function(m){ return {id : m.value, text:
_.escape(m.value) }; });
if(!_.isEmpty(selectedVals))
@@ -874,8 +873,8 @@ define(function(require) {'use strict';
},
results: function (data, page) {
var results =
[],selectedVals=[];
-
if(!_.isEmpty(that.ui.userName.select2('val')))
- selectedVals =
that.ui.userName.select2('val');
+
if(!_.isEmpty(that.ui.userName.val()))
+
selectedVals.push(that.ui.userName.val());
if(data.totalCount != "0"){
results =
data.vXStrings.map(function(m){ return {id : m.value, text:
_.escape(m.value) }; });
if(!_.isEmpty(selectedVals))
@@ -920,8 +919,8 @@ define(function(require) {'use strict';
},
results: function (data, page) {
var results =
[],selectedVals=[];
-
if(!_.isEmpty(that.ui.roleName.select2('val')))
- selectedVals =
that.ui.roleName.select2('val');
+
if(!_.isEmpty(that.ui.roleName.val()))
+
selectedVals.push(that.ui.roleName.val());
if(data.totalCount != "0"){
results =
data.roles.map(function(m){ return {id : _.escape(m.name), text:
_.escape(m.name) };});
if(!_.isEmpty(selectedVals))
diff --git
a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreate.js
b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreate.js
index a4885e379..a7fd76a5a 100644
--- a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreate.js
+++ b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreate.js
@@ -161,11 +161,6 @@ define(function(require) {
return
}
this.model.set('services', services);
- this.model.set('adminUsers',
this.model.get('adminUsers').split(','));
- this.model.set('adminUserGroups',
this.model.get('adminUserGroups').split(','));
- this.model.set('auditUsers',
this.model.get('auditUsers').split(','));
- this.model.set('auditUserGroups',
this.model.get('auditUserGroups').split(','));
- this.model.set('tagServices',
this.model.get('tagServices').split(','));
this.model.unset('policyType');
XAUtil.blockUI();
this.model.save({}, {
diff --git
a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreateForm.js
b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreateForm.js
index cbfb8da2d..45f7ef184 100644
---
a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreateForm.js
+++
b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneCreateForm.js
@@ -69,6 +69,11 @@ define(function(require) {
/** ui events hash */
events: function() {
var events = {};
+ events['change ' + this.ui.adminUsers] =
'onAddUsersGroups';
+ events['change ' + this.ui.adminUserGroups] =
'onAddUsersGroups';
+ events['change ' + this.ui.auditUsers] =
'onAddUsersGroups';
+ events['change ' + this.ui.auditUserGroups] =
'onAddUsersGroups';
+
return events;
},
@@ -209,6 +214,25 @@ define(function(require) {
})
},
+ onAddUsersGroups : function(e, val){
+ console.log(e)
+ var initialVal = [];
+ if(e && e.added){
+
if(_.isUndefined(this.model.get(e.currentTarget.dataset.id))){
+ initialVal.push(e.added.text);
+ this.model.set(e.currentTarget.dataset.id , initialVal)
+
+ } else {
+
this.model.get(e.currentTarget.dataset.id).push(e.added.text);
+ }
+ }
+ if(e && e.removed){
+ var removeVal =
_.without(this.model.get(e.currentTarget.dataset.id), e.removed.text);
+ this.model.set(e.currentTarget.dataset.id , removeVal);
+ }
+
+ },
+
zoneTable: function() {
var that = this;
this.$el.find('[data-id="zoneTableLayout"]').html(new
XATableLayout({
diff --git
a/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
b/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
index c518cb2de..20a85916e 100644
--- a/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
+++ b/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
@@ -138,15 +138,51 @@ define(function(require) {
},
evSelectUsers : function (e) {
- this.model.set('users', e.val)
+ if(!_.isUndefined(e.added)){
+ var Val = [];
+ Val.push(e.added.text)
+
if(_.isUndefined(this.model.get(e.currentTarget.dataset.type))){
+ this.model.set('users', Val)
+ } else {
+
this.model.get(e.currentTarget.dataset.type).push(e.added.text)
+ }
+ }
+ if(!_.isUndefined(e.removed)){
+ var removeVal =
_.without(this.model.get(e.currentTarget.dataset.type), e.removed.text);
+ this.model.set(e.currentTarget.dataset.type , removeVal);
+ }
},
evSelectGroup : function (e) {
- this.model.set('groups', e.val)
+ if(!_.isUndefined(e.added)){
+ var Val = [];
+ Val.push(e.added.text)
+
if(_.isUndefined(this.model.get(e.currentTarget.dataset.type))){
+ this.model.set('groups', Val);
+ } else {
+
this.model.get(e.currentTarget.dataset.type).push(e.added.text);
+ }
+ }
+ if(!_.isUndefined(e.removed)){
+ var removeVal =
_.without(this.model.get(e.currentTarget.dataset.type), e.removed.text);
+ this.model.set(e.currentTarget.dataset.type , removeVal);
+ }
},
evSelectRoles : function (e) {
- this.model.set('roles', e.val)
+ if(!_.isUndefined(e.added)){
+ var Val = [];
+ Val.push(e.added.text)
+
if(_.isUndefined(this.model.get(e.currentTarget.dataset.type))){
+ this.model.set('roles', Val)
+ } else {
+
this.model.get(e.currentTarget.dataset.type).push(e.added.text)
+ }
+ }
+ if(!_.isUndefined(e.removed)){
+ var removeVal =
_.without(this.model.get(e.currentTarget.dataset.type), e.removed.text);
+ this.model.set(e.currentTarget.dataset.type , removeVal);
+ }
},
evOparations : function (e) {
diff --git
a/security-admin/src/main/webapp/scripts/views/users/AddUsersOrGroupsList.js
b/security-admin/src/main/webapp/scripts/views/users/AddUsersOrGroupsList.js
index 26a62e67d..b933132a2 100644
--- a/security-admin/src/main/webapp/scripts/views/users/AddUsersOrGroupsList.js
+++ b/security-admin/src/main/webapp/scripts/views/users/AddUsersOrGroupsList.js
@@ -128,7 +128,7 @@ define(function(require) {
this.$el.find('[data-id="userGroupsTable"]').html('<tr
data-name="'+this.fieldName+'"><td colspan="3"> No '
+this.fieldName+' found</td></tr>');
}
-
this.ui.selectUsersOrGroups.select2(XAUtil.getUsersGroupsList(this.fieldName,
this, '300px'));
+
this.ui.selectUsersOrGroups.select2(XAUtil.getUsersGroupsList(this.fieldName,
this, '500px'));
this.ui.selectUsersOrGroups.attr("data-name",
this.fieldName+"Select");
this.ui.addUserGroupRoleBtn.attr("data-name",
this.fieldName+"AddBtn")
},
@@ -143,8 +143,8 @@ define(function(require) {
return
} else {
this.$el.find('[data-name='+this.fieldName+']').hide();
- _.each(this.ui.selectUsersOrGroups.val().split(','),
function(name){
- that.collection.add(new Backbone.Model({'name' : name ,
'isAdmin' : false}));
+ _.each(this.ui.selectUsersOrGroups.select2("data"),
function(name){
+ that.collection.add(new Backbone.Model({'name' : name.text
, 'isAdmin' : false}));
});
this.ui.selectUsersOrGroups.select2('data',[]);
}
diff --git a/security-admin/src/main/webapp/styles/xa.css
b/security-admin/src/main/webapp/styles/xa.css
index f5544cca0..de8101174 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -2498,6 +2498,27 @@ textarea:read-only{
} */
/* Security Zone */
+.zone-administration .form-control{
+ height: auto !important;
+}
+.role-form .form-control {
+ height: auto !important;
+}
+.permissions-table .form-control {
+ height: auto !important;
+}
+.groups-permission {
+ min-width: 480px;
+}
+.groups-permission .select2-container{
+ width: 100%;
+}
+.users-permission {
+ min-width: 480px;
+}
+.users-permission .select2-container{
+ width: 100%;
+}
.security-panel {
background-color: #fff;
border-radius: 3px;
@@ -4147,8 +4168,7 @@ ul.tagit{
}
.addbtngroup .select2-container{
- width: 300px !important;
- display: inline-block;
+ display: inline-block;
}
.dropdown-menu a:hover{
diff --git
a/security-admin/src/main/webapp/templates/permissions/ModulePermissionForm_tmpl.html
b/security-admin/src/main/webapp/templates/permissions/ModulePermissionForm_tmpl.html
index 6aaaa8737..7fe3d5970 100644
---
a/security-admin/src/main/webapp/templates/permissions/ModulePermissionForm_tmpl.html
+++
b/security-admin/src/main/webapp/templates/permissions/ModulePermissionForm_tmpl.html
@@ -28,7 +28,7 @@
</fieldset>
<fieldset>
<p class="formHeader">User and Group Permissions:</p>
- <div class="row">
+ <div class="row permissions-table">
<label class="col-sm-2 text-right" style="font-weight:
normal;">{{tt 'lbl.permissions'}}</label>
<div class="col-sm-10">
<table class="table-permission table-condensed
visible-border">
@@ -42,11 +42,11 @@
<tbody class="js-formInput">
<tr>
<td>
- <div
data-editors="selectGroups" class="list-inline inline-block"
style="vertical-align: middle;"></div>
+ <div
data-editors="selectGroups" class="list-inline inline-block groups-permission"
style="vertical-align: middle;"></div>
<button
data-id="addGroupBtn" class="fa fa-plus btn btn-default btn-sm" title="Add
Group" style="padding: 6px 12px;"></button>
</td>
<td>
- <div
data-editors="selectUsers" class="list-inline inline-block"
style="vertical-align: middle;"></div>
+ <div
data-editors="selectUsers" class="list-inline inline-block users-permission"
style="vertical-align: middle;"></div>
<button
data-id="addUserBtn" class="fa fa-plus btn btn-default btn-sm" title="Add User"
style="padding: 6px 12px;"></button>
</td>
diff --git
a/security-admin/src/main/webapp/templates/security_zone/ZoneCreateForm_tmpl.html
b/security-admin/src/main/webapp/templates/security_zone/ZoneCreateForm_tmpl.html
index 2ddfc3927..36d7bd2dc 100644
---
a/security-admin/src/main/webapp/templates/security_zone/ZoneCreateForm_tmpl.html
+++
b/security-admin/src/main/webapp/templates/security_zone/ZoneCreateForm_tmpl.html
@@ -33,7 +33,7 @@
</div>
</div>
- <div class="form-horizontal">
+ <div class="form-horizontal zone-administration">
<p class="formHeader">Zone Administration:</p>
<div class="form-group row" data-id="adminUsers">
<label class="control-label col-sm-3 col-form-label">Admin
Users</label>
diff --git a/security-admin/src/main/webapp/templates/users/RoleForm_tmpl.html
b/security-admin/src/main/webapp/templates/users/RoleForm_tmpl.html
index 7686c3fd1..d924ca686 100644
--- a/security-admin/src/main/webapp/templates/users/RoleForm_tmpl.html
+++ b/security-admin/src/main/webapp/templates/users/RoleForm_tmpl.html
@@ -17,7 +17,7 @@
<form class="form-horizontal">
<div class="" data-fields="name"></div>
<div class="" data-fields="description"></div>
- <div class="form-horizontal">
+ <div class="form-horizontal role-form">
<p class="formHeader">Users:</p>
<div class="form-group">
<div class="col-md-8">
@@ -25,7 +25,7 @@
</div>
</div>
</div>
- <div class="form-horizontal">
+ <div class="form-horizontal role-form">
<p class="formHeader">Groups:</p>
<div class="form-group">
<div class="col-md-8">
@@ -33,7 +33,7 @@
</div>
</div>
</div>
- <div class="form-horizontal">
+ <div class="form-horizontal role-form">
<p class="formHeader">Roles:</p>
<div class="form-group">
<div class="col-md-8">