You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ni...@apache.org on 2021/03/18 05:09:33 UTC

[ranger] branch master updated: RANGER-3191 : Ranger UI for configuring Audit filters addend patch.

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

ni3galave 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 c1ceea3  RANGER-3191 : Ranger UI for configuring Audit filters addend patch.
c1ceea3 is described below

commit c1ceea3aada52c92cae70d4aa05b4b9ed8508358
Author: Nitin Galave <ni...@apache.org>
AuthorDate: Wed Mar 17 18:52:45 2021 +0530

    RANGER-3191 : Ranger UI for configuring Audit filters addend patch.
---
 .../src/main/webapp/scripts/utils/XAEnums.js       |  5 ++-
 .../scripts/views/service/AuditFilterConfig.js     | 45 +++++++++++++---------
 .../webapp/scripts/views/service/ServiceForm.js    |  4 +-
 security-admin/src/main/webapp/styles/xa.css       |  4 +-
 .../templates/service/AuditFilterItem_tmpl.html    | 16 ++++----
 .../webapp/templates/service/ServiceForm_tmpl.html |  2 +-
 6 files changed, 43 insertions(+), 33 deletions(-)

diff --git a/security-admin/src/main/webapp/scripts/utils/XAEnums.js b/security-admin/src/main/webapp/scripts/utils/XAEnums.js
index d1edbcb..6407b68 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAEnums.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAEnums.js
@@ -33,8 +33,9 @@ define(function(require) {
 	};
 
 	XAEnums.AccessResult = mergeParams(XAEnums.AccessResult, {
-		ACCESS_RESULT_DENIED:{value:0, label:'Denied', rbkey:'xa.enum.AccessResult.ACCESS_RESULT_DENIED', tt: 'lbl.AccessResult_ACCESS_RESULT_DENIED'},
-		ACCESS_RESULT_ALLOWED:{value:1, label:'Allowed', rbkey:'xa.enum.AccessResult.ACCESS_RESULT_ALLOWED', tt: 'lbl.AccessResult_ACCESS_RESULT_ALLOWED'}
+		ACCESS_RESULT_DENIED:{value:0, label:'Denied', rbkey:'xa.enum.AccessResult.ACCESS_RESULT_DENIED', tt: 'lbl.AccessResult_ACCESS_RESULT_DENIED', auditFilterLabel:'DENIED'},
+		ACCESS_RESULT_ALLOWED:{value:1, label:'Allowed', rbkey:'xa.enum.AccessResult.ACCESS_RESULT_ALLOWED', tt: 'lbl.AccessResult_ACCESS_RESULT_ALLOWED', auditFilterLabel:'ALLOWED'},
+		ACCESS_RESULT_NOT_DETERMINED:{value:2, label:'Not Determined', rbkey:'xa.enum.AccessResult.ACCESS_RESULT_NOT_DETERMINED', tt: 'lbl.AccessResult_ACCESS_RESULT_NOT_DETERMINED', auditFilterLabel:'NOT_DETERMINED'}
 	});
 	
 	XAEnums.UserSource = mergeParams(XAEnums.UserSource, {
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 79dcd07..f5e01f2 100644
--- a/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
+++ b/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -22,7 +22,7 @@
  */
 define(function(require) {
     'use strict';
-    
+
     var Backbone        = require('backbone');
     var App             = require('App');
     var XAEnums         = require('utils/XAEnums');
@@ -31,7 +31,7 @@ define(function(require) {
     var ServiceAuditFilterResourcesForm = require('views/service/ServiceAuditFilterResources');
     var RangerPolicyResource = require('models/RangerPolicyResource');
     require('bootstrap-editable');
-            
+
     var AuditConfigItem = Backbone.Marionette.ItemView.extend({
         _msvName : 'FormInputItem',
 
@@ -67,10 +67,10 @@ define(function(require) {
         initialize : function(options) {
             _.extend(this, _.pick(options,'rangerServiceDefModel', 'accessTypes', 'serviceName'));
         },
- 
+
         onRender : function() {
             var accessResultVal = _.map(XAEnums.AccessResult, function(m){
-                return {'id' : m.label ,'text': m.label}
+                return {'id' : m.auditFilterLabel ,'text': m.auditFilterLabel}
             })
             if (this.model && !_.isUndefined(this.model.get('accessResult'))) {
                 this.ui.accessResult.val(this.model.get('accessResult'));
@@ -94,8 +94,8 @@ define(function(require) {
         setupFormForEditMode : function () {
             var that = this;
             if(!this.model.isEmpty()) {
-                if (this.model.get('isAudited')) {
-                    this.$el.find('[data-js="isAudited"]').val(this.model.get('isAudited'));
+                if (this.model && !_.isUndefined(this.model.get('isAudited'))) {
+                    this.$el.find('[data-js="isAudited"]').val(this.model.get('isAudited') == true ? "Yes" : "No");
                 }
                 if (this.model.get('users')) {
                     this.ui.selectUsers.val(_.map(this.model.get('users'), function(name){ return _.escape(name)}));
@@ -119,9 +119,9 @@ define(function(require) {
 
         evIsAudited : function (e) {
             if(_.isUndefined(e)) {
-                this.model.set('isAudited',this.$el.find('[data-js="isAudited"]').val());
+                this.model.set('isAudited',this.$el.find('[data-js="isAudited"]').val() == "Yes" ? true : false);
             }else {
-                this.model.set('isAudited', e.currentTarget.value);
+                this.model.set('isAudited', e.currentTarget.value == "Yes" ? true : false);
             }
         },
 
@@ -304,7 +304,7 @@ define(function(require) {
         },
 
         displayResources : function(tmpResource) {
-            var $dataResources; 
+            var $dataResources;
             $dataResources = '<div class="resourceGrp"><div>'
                 _.filter(tmpResource, function(key, value) {
                     var $toggleBtn =''
@@ -347,20 +347,29 @@ define(function(require) {
                 placeholder : 'Select Action',
                 allowClear: true,
                 width : '200px',
-                tokenSeparators: ["," , " "],
+                tokenSeparators: [","],
                 tags : [],
                 dropdownCssClass: 'select2-text-hidden',
                 initSelection : function (element, callback) {
                     callback(tags);
                 },
                 createSearchChoice : function(term, data) {
+                    term = _.escape(term.trim());
                     if ($(data).filter(function() {
-                        return this.text.localeCompare(term)===0; 
-                    }).length===0)
-                        {return {id:term, text:term};}
+                        return this.text.localeCompare(term) === 0;
+                    }).length === 0) {
+                        if(term == ''){
+                            return null;
+                        }else{
+                            return {
+                                id : term,
+                                text: term
+                            };
+                        }
+                    }
                 },
             })
-            if (this.model.get('actions')) {
+            if (this.model && this.model.get('actions')) {
                 _.each(this.model.get('actions') , function(name){
                     tags.push( { 'id' : _.escape( name ), 'text' : _.escape( name ) } );
                 });
@@ -380,7 +389,7 @@ define(function(require) {
                 emptyAuditFilterCol : this.collection.length == 0 ? true : false,
             }
         },
-        
+
         getItemView : function(item){
             if(!item){
                 return;
@@ -432,7 +441,7 @@ define(function(require) {
             });
         }
     });
-    
+
     return AuditFilterList;
 
 });
\ No newline at end of file
diff --git a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
index e7d5b79..668fa79 100644
--- a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
+++ b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
@@ -123,7 +123,7 @@ define(function(require){
 				},this);
 
 				if(auditFilterCollValue) {
-					auditFilterCollValue = JSON.parse(auditFilterCollValue);
+					auditFilterCollValue = JSON.parse((auditFilterCollValue).replace(/'/g, '"'));
 					console.log(auditFilterCollValue);
 					auditFilterCollValue.forEach(function(model) {
 						that.auditFilterColl.add(new Backbone.Model(model));
@@ -216,7 +216,7 @@ define(function(require){
 				this.auditFilterColl.each(function (e) {
 					auditFiltter.push(e.attributes);
 				})
-				config['ranger.plugin.audit.filters'] = JSON.stringify(auditFiltter);
+				config['ranger.plugin.audit.filters'] = (JSON.stringify(auditFiltter)).replace(/"/g, "'");
 			}
 			this.model.set('configs',config);
 
diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css
index 5c11e14..ec57be1 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -4594,8 +4594,8 @@ input.textFiledInputPadding:disabled {
   width: 75px
 }
 
-.width-170 {
-  width: 170px
+.width-195 {
+  width: 195px
 }
 
 .min-width-150 {
diff --git a/security-admin/src/main/webapp/templates/service/AuditFilterItem_tmpl.html b/security-admin/src/main/webapp/templates/service/AuditFilterItem_tmpl.html
index 0fc2ce7..ff5cfd2 100644
--- a/security-admin/src/main/webapp/templates/service/AuditFilterItem_tmpl.html
+++ b/security-admin/src/main/webapp/templates/service/AuditFilterItem_tmpl.html
@@ -1,4 +1,4 @@
-{{!-- 
+{{!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
@@ -19,34 +19,34 @@
 <td class="">
     <div class="width-75">
         <select class="form-control custom-select-sm w-100" data-js="isAudited">
-            <option selected value="true">Yes</option>
-            <option value="false">No</option>
+            <option selected value="Yes">Yes</option>
+            <option value="No"false>No</option>
         </select>
     </div>
 </td>
 <!-- Access Result -->
 <td class="">
-    <div class="width-170">
+    <div class="width-195">
         <input type="text" class="form-control custom-select-sm" data-js="accessResult">
     </div>
 </td>
 <!-- Resources -->
-<td> 
+<td>
     <div class="resource-list min-width-150">
         <div class="js-formInput"><div class="resourceGrp text-center">--</div></div>
         <button type="button" class="btn btn-mini btn-primary" title="Add Resources" data-js="serviceResource" style="display: inline-block;">
             <i class="fa-fw fa fa-plus"></i>
         </button>
         <a class="btn btn-danger btn-mini" data-action="deleteResources"><i class="fa-fw fa fa-remove"></i></a></div>
-    </div>   
+    </div>
 </td>
 
 <!-- Oparations -->
-<td>    
+<td>
     <input  type="text" data-js="oparations" data-type="roles"/>
 </td>
 <!-- Actions -->
-<td>    
+<td>
     <a href="javascript:;" data-js="permissions" data-type="checklist" data-title="Select permissions" title="add/edit permissions" ></a>
     <button type="button" class="btn btn-sm add-permissions" title="Add" style="display: inline-block;">
         <i class="fa-fw fa fa-plus"></i>
diff --git a/security-admin/src/main/webapp/templates/service/ServiceForm_tmpl.html b/security-admin/src/main/webapp/templates/service/ServiceForm_tmpl.html
index 2b2e9c0..8666bd3 100644
--- a/security-admin/src/main/webapp/templates/service/ServiceForm_tmpl.html
+++ b/security-admin/src/main/webapp/templates/service/ServiceForm_tmpl.html
@@ -39,7 +39,7 @@
                 <div class="controls">
                     <img src="images/loading.gif"
                         style="margin-left: 4%; margin-top: 1%;">
-                    </img>  
+                    </img>
                 </div>
             </div>
         </div>