RANGER-1055: Policy UI to support new mask type 'CUSTOM'

Signed-off-by: Velmurugan Periasamy <[email protected]>


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

Branch: refs/heads/master
Commit: 65d7fbc6ef888a7601b121b5fe7c43f0f69ae8f0
Parents: c3ca247
Author: Gautam Borad <[email protected]>
Authored: Thu Jun 23 14:42:54 2016 +0530
Committer: Velmurugan Periasamy <[email protected]>
Committed: Thu Jun 23 11:13:44 2016 -0400

----------------------------------------------------------------------
 .../main/webapp/scripts/modules/globalize/message/en.js  |  3 ++-
 .../main/webapp/scripts/views/policies/PermissionList.js | 11 +++++++++++
 .../webapp/scripts/views/policies/RangerPolicyCreate.js  |  7 +++++++
 .../webapp/scripts/views/policies/RangerPolicyForm.js    |  8 +++++++-
 security-admin/src/main/webapp/styles/xa.css             |  3 +++
 .../main/webapp/templates/policies/PermissionItem.html   |  1 +
 6 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js 
b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
index 2f69ad2..de12935 100644
--- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
+++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
@@ -337,7 +337,8 @@ define(function(require) {
                                userUpdatedSucc           :     'User updated 
successfully',
                                grpUpdatedSucc            : 'Group updated 
successfully',
                                grpCreatedSucc            : 'Group created 
successfully',
-                               errorLoadingAuditLogs     : 'Unable to connect 
to Audit store !!'
+                               errorLoadingAuditLogs     : 'Unable to connect 
to Audit store !!',
+                               enterCustomMask                   : 'Please 
enter custom masked value or expression !!'
                                
                                
                                

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js 
b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
index 0416ad6..b48e306 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
@@ -610,6 +610,12 @@ define(function(require) {
                                        var obj = _.findWhere(srcData, {'value' 
: value } );
                                        // Save form data to model
                                        that.model.set('dataMaskInfo', 
{'dataMaskType': value });
+                                       //Custom dataMaskType
+                                       if(value === "CUSTOM"){
+                                               
$(this).siblings('[data-id="maskTypeCustom"]').css("display","");
+                                       }else{
+                                               
$(this).siblings('[data-id="maskTypeCustom"]').css("display","none");
+                                       }
                                        
                                        $(this).html("<span class='label 
label-info'>" + obj.text + "</span>");
                                        
that.ui.addMaskingTypeSpan.find('i').attr('class', 'icon-pencil');
@@ -625,6 +631,11 @@ define(function(require) {
                                
that.$('a[data-js="maskingType"]').editable('toggle');
 //                             that.clickOnMaskingType(that);
                        });
+                       
this.$el.find('input[data-id="maskTypeCustom"]').on('change', function(e){
+                               
if(!_.isUndefined(that.model.get('dataMaskInfo'))){
+                                       
that.model.get('dataMaskInfo').valueExpr = e.currentTarget.value;
+                               }
+                       });
                },
                renderRowLevelFilter :function(){
                        var that = this;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
index eac992d..52c4e53 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
@@ -157,6 +157,8 @@ define(function(require){
                        if(! _.isEmpty(errors)){
                                return;
                        }
+                       
+                       
                        //validate policyItems in the policy
                        var validateObj1 = 
this.form.formValidation(this.form.formInputList);
                        if(!this.validatePolicyItem(validateObj1)) return;
@@ -175,6 +177,11 @@ define(function(require){
                                XAUtil.alertPopup({ msg 
:localization.tt('msg.yourAuditLogginIsOff') });
                                return;
                        }
+                       
+                       if(!validateObj1.customMaskSet){
+                               XAUtil.alertPopup({ msg 
:localization.tt('msg.enterCustomMask') });
+                               return;
+                       }
                        this.savePolicy();
                },
                validatePolicyItem : function(validateObj){

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/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 50006e8..775fd25 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -675,7 +675,7 @@ define(function(require){
                },
                formValidation : function(coll){
                        var groupSet = false,permSet = false,groupPermSet = 
false,
-                       userSet=false, userPerm = false, userPermSet 
=false,breakFlag =false, condSet = false;
+                       userSet=false, userPerm = false, userPermSet 
=false,breakFlag =false, condSet = false,customMaskSet = true;
                        console.log('validation called..');
                        coll.each(function(m){
                                if(_.isEmpty(m.attributes)) return;
@@ -698,6 +698,11 @@ define(function(require){
                                if(m.has('conditions') && 
!_.isEmpty(m.get('conditions'))){
                                        condSet = m.has('conditions') ? true : 
false;
                                }
+                               if(m.has('dataMaskInfo') && 
!_.isUndefined(m.get('dataMaskInfo').dataMaskType)){
+                                       if(m.get('dataMaskInfo').dataMaskType 
=== "CUSTOM"){
+                                               customMaskSet = 
_.isUndefined(m.get('dataMaskInfo').valueExpr) || 
_.isEmpty(m.get('dataMaskInfo')).valueExpr ? false : true;
+                                       }
+                               }
                        });
                        
                        var auditStatus = 
this.fields.isAuditEnabled.editor.getValue();
@@ -705,6 +710,7 @@ define(function(require){
                                                userSet                 : 
userSet, isUsers:userPermSet,
                                                auditLoggin     : auditStatus,
                                                condSet                 : 
condSet,
+                                               customMaskSet   : customMaskSet
                                        };
                        if(groupSet || userSet){
                                obj['permSet'] = groupSet ? permSet : false;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/security-admin/src/main/webapp/styles/xa.css
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/styles/xa.css 
b/security-admin/src/main/webapp/styles/xa.css
index 5e1981c..9dbed64 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -2024,3 +2024,6 @@ td.subgrid-custom-cell{
 .backgrid-subgrid-custom-row table.backgrid thead th {
   font-weight:inherit;
 }
+.customMask{
+       width: 95px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/65d7fbc6/security-admin/src/main/webapp/templates/policies/PermissionItem.html
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/templates/policies/PermissionItem.html 
b/security-admin/src/main/webapp/templates/policies/PermissionItem.html
index 756f8e6..693e840 100644
--- a/security-admin/src/main/webapp/templates/policies/PermissionItem.html
+++ b/security-admin/src/main/webapp/templates/policies/PermissionItem.html
@@ -37,6 +37,7 @@
        <a href="#" data-js="maskingType" data-type="radiolist" 
data-title="Select masking type" title="Select masking type" ></a>
        <button type="button" class="btn btn-mini add-masking-type" title="Add" 
style="display: inline-block;"><i class="icon-plus"></i>
        </button>
+       <input type="text" data-id="maskTypeCustom" 
value="{{dataMaskInfo.valueExpr}}" placeholder="enter masked value or 
expression" style="display:none;" width="40%"/>
 </td>  
 {{/if}}
 {{#if isRowFilterPolicy}}

Reply via email to