You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2018/06/04 14:10:48 UTC
ranger git commit: RANGER-2119: Ranger UI: resource field issue when
we set lookupSupported attribute to false in ranger-service-def.
Repository: ranger
Updated Branches:
refs/heads/master 987abe806 -> 32d73afd6
RANGER-2119: Ranger UI: resource field issue when we set lookupSupported attribute to false in ranger-service-def.
Signed-off-by: Mehul Parikh <me...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/32d73afd
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/32d73afd
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/32d73afd
Branch: refs/heads/master
Commit: 32d73afd6bc5ac5d9b894f3d14f3eaf9b1b4f408
Parents: 987abe8
Author: ni3galave <ni...@gmail.com>
Authored: Mon Jun 4 18:20:25 2018 +0530
Committer: Mehul Parikh <me...@apache.org>
Committed: Mon Jun 4 19:40:29 2018 +0530
----------------------------------------------------------------------
.../scripts/models/BackboneFormDataType.js | 37 +++--
.../main/webapp/scripts/modules/XAOverrides.js | 29 +++-
.../src/main/webapp/scripts/utils/XAUtils.js | 41 ++++++
.../scripts/views/policies/RangerPolicyForm.js | 138 +++++++++----------
4 files changed, 157 insertions(+), 88 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/32d73afd/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js b/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
index a928470..1329eb2 100644
--- a/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
+++ b/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
@@ -103,20 +103,25 @@ define(function(require) {
//checkParentHideShow field
formObj.fieldAttrs = { 'data-name' : 'field-'+v.name, 'parent' : v.parent };
formObj['resourceOpts'] = {'data-placeholder': v.label };
-
- if(!_.isUndefined(v.lookupSupported) && v.lookupSupported ){
- var opts = {
- 'type' : v.name,
- 'lookupURL' : "service/plugins/services/lookupResource/"+form.rangerService.get('name')
- };
+ if(!_.isUndefined(v.lookupSupported)){
+ var opts = {};
if(_.has(v, 'validationRegEx') && !_.isEmpty(v.validationRegEx)){
- opts['regExpValidation'] = {'type': 'regexp', 'regexp':new RegExp(v.validationRegEx), 'message' : v.validationMessage};
+ opts['regExpValidation'] = {'type': 'regexp', 'regexp':new RegExp(v.validationRegEx), 'message' : v.validationMessage};
+ }
+ //To support single value input
+ if( XAUtils.isSinglevValueInput(v) ){
+ opts['singleValueInput'] = true;
+ }
+ opts['type'] = v.name;
+ if(v.lookupSupported){
+ opts['lookupURL'] = "service/plugins/services/lookupResource/"+form.rangerService.get('name');
+ resourceOpts['select2Opts'] = form.getPlugginAttr(true, opts);
+ }else{
+ resourceOpts['select2Opts'] = XAUtils.select2OptionForUserCreateChoice();
+ if(!_.isUndefined(opts.singleValueInput) && opts.singleValueInput){
+ resourceOpts['select2Opts']['maximumSelectionSize'] = 1;
+ }
}
- //To support single value input
- if( XAUtils.isSinglevValueInput(v) ){
- opts['singleValueInput'] = true;
- }
- resourceOpts['select2Opts'] = form.getPlugginAttr(true, opts);
formObj['resourceOpts'] = resourceOpts;
}
//same level resources check
@@ -187,11 +192,13 @@ define(function(require) {
formObj['name'] = v.name;
formObj['editorAttrs'] = {'data-placeholder': v.label };
formObj.fieldAttrs = { 'data-name' : 'field-'+v.name, 'parent' : v.parent };
- if(!_.isUndefined(v.lookupSupported) && v.lookupSupported ){
+ if(!_.isUndefined(v.lookupSupported)){
var options = {
'containerCssClass' : v.name,
- 'lookupURL' : "service/plugins/services/lookupResource/"+form.rangerService.get('name')
- };
+ };
+ if(v.lookupSupported){
+ options['lookupURL'] = "service/plugins/services/lookupResource/"+form.rangerService.get('name');
+ }
//to support regexp level validation
if(_.has(v, 'validationRegEx') && !_.isEmpty(v.validationRegEx)){
options['regExpValidation'] = {'type': 'regexp', 'regexp':new RegExp(v.validationRegEx), 'message' : v.validationMessage};
http://git-wip-us.apache.org/repos/asf/ranger/blob/32d73afd/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
index ecce373..3832916 100644
--- a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
+++ b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
@@ -520,7 +520,7 @@
this.renderSameLevelResource();
return this;
},
- renderResource : function() {
+ renderResource : function(def) {
var that = this;
var Vent = require('modules/Vent');
if(!_.isNull(this.value) && !_.isEmpty(this.value)){
@@ -539,6 +539,28 @@
// that.checkDirtyFieldForSelect2($(e.currentTarget), that, this.value);
}
});
+ //Handle resource at same level option for lookupSupport true/false condition
+ if(def){
+ if(def.lookupSupported){
+ var opts = {};
+ var singleValueInput = XAUtil.isSinglevValueInput(def);
+ opts['singleValueInput'] = singleValueInput;
+ if(_.has(def, 'validationRegEx') && !_.isEmpty(def.validationRegEx)){
+ opts['regExpValidation'] = {'type': 'regexp', 'regexp':new RegExp(def.validationRegEx), 'message' : def.validationMessage};
+ }
+ opts['lookupURL'] = "service/plugins/services/lookupResource/"+this.form.rangerService.get('name');
+ opts['type'] = def.name;
+ this.resourceOpts['select2Opts'] = that.form.getPlugginAttr(true, opts);
+ }else{
+ this.resourceOpts.select2Opts['containerCssClass'] = def.name;
+ delete this.resourceOpts.select2Opts['ajax'];
+ delete this.resourceOpts.select2Opts['tags'];
+ this.resourceOpts.select2Opts['data'] = [];
+ if(singleValueInput){
+ this.resourceOpts['select2Opts']['maximumSelectionSize'] = 1;
+ }
+ }
+ }
//create select2 if select2Opts is specified
if(!_.isUndefined(this.resourceOpts.select2Opts)){
this.$resource.select2(this.resourceOpts.select2Opts).on('change',function(e){
@@ -607,7 +629,8 @@
var val = _.isEmpty(that.preserveResourceValues[e.currentTarget.value]) ? '' : that.preserveResourceValues[e.currentTarget.value].split(',');
that.$resource.select2('val', val)
}else{
- that.$resource.select2('val', '')
+ that.$resource.select2('val', "");
+ that.value=[];
}
//reset values
that.value.isExcludes = false;
@@ -639,6 +662,8 @@
if(that.recursiveSupport) that.value.isRecursive = true;
that.excludeSupport = def.excludesSupported;
that.renderToggles();
+ //Handle resource at same level option for lookupSupport true/false condition
+ that.renderResource(def);
}
//trigger resource event for showing respective access permissions
Vent.trigger('resourceType:change', changeType = 'resourceType', e.currentTarget.value, e.currentTarget.value, e);
http://git-wip-us.apache.org/repos/asf/ranger/blob/32d73afd/security-admin/src/main/webapp/scripts/utils/XAUtils.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index 5bec224..d9366a1 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1425,5 +1425,46 @@ define(function(require) {
$('.popover').remove();
$('.datetimepicker').remove();
};
+ //select2 option
+ XAUtils.select2OptionForUserCreateChoice = function(){
+ var opts = {
+ multiple: true,
+ data:[],
+ closeOnSelect : true,
+ width :'220px',
+ allowClear: true,
+ tokenSeparators: ["," , " "],
+ minimumInputLength: 1,
+ initSelection : function (element, callback) {
+ var data = [];
+ //to set single select value
+ if(!_.isUndefined(opts.singleValueInput) && opts.singleValueInput){
+ callback({ id : element.val(), text : element.val() });
+ return;
+ }
+ //this is form multi-select value
+ $(element.val().split(",")).each(function () {
+ data.push({id: this, text: this});
+ });
+ callback(data);
+ },
+ createSearchChoice: function(term, data) {
+ term = _.escape(term);
+ if ($(data).filter(function() {
+ return this.text.localeCompare(term) === 0;
+ }).length === 0) {
+ if($.inArray(term, this.val()) >= 0){
+ return null;
+ }else{
+ return {
+ id : term,
+ text: term
+ };
+ }
+ }
+ },
+ }
+ return opts;
+ }
return XAUtils;
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ranger/blob/32d73afd/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
----------------------------------------------------------------------
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 e431f0a..e3d9635 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -560,77 +560,73 @@ define(function(require){
function extractLast( term ) {
return split( term ).pop();
}
-
- this.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit({
- autocomplete : {
- cache: false,
- source: function( request, response ) {
- var url = "service/plugins/services/lookupResource/"+that.rangerService.get('name');
- var context ={
- 'userInput' : extractLast( request.term ),
- 'resourceName' : that.pathFieldName,
- 'resources' : {}
- };
- var val = that.fields[that.pathFieldName].editor.getValue();
- context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource.split(",");
- var p = $.ajax({
- url : url,
- type : "POST",
- data : JSON.stringify(context),
- dataType : 'json',
- contentType: "application/json; charset=utf-8",
- }).done(function(data){
- if(data){
- response(data);
- } else {
- response();
- }
-
- }).fail(function(){
- response();
-
- });
- setTimeout(function(){
- p.abort();
- console.log('connection timeout for resource path request...!!');
- }, 10000);
- },
- open : function(){
- $(this).removeClass('working');
- },
- search: function() {
- if(!_.isUndefined(this.value) && _.contains(this.value,',')){
- _.each(this.value.split(',') , function(tag){
- that.fields[that.pathFieldName].editor.$el.tagit("createTag", tag);
- });
- return false;
- }
- var term = extractLast( this.value );
- $(this).addClass('working');
- if ( term.length < 1 ) {
- return false;
- }
- },
-
- },
- beforeTagAdded: function(event, ui) {
- // do something special
- that.fields[that.pathFieldName].$el.removeClass('error');
- that.fields[that.pathFieldName].$el.find('.help-inline').html('');
- var tags = [];
- console.log(ui.tag);
- if(!_.isUndefined(options.regExpValidation) && !options.regExpValidation.regexp.test(ui.tagLabel)){
- that.fields[that.pathFieldName].$el.addClass('error');
- that.fields[that.pathFieldName].$el.find('.help-inline').html(options.regExpValidation.message);
- return false;
- }
- }
- }).on('change',function(e){
- //check dirty field for tagit input type : `path`
- XAUtil.checkDirtyField($(e.currentTarget).val(), defaultValue.toString(), $(e.currentTarget))
- });
-
-
+ var tagitOpts = {}
+ if(!_.isUndefined(options.lookupURL) && options.lookupURL){
+ tagitOpts["autocomplete"] = {
+ cache: false,
+ source: function( request, response ) {
+ var url = "service/plugins/services/lookupResource/"+that.rangerService.get('name');
+ var context ={
+ 'userInput' : extractLast( request.term ),
+ 'resourceName' : that.pathFieldName,
+ 'resources' : {}
+ };
+ var val = that.fields[that.pathFieldName].editor.getValue();
+ context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource.split(",");
+ var p = $.ajax({
+ url : url,
+ type : "POST",
+ data : JSON.stringify(context),
+ dataType : 'json',
+ contentType: "application/json; charset=utf-8",
+ }).done(function(data){
+ if(data){
+ response(data);
+ } else {
+ response();
+ }
+ }).fail(function(){
+ response();
+ });
+ setTimeout(function(){
+ p.abort();
+ console.log('connection timeout for resource path request...!!');
+ }, 10000);
+ },
+ open : function(){
+ $(this).removeClass('working');
+ },
+ search: function() {
+ if(!_.isUndefined(this.value) && _.contains(this.value,',')){
+ _.each(this.value.split(',') , function(tag){
+ that.fields[that.pathFieldName].editor.$el.tagit("createTag", tag);
+ });
+ return false;
+ }
+ var term = extractLast( this.value );
+ $(this).addClass('working');
+ if ( term.length < 1 ) {
+ return false;
+ }
+ },
+ }
+ }
+ tagitOpts['beforeTagAdded'] = function(event, ui) {
+ // do something special
+ that.fields[that.pathFieldName].$el.removeClass('error');
+ that.fields[that.pathFieldName].$el.find('.help-inline').html('');
+ var tags = [];
+ console.log(ui.tag);
+ if(!_.isUndefined(options.regExpValidation) && !options.regExpValidation.regexp.test(ui.tagLabel)){
+ that.fields[that.pathFieldName].$el.addClass('error');
+ that.fields[that.pathFieldName].$el.find('.help-inline').html(options.regExpValidation.message);
+ return false;
+ }
+ }
+ this.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit(tagitOpts).on('change', function(e){
+ //check dirty field for tagit input type : `path`
+ XAUtil.checkDirtyField($(e.currentTarget).val(), defaultValue.toString(), $(e.currentTarget));
+ });
},
getPlugginAttr :function(autocomplete, options){
var that =this, type = options.containerCssClass, validRegExpString = true, select2Opts=[];