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}}
