RANGER-203: UI: Added dynamic policy conditions module, updated url path and done some clean up
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/e551d589 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/e551d589 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/e551d589 Branch: refs/heads/stack Commit: e551d589bcaf04324d5dcf53bbb83b06c8e572f5 Parents: 87fffe0 Author: Gautam Borad <[email protected]> Authored: Fri Jan 16 07:51:50 2015 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Fri Jan 16 07:51:50 2015 -0800 ---------------------------------------------------------------------- .../plugin/store/ServiceStoreFactory.java | 2 +- .../bower/x-editable/js/bootstrap-editable.js | 2 +- .../webapp/scripts/controllers/Controller.js | 391 +-------------- .../scripts/models/BackboneFormDataType.js | 2 +- .../src/main/webapp/scripts/routers/Router.js | 35 -- .../src/main/webapp/scripts/utils/XAUtils.js | 10 + .../scripts/views/policies/GroupPermList.js | 476 ------------------- .../scripts/views/policies/PermissionList.js | 473 ++++++++++++++++++ .../views/policies/RangerPolicyCreate.js | 167 +------ .../scripts/views/policies/RangerPolicyForm.js | 103 ++-- .../views/policies/RangerPolicyTableLayout.js | 156 +----- .../scripts/views/policies/UserPermList.js | 440 ----------------- .../scripts/views/service/ServiceCreate.js | 4 +- .../webapp/scripts/views/service/ServiceForm.js | 42 +- .../common/ServiceManagerLayout_tmpl.html | 18 - .../templates/policies/GroupPermItem.html | 39 -- .../templates/policies/GroupPermList.html | 42 -- .../templates/policies/PermissionItem.html | 39 ++ .../templates/policies/PermissionList.html | 42 ++ .../policies/RangerPolicyCreate_tmpl.html | 48 ++ .../policies/RangerPolicyForm_tmpl.html | 15 +- .../webapp/templates/policies/UserPermItem.html | 53 --- .../webapp/templates/policies/UserPermList.html | 42 -- .../templates/service/ServiceForm_tmpl.html | 7 +- 24 files changed, 691 insertions(+), 1957 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStoreFactory.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStoreFactory.java b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStoreFactory.java index a2af931..949792b 100644 --- a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStoreFactory.java +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStoreFactory.java @@ -68,7 +68,7 @@ public class ServiceStoreFactory { if(useFileStore) { serviceStore = new ServiceFileStore(); // TODO: configurable store implementation } else { - RangerRESTClient restClient = new RangerRESTClient("http://172.18.145.30:6080", ""); + RangerRESTClient restClient = new RangerRESTClient("http://localhost:6080", ""); restClient.setBasicAuthInfo("admin", "admin"); serviceStore = new ServiceRESTStore(restClient); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/security-admin/src/main/webapp/libs/bower/x-editable/js/bootstrap-editable.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/libs/bower/x-editable/js/bootstrap-editable.js b/security-admin/src/main/webapp/libs/bower/x-editable/js/bootstrap-editable.js index fe2ae73..86d34da 100644 --- a/security-admin/src/main/webapp/libs/bower/x-editable/js/bootstrap-editable.js +++ b/security-admin/src/main/webapp/libs/bower/x-editable/js/bootstrap-editable.js @@ -610,7 +610,7 @@ Editableform is linked with one of input types, e.g. 'text', 'select' etc. '</form>'; //loading div - $.fn.editableform.loading = '<div class="editableform-loading"></div>'; + $.fn.editableform.loading = '<div class="loading"></div>'; //buttons $.fn.editableform.buttons = '<button type="submit" class="editable-submit">ok</button>'+ http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/security-admin/src/main/webapp/scripts/controllers/Controller.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/controllers/Controller.js b/security-admin/src/main/webapp/scripts/controllers/Controller.js index b58a632..f056d15 100644 --- a/security-admin/src/main/webapp/scripts/controllers/Controller.js +++ b/security-admin/src/main/webapp/scripts/controllers/Controller.js @@ -73,381 +73,6 @@ define(function(require) { }); }, - hdfsManageAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/hdfs/HDFSTableLayout'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : assetModel - })); - resourceListForAsset.fetch({ -// cache : true - }); - }); - }, - - policyCreateAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - - var view = require('views/policy/PolicyCreate'); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var assetModel = new VXAsset({id:assetId}); - var resource = new VXResource(); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }, - - policyEditAction :function(){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/policy/PolicyCreate'); - App.rContent.show(new view({ - })); - }, - - policyViewAction :function(assetId,id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var view = require('views/policy/PolicyCreate'); - - var resource = new VXResource({id : id }); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - - var assetModel = new VXAsset({id:assetId}); - resource.fetch({ -// cache:true - }).done(function(){ - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }); - }, - //************** Policy Related ( HIVE )*********************/ - hiveManageAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/hive/HiveTableLayout'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : assetModel - })); - resourceListForAsset.fetch({ -// cache : true - }); - }); - }, - hivePolicyCreateAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/hive/HivePolicyCreate'); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var assetModel = new VXAsset({id:assetId}); - var resource = new VXResource(); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }, - hivePolicyEditAction :function(assetId,id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var view = require('views/hive/HivePolicyCreate'); - var resource = new VXResource({id : id }); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - resource.fetch({ -// cache:true - }).done(function(){ - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }); - }, - - //************** Policy Related ( KNOX )*********************/ - knoxManageAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/knox/KnoxTableLayout'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - collection :resourceListForAsset, - assetModel : assetModel - })); - resourceListForAsset.fetch({ -// cache : true - }); - }); - }, - knoxPolicyCreateAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/knox/KnoxPolicyCreate'); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var assetModel = new VXAsset({id:assetId}); - var resource = new VXResource(); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }, - knoxPolicyEditAction :function(assetId,id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var view = require('views/knox/KnoxPolicyCreate'); - var resource = new VXResource({id : id }); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - resource.fetch({ -// cache:true - }).done(function(){ - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }); - }, - //************** Policy Related ( STORM )*********************/ - stormManageAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/storm/StormTableLayout'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - collection :resourceListForAsset, - assetModel : assetModel - })); - resourceListForAsset.fetch({ -// cache : true - }); - }); - }, - stormPolicyCreateAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/storm/StormPolicyCreate'); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - - var assetModel = new VXAsset({id:assetId}); - var resource = new VXResource(); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }, - stormPolicyEditAction :function(assetId,id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var view = require('views/storm/StormPolicyCreate'); - var resource = new VXResource({id : id }); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - resource.fetch({ -// cache:true - }).done(function(){ - assetModel.fetch({cache : true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }); - }, - //************** Asset Related ( Repository )*********************/ - assetCreateAction :function(assetType){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/asset/AssetCreate'); - var VXAsset = require('models/VXAsset'); - App.rContent.show(new view({ - model : new VXAsset().set('assetType',assetType) - })); - }, - - assetEditAction :function(id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/asset/AssetCreate'); - var VXAsset = require('models/VXAsset'); - - var model = new VXAsset({id : id }); - model.fetch({cache:true}).done(function(){ - App.rContent.show(new view({ - model : model - })); - }); - }, - //************** Policy Related ( HBASE)*********************/ - hbaseManageAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/hbase/HbaseTableLayout'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache:true}).done(function(){ - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : assetModel - })); - resourceListForAsset.fetch({ -// cache : true - }); - }); - - }, - hbasePolicyCreateAction :function(assetId){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var view = require('views/hbase/HbasePolicyCreate'); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var resource = new VXResource(); - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - var assetModel = new VXAsset({id:assetId}); - assetModel.fetch({cache:true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }, - hbasePolicyEditAction :function(assetId,id){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - var VXResource = require('models/VXResource'); - var VXResourceList = require('collections/VXResourceList'); - var VXAsset = require('models/VXAsset'); - var view = require('views/hbase/HbasePolicyCreate'); - var resource = new VXResource({id : id }); - var assetModel = new VXAsset({id:assetId}); - - resource.collection = new VXResourceList([],{ - queryParams : { - 'assetId' : assetId - } - }); - resource.fetch({ -// cache:true - }).done(function(){ - assetModel.fetch({cache:true}).done(function(){ - App.rContent.show(new view({ - model : resource, - assetModel : assetModel - })); - }); - }); - }, - //************** Analytics(reports) Related *********************/ userAccessReportAction : function(){ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.Analytics.value }); @@ -646,14 +271,11 @@ define(function(require) { var rangerServiceDefModel = new RangerServiceDef({id:serviceTypeId}); var rangerServiceModel = new RangerService(); -// rangerServiceDefModel.fetch({ -// cache:true -// }).done(function(){ - App.rContent.show(new view({ - model : rangerServiceModel, - serviceTypeId : serviceTypeId - })); -// }); + + App.rContent.show(new view({ + model : rangerServiceModel, + serviceTypeId : serviceTypeId + })); }, serviceEditAction :function(serviceTypeId, serviceId){ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); @@ -676,6 +298,7 @@ define(function(require) { policyManageAction :function(serviceId){ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); + var XAUtil = require('utils/XAUtils'); var view = require('views/policies/RangerPolicyTableLayout'); var RangerService = require('models/RangerService'); var RangerPolicyList = require('collections/RangerPolicyList'); @@ -687,7 +310,7 @@ define(function(require) { 'serviceId' : serviceId } });*/ - rangerPolicyList.url = "service/plugins/policies/service/"+serviceId + rangerPolicyList.url = XAUtil.getServicePoliciesURL(serviceId); rangerService.fetch({ cache : false, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/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 7b02ef9..b8c8bb2 100644 --- a/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js +++ b/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js @@ -33,7 +33,7 @@ define(function(require) { case 'string': if(!_.isUndefined(v.lookupSupported) && v.lookupSupported ){ formObj.type = 'Select2Remote'; - formObj.pluginAttr = form.getPlugginAttr(false), + formObj.pluginAttr = _.isUndefined(v.url) ? form.getPlugginAttr(false) : form.getPlugginAttr(true, v.url), formObj.editorAttrs = {'data-placeholder': v.label }, formObj.options = function(callback, editor){ callback(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/security-admin/src/main/webapp/scripts/routers/Router.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/routers/Router.js b/security-admin/src/main/webapp/scripts/routers/Router.js index 3cafdae..cda8ea3 100644 --- a/security-admin/src/main/webapp/scripts/routers/Router.js +++ b/security-admin/src/main/webapp/scripts/routers/Router.js @@ -30,40 +30,6 @@ function(Backbone){ "" : "serviceManagerAction",//"dashboardAction", "!/policymanager" : "serviceManagerAction", - /* HDFS related */ - "!/hdfs" : "hdfsManageAction", - "!/hdfs/:id/policies" : "hdfsManageAction", - "!/policy/:assetId/create" : "policyCreateAction", - "!/policy/:id/edit" : "policyEditAction", - "!/hdfs/:assetId/policy/:id": "policyViewAction", - - /****** Hive related **********************/ - "!/hive" : "hiveManageAction", - "!/hive/:id/policies" : "hiveManageAction", - "!/hive/:assetId/policy/create" : "hivePolicyCreateAction", - "!/hive/:assetId/policy/:id" : "hivePolicyEditAction", - - /****** HBASE related **********************/ - "!/hbase" : "hbaseManageAction", - "!/hbase/:id/policies" : "hbaseManageAction", - "!/hbase/:assetId/policy/create": "hbasePolicyCreateAction", - "!/hbase/:assetId/policy/:id" : "hbasePolicyEditAction", - - /****** KNOX related ************************/ - "!/knox/:id/policies" : "knoxManageAction", - "!/knox/:assetId/policy/create" : "knoxPolicyCreateAction", - "!/knox/:assetId/policy/:id" : "knoxPolicyEditAction", - - /****** STORM related ************************/ - "!/storm/:id/policies" : "stormManageAction", - "!/storm/:assetId/policy/create": "stormPolicyCreateAction", - "!/storm/:assetId/policy/:id" : "stormPolicyEditAction", - - /****** Asset related **********************/ - "!/asset" : "policyManagerAction", - "!/asset/create/:assetType" : "assetCreateAction", - "!/asset/:id" : "assetEditAction", - /****** Analytics Report related **********************/ "!/reports/userAccess" : "userAccessReportAction", @@ -82,7 +48,6 @@ function(Backbone){ "!/group/:id" : "groupEditAction", /************GENERIC UI *****************************************/ - /****** Service related **********************/ "!/service/:serviceType/create" : "serviceCreateAction", "!/service/:serviceType/edit/:id" : "serviceEditAction", http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/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 24850a7..4ff308f 100644 --- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js +++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js @@ -707,5 +707,15 @@ define(function(require) { }); $.fn.editabletypes.policyConditions = PolicyConditions; }; + XAUtils.capitaliseFirstLetter = function (string){ + return string.charAt(0).toUpperCase() + string.slice(1); + }; + XAUtils.getServicePoliciesURL = function(serviceId) { + return "service/plugins/policies/service/"+serviceId; + }; + XAUtils.getRangerServiceDef = function(name) { + return "service/plugins/definitions/name/"+name; + }; + return XAUtils; }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js b/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js deleted file mode 100644 index 3fe0a6e..0000000 --- a/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js +++ /dev/null @@ -1,476 +0,0 @@ -/* - * 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. The ASF licenses this file - * 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 - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - /* - * - */ -define(function(require) { - 'use strict'; - - var Backbone = require('backbone'); - var App = require('App'); - var XAEnums = require('utils/XAEnums'); - var XAUtil = require('utils/XAUtils'); - var localization = require('utils/XALangSupport'); - var VXGroup = require('models/VXGroup'); - require('bootstrap-editable'); - - var FormInputItem = Backbone.Marionette.ItemView.extend({ - _msvName : 'FormInputItem', - template : require('hbs!tmpl/policies/GroupPermItem'), - tagName : 'tr', - templateHelpers : function(){ - - return { - permissions : this.accessTypes, - policyConditions: this.policyConditions, - isModelNew : !this.model.has('editMode'), - perms : this.permsIds.length == 14 ? _.union(this.permsIds,[-1]) : this.permsIds, - }; - }, - ui : { - selectGroups : '[data-js="selectGroups"]', - selectUsers : '[data-js="selectUsers"]', - addPerms : 'a[data-js="permissions"]', - conditionsTags : '[class=tags1]', - delegatedAdmin : 'input[data-js="delegatedAdmin"]' - }, - events : { - 'click [data-action="delete"]' : 'evDelete', - 'click td' : 'evClickTD', - 'change [data-js="selectGroups"]': 'evSelectGroup', - 'change [data-js="selectUsers"]': 'evSelectUser', - 'change input[class="policy-conditions"]' : 'policyCondtionChange' - }, - - initialize : function(options) { - _.extend(this, _.pick(options, 'groupList','policyType','accessTypes','policyConditions','userList')); - this.setupPermissionsAndConditions(); - - }, - - onRender : function() { - this.setupFormForEditMode(); - - this.createDropDown(this.ui.selectGroups, this.groupList, true); - this.createDropDown(this.ui.selectUsers, this.userList, false); - this.dropDownChange(this.ui.selectGroups); - this.dropDownChange(this.ui.selectUsers); - - this.renderPerms(); - this.renderPolicyCondtion(); - }, - setupFormForEditMode : function() { - this.accessItems = _.map(this.accessTypes, function(perm){ - if(!_.isUndefined(perm)) - return {'type':perm.label,isAllowed : false} - }); - if(this.model.has('editMode') && this.model.get('editMode')){ - if(!_.isUndefined(this.model.get('groupName')) && !_.isNull(this.model.get('groupName'))){ - this.ui.selectGroups.val(this.model.get('groupName').split(',')); - } - if(!_.isUndefined(this.model.get('userName')) && !_.isNull(this.model.get('userName'))){ - this.ui.selectUsers.val(this.model.get('userName').split(',')); - } - - if(!_.isUndefined(this.model.get('conditions'))){ - _.each(this.model.get('conditions'), function(obj){ - this.$el.find('input[data-js="'+obj.type+'"]').val(obj.value.toString()) - },this); - } - _.each(this.model.get('accesses'), function(p){ - if(p.isAllowed){ - this.$el.find('input[data-name="' + p.type + '"]').attr('checked', 'checked'); - _.each(this.accessItems,function(obj){ if(obj.type == p.type) obj.isAllowed=true;}) - } - },this); - - if(!_.isUndefined(this.model.get('delegateAdmin')) && this.model.get('delegateAdmin')){ - this.ui.delegatedAdmin.attr('checked', 'checked'); - } - } - }, - setupPermissionsAndConditions : function() { - var that = this; - this.permsIds = [], this.conditions = {}; - //Set Permissions obj - if( this.model.has('editMode') && this.model.get('editMode')){ - _.each(this.model.get('accesses'), function(p){ - if(p.isAllowed){ - var access = _.find(that.accessTypes,function(obj){if(obj.label == p.type) return obj}); - this.permsIds.push(access.name); - } - - }, this); - //Set PolicyCondtion Obj to show in edit mode - _.each(this.model.get('conditions'), function(p){ - this.conditions[p.type] = p.value; - }, this); - } - }, - dropDownChange : function($select){ - var that = this; - $select.on('change',function(e){ - // console.log(e.currentTarget.value); - var name = ($(e.currentTarget).attr('data-js') == that.ui.selectGroups.attr('data-js')) ? 'group': 'user'; - that.checkDirtyFieldForDropDown(e); - - that.toggleAddButton(e); - if(e.removed != undefined){ - var gNameArr = []; - if(that.model.get(name+'Name') != undefined) - gNameArr = _.without(that.model.get(name+'Name').split(','), e.removed.text); - if(!_.isEmpty(gNameArr)){ - that.model.set(name+'Name',gNameArr.join(',')); - }else{ - that.model.unset(name+'Name'); - } - return; - } - if(!_.isUndefined(e.added)){ - var nameList = _.map($(e.currentTarget).select2("data"), function(obj){return obj.text}); - that.model.set(name+'Name',nameList.toString()); - } - }); - }, - createDropDown :function($select, list, typeGroup){ - var that = this; - var placeholder = (typeGroup) ? 'Select Group' : 'Select User'; - var url = (typeGroup) ? "service/xusers/groups" : "service/xusers/users"; - if(this.model.has('editMode') && !_.isEmpty($select.val())){ - var temp = $select.val().split(","); - _.each(temp , function(name){ - if(_.isUndefined(list.where({ name : name}))){ - var model; - model = typeGroup ? new VXGroup({name: name}) : new VXUser({name: name}); - model.fetch({async:false}).done(function(){ - list.add(model); - }); - } - }); - } - var tags = list.map(function(m){ - return { id : m.id+"" , text : m.get('name')}; - }); - $select.select2({ - closeOnSelect : true, - placeholder : placeholder, - // maximumSelectionSize : 1, - width :'220px', - tokenSeparators: [",", " "], - tags : tags, - initSelection : function (element, callback) { - var data = []; - console.log(list); - - $(element.val().split(",")).each(function () { - var obj = _.findWhere(tags,{text:this}); - data.push({id: obj.id, text: this}) - }); - callback(data); - }, - createSearchChoice: function(term, data) { - /* if ($(data).filter(function() { - return this.text.localeCompare(term) === 0; - }).length === 0) { - return { - id : term, - text: term - }; - }*/ - }, - ajax: { - url: url, - dataType: 'json', - data: function (term, page) { - return {name : term}; - }, - results: function (data, page) { - var results = [] , selectedVals = []; - /*if(!_.isEmpty(that.ui.selectGroups.select2('val'))) - selectedVals = that.ui.selectGroups.select2('val');*/ - selectedVals = that.getGroupSelectdValues($select, typeGroup); - if(data.resultSize != "0"){ - //if(data.vXGroups.length > 1){ - if(typeGroup) - results = data.vXGroups.map(function(m, i){ return {id : m.id+"", text: m.name}; }); - else - results = data.vXUsers.map(function(m, i){ return {id : m.id+"", text: m.name}; }); - if(!_.isEmpty(selectedVals)) - results = XAUtil.filterResultByText(results, selectedVals); - // console.log(results.length); - return {results : results}; - //} - // results = [{id : data.vXGroups.id+"", text: data.vXGroups.name}]; - // return {results : results}; - } - return {results : results}; - } - }, - formatResult : function(result){ - return result.text; - }, - formatSelection : function(result){ - return result.text; - }, - formatNoMatches: function(result){ - return 'No group found.'; - } - }).on('select2-focus', XAUtil.select2Focus); - }, - renderPerms :function(){ - var that = this; -// var permArr = _.pick(XAEnums.XAPermType, XAUtil.getStormActions(this.policyType)); - this.perms = _.map(this.accessTypes,function(m){return {text:m.label, value:m.name};}); - this.perms.push({'value' : -1, 'text' : 'Select/Deselect All'}); - this.ui.addPerms.editable({ - emptytext : 'Add Permissions', - source: this.perms, - value : this.permsIds, - display: function(values,srcData) { - if(_.isNull(values) || _.isEmpty(values)){ - $(this).empty(); - that.model.unset('accesses'); - return; - } - if(_.contains(values,"-1")){ - values = _.without(values,"-1") - } -// that.checkDirtyFieldForGroup(values); - var permTypeArr = []; - var valArr = _.map(values, function(id){ - if(!_.isUndefined(id)){ - var obj = _.findWhere(srcData,{'value' : id}); - permTypeArr.push({permType : obj.value}); - return "<span class='label label-inverse'>" + obj.text + "</span>"; - } - }); - var perms = [] - if(that.model.has('accesses')){ - perms = that.model.get('accesses'); - } - _.each(that.accessTypes, function(obj) { - if(_.contains(values, obj.name)){ - var type = obj.label - _.each(that.accessItems, function(item){ if(item.type == type) item.isAllowed = true }); - } - }); - // Save data to model - - if(!_.isEmpty(that.accessItems)) - that.model.set('accesses', that.accessItems); - - $(this).html(valArr.join(" ")); - }, - }).on('click', function(e) { - e.stopPropagation(); - e.preventDefault(); - that.$('input[type="checkbox"][value="-1"]').click(function(e){ - var checkboxlist =$(this).closest('.editable-checklist').find('input[type="checkbox"][value!=-1]') - $(this).is(':checked') ? checkboxlist.prop('checked',true) : checkboxlist.prop('checked',false); - - }); - }); - - }, - renderPolicyCondtion : function() { - var that = this; - if(this.policyConditions.length > 0){ - var tmpl = _.map(this.policyConditions,function(obj){ - return '<div class="editable-address margin-bottom-5"><label style="display:block !important;"><span>'+obj.label+' : </span></label><input type="text" name="'+obj.name+'" ></div>' - }); - XAUtil.customXEditableForPolicyCond(tmpl.join('')); - this.$('#policyConditions').editable({ - emptytext : 'Add Conditions', - value : this.conditions, - display: function(value) { - var continue_ = false, i = 0; - if(!value) { - $(this).empty(); - return; - } // End if - _.each(value, function(val, name){ if(!_.isEmpty(val)) continue_ = true; }); - if(continue_){ - var html = _.map(value, function(val,name) { - var label = (i%2 == 0) ? 'label label-inverse' : 'label'; - i++; - return _.isEmpty(val) ? '' : '<span class="'+label+'">'+name+' : '+ val + '</span>'; - }); - var cond = _.map(value, function(val, name) {return {'type' : name, 'value' :val};}); - that.model.set('conditions', cond); - $(this).html(html); - }else{ - that.model.unset('conditions'); - $(this).empty(); - } - } // End display option - }); // End editable() - } - }, - getGroupSelectdValues : function($select, typeGroup){ - var vals = [],selectedVals = []; - var name = typeGroup ? 'group' : 'user'; - this.collection.each(function(m){ - if(!_.isUndefined(m.get(name+'Name')) && !_.isNull(m.get(name+'Name'))){ - vals.push.apply(vals, m.get(name+'Name').split(',')); - } - }); - if(!_.isEmpty($select.select2('val'))) - selectedVals = $select.select2('val'); - vals.push.apply(vals , selectedVals); - vals = $.unique(vals); - return vals; - }, - evDelete : function(){ - var that = this; - this.collection.remove(this.model); - this.toggleAddButton(); - }, - evClickTD : function(e){ - var $el = $(e.currentTarget); - //Set Delegated Admin value - if(!_.isUndefined($el.find('input').data('js'))){ - this.model.set('delegateAdmin',$el.find('input').is(':checked')) - return; - } - }, - checkDirtyFieldForCheckBox : function(perms){ - var permList = []; - if(!_.isUndefined(this.model.get('_vPermList'))) - permList = _.map(this.model.attributes._vPermList,function(obj){return obj.permType;}); - perms = _.map(perms,function(obj){return obj.permType;}); - XAUtil.checkDirtyField(permList, perms, this.$el); - }, - toggleAddButton : function(e){ - var temp = []; - this.collection.each(function(m){ - if(!_.isUndefined(m.get('groupId'))){ - temp.push.apply(temp, m.get('groupId').split(',')); - - } - }); - if(!_.isUndefined(e)){ - if( !_.isUndefined(e.added) && ((temp.length + 1) == this.groupList.length)) - $('[data-action="addGroup"]').hide(); - if(!_.isUndefined(e.removed)) - $('[data-action="addGroup"]').show(); - }else{ - $('[data-action="addGroup"]').show(); - } - }, - policyCondtionChange :function(e){ - if(!_.isEmpty($(e.currentTarget).val()) && !_.isEmpty(this.policyConditions)){ - var policyCond = { 'type' : $(e.currentTarget).attr('data-js'), 'value' : $(e.currentTarget).val() } ; - var conditions = []; - if(this.model.has('conditions')){ - conditions = this.model.get('conditions') - } - conditions.push(policyCond); - this.model.set('conditions',conditions); - } - - }, - checkDirtyFieldForDropDown : function(e){ - //that.model.has('groupId') - var groupIdList =[]; - if(!_.isUndefined(this.model.get('groupId'))) - groupIdList = this.model.get('groupId').split(','); - XAUtil.checkDirtyField(groupIdList, e.val, $(e.currentTarget)); - }, - }); - - - - return Backbone.Marionette.CompositeView.extend({ - _msvName : 'FormInputItemList', - template : require('hbs!tmpl/policies/GroupPermList'), - //tagName : 'ul', - //className : 'timeline-container', - templateHelpers :function(){ - return { - permHeaders : this.getPermHeaders() - }; - }, - getItemView : function(item){ - if(!item){ - return; - } - return FormInputItem; - }, - itemViewContainer : ".js-formInput", - itemViewOptions : function() { - return { - 'collection' : this.collection, - 'groupList' : this.groupList, - 'userList' : this.userList, - 'policyType' : this.policyType, - 'accessTypes' : this.accessTypes, - 'policyConditions' : this.rangerServiceDefModel.get('policyConditions') - }; - }, - events : { - 'click [data-action="addGroup"]' : 'addNew' - }, - initialize : function(options) { - _.extend(this, _.pick(options, 'groupList','policyType','accessTypes','rangerServiceDefModel','userList')); - //this.hiveGroupPerm = _.has(options,'hiveGroupPerm') ? true : false; - this.listenTo(this.groupList, 'sync', this.render, this); - if(this.collection.length == 0) - this.collection.add(new Backbone.Model()); - }, - onRender : function(){ - //console.log("onRender of ArtifactFormNoteList called"); - this.toggleAddButton(); - }, - addNew : function(){ - var that =this; - if(this.groupList.length > this.collection.length){ - this.collection.add(new Backbone.Model()); - this.toggleAddButton(); - } - }, - toggleAddButton : function(){ - var groupIds=[]; - this.collection.each(function(m){ - if(!_.isUndefined(m.get('groupId'))){ - var temp = m.get('groupId').split(','); - groupIds.push.apply(groupIds,temp); - } - }); - if(groupIds.length == this.groupList.length) - this.$('button[data-action="addGroup"]').hide(); - else - this.$('button[data-action="addGroup"]').show(); - }, - getPermHeaders : function(){ - var permList = [];//_.map(this.accessTypes,function(type){ return type.label}); - - permList.unshift(localization.tt('lbl.delegatedAdmin')); - permList.unshift(localization.tt('lbl.permissions')); - if(!_.isEmpty(this.rangerServiceDefModel.get('policyConditions'))){ - permList.unshift(localization.tt('h.policyCondition')); - } - permList.unshift(localization.tt('lbl.selectUser')); - permList.unshift(localization.tt('lbl.selectGroup')); - permList.push(""); - return permList; - }, - }); - -}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/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 new file mode 100644 index 0000000..a44305d --- /dev/null +++ b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js @@ -0,0 +1,473 @@ +/* + * 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. The ASF licenses this file + * 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 + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + /* + * + */ +define(function(require) { + 'use strict'; + + var Backbone = require('backbone'); + var App = require('App'); + var XAEnums = require('utils/XAEnums'); + var XAUtil = require('utils/XAUtils'); + var localization = require('utils/XALangSupport'); + var VXGroup = require('models/VXGroup'); + var VXGroupList = require('collections/VXGroupList'); + var VXUserList = require('collections/VXUserList'); + require('bootstrap-editable'); + + var FormInputItem = Backbone.Marionette.ItemView.extend({ + _msvName : 'FormInputItem', + template : require('hbs!tmpl/policies/PermissionItem'), + tagName : 'tr', + templateHelpers : function(){ + + return { + permissions : this.accessTypes, + policyConditions: this.policyConditions, + isModelNew : !this.model.has('editMode'), + perms : this.permsIds.length == 14 ? _.union(this.permsIds,[-1]) : this.permsIds, + }; + }, + ui : { + selectGroups : '[data-js="selectGroups"]', + selectUsers : '[data-js="selectUsers"]', + addPerms : 'a[data-js="permissions"]', + conditionsTags : '[class=tags1]', + delegatedAdmin : 'input[data-js="delegatedAdmin"]' + }, + events : { + 'click [data-action="delete"]' : 'evDelete', + 'click td' : 'evClickTD', + 'change [data-js="selectGroups"]': 'evSelectGroup', + 'change [data-js="selectUsers"]': 'evSelectUser', + 'change input[class="policy-conditions"]' : 'policyCondtionChange' + }, + + initialize : function(options) { + _.extend(this, _.pick(options, 'groupList','policyType','accessTypes','policyConditions','userList')); + this.setupPermissionsAndConditions(); + + }, + + onRender : function() { + //To setup permissions for edit mode + this.setupFormForEditMode(); + //create select2 dropdown for groups and users + this.createDropDown(this.ui.selectGroups, this.groupList, true); + this.createDropDown(this.ui.selectUsers, this.userList, false); + //groups or users select2 dropdown change vent + this.dropDownChange(this.ui.selectGroups); + this.dropDownChange(this.ui.selectUsers); + //render permissions and policy conditions + this.renderPerms(); + this.renderPolicyCondtion(); + }, + setupFormForEditMode : function() { + this.accessItems = _.map(this.accessTypes, function(perm){ + if(!_.isUndefined(perm)) + return {'type':perm.label,isAllowed : false} + }); + if(this.model.has('editMode') && this.model.get('editMode')){ + if(!_.isUndefined(this.model.get('groupName')) && !_.isNull(this.model.get('groupName'))){ + this.ui.selectGroups.val(this.model.get('groupName').split(',')); + } + if(!_.isUndefined(this.model.get('userName')) && !_.isNull(this.model.get('userName'))){ + this.ui.selectUsers.val(this.model.get('userName').split(',')); + } + + if(!_.isUndefined(this.model.get('conditions'))){ + _.each(this.model.get('conditions'), function(obj){ + this.$el.find('input[data-js="'+obj.type+'"]').val(obj.value.toString()) + },this); + } + _.each(this.model.get('accesses'), function(p){ + if(p.isAllowed){ + this.$el.find('input[data-name="' + p.type + '"]').attr('checked', 'checked'); + _.each(this.accessItems,function(obj){ if(obj.type == p.type) obj.isAllowed=true;}) + } + },this); + + if(!_.isUndefined(this.model.get('delegateAdmin')) && this.model.get('delegateAdmin')){ + this.ui.delegatedAdmin.attr('checked', 'checked'); + } + } + }, + setupPermissionsAndConditions : function() { + var that = this; + this.permsIds = [], this.conditions = {}; + //Set Permissions obj + if( this.model.has('editMode') && this.model.get('editMode')){ + _.each(this.model.get('accesses'), function(p){ + if(p.isAllowed){ + var access = _.find(that.accessTypes,function(obj){if(obj.label == p.type) return obj}); + this.permsIds.push(access.name); + } + + }, this); + //Set PolicyCondtion Obj to show in edit mode + _.each(this.model.get('conditions'), function(p){ + this.conditions[p.type] = p.value; + }, this); + } + }, + dropDownChange : function($select){ + var that = this; + $select.on('change',function(e){ + // console.log(e.currentTarget.value); + var name = ($(e.currentTarget).attr('data-js') == that.ui.selectGroups.attr('data-js')) ? 'group': 'user'; + that.checkDirtyFieldForDropDown(e); + + that.toggleAddButton(e); + if(e.removed != undefined){ + var gNameArr = []; + if(that.model.get(name+'Name') != undefined) + gNameArr = _.without(that.model.get(name+'Name').split(','), e.removed.text); + if(!_.isEmpty(gNameArr)){ + that.model.set(name+'Name',gNameArr.join(',')); + }else{ + that.model.unset(name+'Name'); + } + return; + } + if(!_.isUndefined(e.added)){ + var nameList = _.map($(e.currentTarget).select2("data"), function(obj){return obj.text}); + that.model.set(name+'Name',nameList.toString()); + } + }); + }, + createDropDown :function($select, list, typeGroup){ + var that = this; + var placeholder = (typeGroup) ? 'Select Group' : 'Select User'; + var url = (typeGroup) ? "service/xusers/groups" : "service/xusers/users"; + if(this.model.has('editMode') && !_.isEmpty($select.val())){ + var temp = $select.val().split(","); + _.each(temp , function(name){ + if(_.isEmpty(list.where({ 'name' : name}))){ + var coll; + coll = typeGroup ? new VXGroupList() : new VXUserList(); + coll.queryParams['name'] = name; + coll.fetch({async:false}).done(function(){ + list.add(coll.models); + }); + } + }); + } + var tags = list.map(function(m){ + return { id : m.id+"" , text : m.get('name')}; + }); + $select.select2({ + closeOnSelect : true, + placeholder : placeholder, + // maximumSelectionSize : 1, + width :'220px', + tokenSeparators: [",", " "], + tags : tags, + initSelection : function (element, callback) { + var data = []; + console.log(list); + + $(element.val().split(",")).each(function () { + var obj = _.findWhere(tags,{text:this}); + data.push({id: obj.id, text: this}) + }); + callback(data); + }, + ajax: { + url: url, + dataType: 'json', + data: function (term, page) { + return {name : term}; + }, + results: function (data, page) { + var results = [] , selectedVals = []; + //Get selected values of groups/users dropdown + selectedVals = that.getSelectdValues($select, typeGroup); + if(data.resultSize != "0"){ + if(typeGroup) + results = data.vXGroups.map(function(m, i){ return {id : m.id+"", text: m.name}; }); + else + results = data.vXUsers.map(function(m, i){ return {id : m.id+"", text: m.name}; }); + if(!_.isEmpty(selectedVals)) + results = XAUtil.filterResultByText(results, selectedVals); + return {results : results}; + } + return {results : results}; + } + }, + formatResult : function(result){ + return result.text; + }, + formatSelection : function(result){ + return result.text; + }, + formatNoMatches: function(result){ + return 'No group found.'; + } + }).on('select2-focus', XAUtil.select2Focus); + }, + renderPerms :function(){ + var that = this; + this.perms = _.map(this.accessTypes,function(m){return {text:m.label, value:m.name};}); + this.perms.push({'value' : -1, 'text' : 'Select/Deselect All'}); + //create x-editable for permissions + this.ui.addPerms.editable({ + emptytext : 'Add Permissions', + source: this.perms, + value : this.permsIds, + display: function(values,srcData) { + if(_.isNull(values) || _.isEmpty(values)){ + $(this).empty(); + that.model.unset('accesses'); + return; + } + if(_.contains(values,"-1")){ + values = _.without(values,"-1") + } +// that.checkDirtyFieldForGroup(values); + var permTypeArr = []; + var valArr = _.map(values, function(id){ + if(!_.isUndefined(id)){ + var obj = _.findWhere(srcData,{'value' : id}); + permTypeArr.push({permType : obj.value}); + return "<span class='label label-inverse'>" + obj.text + "</span>"; + } + }); + var perms = [] + if(that.model.has('accesses')){ + perms = that.model.get('accesses'); + } + //reset isAllowed flag in accesssItems to set newly isAllowed + _.each(that.accessItems, function(item){ item.isAllowed = false }); + + _.each(that.accessTypes, function(obj) { + if(_.contains(values, obj.name)){ + var type = obj.label + _.each(that.accessItems, function(item){ if(item.type == type) item.isAllowed = true }); + } + }); + // Save form data to model + + if(!_.isEmpty(that.accessItems)) + that.model.set('accesses', that.accessItems); + + $(this).html(valArr.join(" ")); + }, + }).on('click', function(e) { + e.stopPropagation(); + e.preventDefault(); + var selectAll = true; + var checklist = that.$('.editable-checklist').find('input[type="checkbox"]') + _.each(checklist,function(checkbox){ if($(checkbox).val() != -1 && !$(checkbox).is(':checked')) selectAll = false;}) + if(selectAll){ + that.$('.editable-checklist').find('input[type="checkbox"][value="-1"]').prop('checked',true) + } + //for selectAll functionality + that.$('input[type="checkbox"][value="-1"]').click(function(e){ + var checkboxlist =$(this).closest('.editable-checklist').find('input[type="checkbox"][value!=-1]') + $(this).is(':checked') ? checkboxlist.prop('checked',true) : checkboxlist.prop('checked',false); + + }); + + }); + + }, + renderPolicyCondtion : function() { + var that = this; + + if(this.policyConditions.length > 0){ + var tmpl = _.map(this.policyConditions,function(obj){ + return '<div class="editable-address margin-bottom-5"><label style="display:block !important;"><span>'+obj.label+' : </span></label><input type="text" name="'+obj.name+'" ></div>' + }); + //Create new bootstrap x-editable `policyConditions` dataType for policy conditions + XAUtil.customXEditableForPolicyCond(tmpl.join('')); + //create x-editable for policy conditions + this.$('#policyConditions').editable({ + emptytext : 'Add Conditions', + value : this.conditions, + display: function(value) { + var continue_ = false, i = 0; + if(!value) { + $(this).empty(); + return; + } + _.each(value, function(val, name){ if(!_.isEmpty(val)) continue_ = true; }); + if(continue_){ + var html = _.map(value, function(val,name) { + var label = (i%2 == 0) ? 'label label-inverse' : 'label'; + i++; + return _.isEmpty(val) ? '' : '<span class="'+label+'">'+name+' : '+ val + '</span>'; + }); + var cond = _.map(value, function(val, name) {return {'type' : name, 'value' :val};}); + that.model.set('conditions', cond); + $(this).html(html); + }else{ + that.model.unset('conditions'); + $(this).empty(); + } + } + }); + } + }, + getSelectdValues : function($select, typeGroup){ + var vals = [],selectedVals = []; + var name = typeGroup ? 'group' : 'user'; + this.collection.each(function(m){ + if(!_.isUndefined(m.get(name+'Name')) && !_.isNull(m.get(name+'Name'))){ + vals.push.apply(vals, m.get(name+'Name').split(',')); + } + }); + if(!_.isEmpty($select.select2('val'))) + selectedVals = $select.select2('val'); + vals.push.apply(vals , selectedVals); + vals = $.unique(vals); + return vals; + }, + evDelete : function(){ + var that = this; + this.collection.remove(this.model); + this.toggleAddButton(); + }, + evClickTD : function(e){ + var $el = $(e.currentTarget); + //Set Delegated Admin value + if(!_.isUndefined($el.find('input').data('js'))){ + this.model.set('delegateAdmin',$el.find('input').is(':checked')) + return; + } + }, + checkDirtyFieldForCheckBox : function(perms){ + var permList = []; + if(!_.isUndefined(this.model.get('_vPermList'))) + permList = _.map(this.model.attributes._vPermList,function(obj){return obj.permType;}); + perms = _.map(perms,function(obj){return obj.permType;}); + XAUtil.checkDirtyField(permList, perms, this.$el); + }, + toggleAddButton : function(e){ + var temp = []; + this.collection.each(function(m){ + if(!_.isUndefined(m.get('groupId'))){ + temp.push.apply(temp, m.get('groupId').split(',')); + } + }); + if(!_.isUndefined(e)){ + if( !_.isUndefined(e.added) && ((temp.length + 1) == this.groupList.length)) + $('[data-action="addGroup"]').hide(); + if(!_.isUndefined(e.removed)) + $('[data-action="addGroup"]').show(); + }else{ + $('[data-action="addGroup"]').show(); + } + }, + policyCondtionChange :function(e){ + if(!_.isEmpty($(e.currentTarget).val()) && !_.isEmpty(this.policyConditions)){ + var policyCond = { 'type' : $(e.currentTarget).attr('data-js'), 'value' : $(e.currentTarget).val() } ; + var conditions = []; + if(this.model.has('conditions')){ + conditions = this.model.get('conditions') + } + conditions.push(policyCond); + this.model.set('conditions',conditions); + } + + }, + checkDirtyFieldForDropDown : function(e){ + //that.model.has('groupId') + var groupIdList =[]; + if(!_.isUndefined(this.model.get('groupId'))) + groupIdList = this.model.get('groupId').split(','); + XAUtil.checkDirtyField(groupIdList, e.val, $(e.currentTarget)); + }, + }); + + + + return Backbone.Marionette.CompositeView.extend({ + _msvName : 'FormInputItemList', + template : require('hbs!tmpl/policies/PermissionList'), + templateHelpers :function(){ + return { + permHeaders : this.getPermHeaders() + }; + }, + getItemView : function(item){ + if(!item){ + return; + } + return FormInputItem; + }, + itemViewContainer : ".js-formInput", + itemViewOptions : function() { + return { + 'collection' : this.collection, + 'groupList' : this.groupList, + 'userList' : this.userList, + 'policyType' : this.policyType, + 'accessTypes' : this.accessTypes, + 'policyConditions' : this.rangerServiceDefModel.get('policyConditions') + }; + }, + events : { + 'click [data-action="addGroup"]' : 'addNew' + }, + initialize : function(options) { + _.extend(this, _.pick(options, 'groupList','policyType','accessTypes','rangerServiceDefModel','userList')); + this.listenTo(this.groupList, 'sync', this.render, this); + if(this.collection.length == 0) + this.collection.add(new Backbone.Model()); + }, + onRender : function(){ + this.toggleAddButton(); + }, + addNew : function(){ + var that =this; + if(this.groupList.length > this.collection.length){ + this.collection.add(new Backbone.Model()); + this.toggleAddButton(); + } + }, + toggleAddButton : function(){ + var groupIds=[]; + this.collection.each(function(m){ + if(!_.isUndefined(m.get('groupId'))){ + var temp = m.get('groupId').split(','); + groupIds.push.apply(groupIds,temp); + } + }); + if(groupIds.length == this.groupList.length) + this.$('button[data-action="addGroup"]').hide(); + else + this.$('button[data-action="addGroup"]').show(); + }, + getPermHeaders : function(){ + var permList = []; + permList.unshift(localization.tt('lbl.delegatedAdmin')); + permList.unshift(localization.tt('lbl.permissions')); + if(!_.isEmpty(this.rangerServiceDefModel.get('policyConditions'))){ + permList.unshift(localization.tt('h.policyCondition')); + } + permList.unshift(localization.tt('lbl.selectUser')); + permList.unshift(localization.tt('lbl.selectGroup')); + permList.push(""); + return permList; + }, + }); + +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/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 fa11698..1407614 100644 --- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js +++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js @@ -32,16 +32,16 @@ define(function(require){ var XALinks = require('modules/XALinks'); var localization = require('utils/XALangSupport'); - var PolicycreateTmpl = require('hbs!tmpl/hdfs/PolicyCreate_tmpl'); + var RangerPolicycreateTmpl = require('hbs!tmpl/policies/RangerPolicyCreate_tmpl'); var RangerPolicyForm = require('views/policies/RangerPolicyForm'); var RangerServiceDef = require('models/RangerServiceDef'); - var PolicyCreate = Backbone.Marionette.Layout.extend( - /** @lends PolicyCreate */ + var RangerPolicyCreate = Backbone.Marionette.Layout.extend( + /** @lends RangerPolicyCreate */ { - _viewName : 'PolicyCreate', + _viewName : 'RangerPolicyCreate', - template: PolicycreateTmpl, + template : RangerPolicycreateTmpl, templateHelpers : function(){ return { editPolicy : this.editPolicy @@ -53,7 +53,6 @@ define(function(require){ return [XALinks.get('RepositoryManager'),XALinks.get('ManagePolicies',{model : this.rangerService}),XALinks.get('PolicyCreate')]; else return [XALinks.get('RepositoryManager'),XALinks.get('ManagePolicies',{model : this.rangerService}),XALinks.get('PolicyEdit')]; -// return []; } , /** Layout sub regions */ @@ -80,12 +79,12 @@ define(function(require){ }, /** - * intialize a new PolicyCreate Layout + * intialize a new RangerPolicyCreate Layout * @constructs */ initialize: function(options) { var that = this; - console.log("initialized a PolicyCreate Layout"); + console.log("initialized a RangerPolicyCreate Layout"); _.extend(this, _.pick(options, 'rangerService')); this.initializeServiceDef(); @@ -103,7 +102,7 @@ define(function(require){ initializeServiceDef : function(){ this.rangerServiceDefModel = new RangerServiceDef(); - this.rangerServiceDefModel.url = "service/plugins/definitions/name/"+this.rangerService.get('type'); + this.rangerServiceDefModel.url = XAUtil.getRangerServiceDef(this.rangerService.get('type')); this.rangerServiceDefModel.fetch({ cache : false, async : false @@ -118,26 +117,8 @@ define(function(require){ /** on render callback */ onRender: function() { -// XAUtil.showAlerForDisabledPolicy(this); this.rForm.show(this.form); -// this.rForm.$el.dirtyFields(); -// XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavPolicyForm'),this.rForm.$el); -// this.initializePlugins(); }, - - /** all post render plugin initialization */ - /* initializePlugins: function(){ - }, - popupCallBack : function(msg,validateObj){ - var that = this; - XAUtil.alertPopup({ - msg :msg, - callback : function(){ - // if(validateObj.auditLoggin) - // that.savePolicy(); - } - }); - },*/ onSave: function(){ var that = this, valid = false; var errors = this.form.commit({validate : false}); @@ -145,52 +126,6 @@ define(function(require){ return; } this.savePolicy(); - /*var validateObj = this.form.formValidation(); - valid = (validateObj.groupSet && validateObj.permSet) || (validateObj.userSet && validateObj.userPerm); - if(!valid){ - if(validateObj.groupSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - }else if((!validateObj.groupSet) && (validateObj.permSet)) { - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - - }else if(validateObj.userSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - }else if((!validateObj.userSet) && (validateObj.userPerm)) { - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - - }else if((!validateObj.auditLoggin) && (!validateObj.groupPermSet)){ - XAUtil.alertPopup({ - msg :localization.tt('msg.yourAuditLogginIsOff'), - callback : function(){ - if(!that.model.isNew()){ - that.model.destroy({success: function(model, response) { - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: true}); - }}); - }else{ - XAUtil.notifyError('Error', localization.tt('msg.policyNotAddedMsg')); - App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: true}); - } - } - }); - }else{ - this.savePolicy(); - } - }else{ - if(validateObj.groupSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - }else if((!validateObj.groupSet) && (validateObj.permSet)) { - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - - }else if(validateObj.userSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - }else if((!validateObj.userSet) && (validateObj.userPerm)) { - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - - }else - this.savePolicy(); - }*/ - }, savePolicy : function(){ var that = this; @@ -200,7 +135,6 @@ define(function(require){ saveMethod : function(){ var that = this; XAUtil.blockUI(); - this.model.url = "service/plugins/policies"; this.model.save({},{ wait: true, success: function () { @@ -212,99 +146,16 @@ define(function(require){ App.appRouter.navigate("#!/service/"+that.rangerService.id+"/policies",{trigger: true}); return; } - App.appRouter.navigate("#!/service/"+that.rangerService.id+"/policies",{trigger: true}); - - /*var view = require('views/hdfs/HDFSTableLayout'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : that.assetModel.id - } - }); - resourceListForAsset.fetch({ - cache : true, - 'data' : { - // 'resourceType':XAEnums.AssetType.ASSET_HDFS.value, - 'assetId' :that.assetModel.id - } - }).done(function(){ - var newColl = resourceListForAsset; - resourceListForAsset.getLastPage({ - cache : false, - data : { - // 'resourceType' : XAEnums.AssetType.ASSET_HDFS.value, - 'assetId' : that.assetModel.id - } - }).done(function(){ - var model = newColl.get(that.model.id); - if(model){ - model.trigger("model:highlightBackgridRow"); - } - }); - - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : that.assetModel - })); - });*/ - console.log("success"); }, error: function (model, response, options) { XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - if( response.responseJSON.messageList && response.responseJSON.messageList.length > 0 && !_.isUndefined(response.responseJSON.messageList[0].fieldName)){ - if(response.responseJSON.messageList[0].fieldName == "parentPermission"){ - XAUtil.confirmPopup({ - msg :response.responseJSON.msgDesc, - callback : function(){ - that.model.set('checkParentPermission',XAEnums.BooleanValue.BOOL_FALSE.value); - that.saveMethod(); - } - }); - }else{ - that.form.fields.name.setError(response.responseJSON.msgDesc); - XAUtil.scrollToField(that.form.fields.name.$el); - //XAUtil.notifyError('Error', response.responseJSON.msgDesc); - } - }else{ - //that.form.fields.name.setError(response.responseJSON.msgDesc); - //XAUtil.scrollToField(that.form.fields.name.$el); - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - } - }else XAUtil.notifyError('Error', 'Error creating Policy!'); console.log("error"); } }); }, - /*onDelete :function(){ - var that = this; - XAUtil.confirmPopup({ - //msg :localize.tt('msg.confirmDelete'), - msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - that.model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - XAUtil.allowNavigation(); - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: true}); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error deleting Policy!'); - console.log("error"); - } - }); - - } - }); - },*/ onCancel : function(){ XAUtil.allowNavigation(); App.appRouter.navigate("#!/service/"+this.rangerService.id+"/policies",{trigger: true}); @@ -317,5 +168,5 @@ define(function(require){ }); - return PolicyCreate; + return RangerPolicyCreate; }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/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 7d35d01..532ed67 100644 --- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js +++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js @@ -33,8 +33,7 @@ define(function(require){ var VXGroupList = require('collections/VXGroupList'); var VXAuditMapList = require('collections/VXAuditMapList'); var VXUserList = require('collections/VXUserList'); - var GroupPermList = require('views/policies/GroupPermList'); - var UserPermList = require('views/policies/UserPermList'); + var PermissionList = require('views/policies/PermissionList'); var RangerPolicyResource = require('models/RangerPolicyResource'); var BackboneFormDataType = require('models/BackboneFormDataType'); @@ -45,17 +44,17 @@ define(function(require){ require('jquery-ui'); require('tag-it'); - var PolicyForm = Backbone.Form.extend( - /** @lends PolicyForm */ + var RangerPolicyForm = Backbone.Form.extend( + /** @lends RangerPolicyForm */ { - _viewName : 'PolicyForm', + _viewName : 'RangerPolicyForm', /** - * intialize a new PolicyForm Form View + * intialize a new RangerPolicyForm Form View * @constructs */ initialize: function(options) { - console.log("initialized a PolicyForm Form View"); + console.log("initialized a RangerPolicyForm Form View"); _.extend(this, _.pick(options, 'rangerServiceDefModel', 'rangerService')); this.setupForm() Backbone.Form.prototype.initialize.call(this, options); @@ -63,19 +62,8 @@ define(function(require){ this.initializeCollection(); this.bindEvents(); }, - type : { - DATABASE : 1, - TABLE : 2, - COLUMN : 3, - VIEW : 4, - UDF : 5 - }, initializeCollection: function(){ - this.permMapList = this.model.isNew() ? new VXPermMapList() : this.model.get('permMapList'); - this.auditList = this.model.isNew() ? new VXAuditMapList() : this.model.get('auditList'); - this.formInputList = XAUtil.makeCollForGroupPermission(this.model); - }, /** all events binding here */ bindEvents : function(){ @@ -94,13 +82,17 @@ define(function(require){ */ fields: ['name', 'description', 'isEnabled', 'isAuditEnabled'], schema :function(){ + return this.getSchema(); + }, + getSchema : function(){ var attrs = {}; - var that = this; + var schemaNames = this.rangerServiceDefModel.get('name') == "hdfs" ? ['description', 'isRecursive', 'isAuditEnabled'] : ['description', 'isAuditEnabled']; + var formDataType = new BackboneFormDataType(); attrs = formDataType.getFormElements(this.rangerServiceDefModel.get('resources'),this.rangerServiceDefModel.get('enums'), attrs, this); - + var attr1 = _.pick(_.result(this.model,'schemaBase'), 'name','isEnabled'); - var attr2 = _.pick(_.result(this.model,'schemaBase'),'description', 'isRecursive', 'isAuditEnabled'); + var attr2 = _.pick(_.result(this.model,'schemaBase'),schemaNames); return _.extend(attr1,_.extend(attrs,attr2)); }, /** on render callback */ @@ -108,7 +100,7 @@ define(function(require){ var that = this; Backbone.Form.prototype.render.call(this, options); - + //initialize path plugin for hdfs component : resourcePath if(!_.isUndefined(this.initilializePathPlugin) && this.initilializePathPlugin){ this.initializePathPlugins(); } @@ -129,13 +121,18 @@ define(function(require){ }, setupForm : function() { _.each(this.model.attributes.resources,function(obj,key){ - this.model.set(key, obj.values.toString()) + this.model.set(key, obj.values.toString()); + if(!_.isUndefined(obj.isRecursive)) + this.model.set('isRecursive', obj.isRecursive); + },this) }, setUpSwitches :function(){ var that = this; this.fields.isAuditEnabled.editor.setValue(this.model.get('isAuditEnabled')); this.fields.isEnabled.editor.setValue(this.model.get('isEnabled')); + if(!_.isUndefined(this.fields.isRecursive)) + this.fields.isRecursive.editor.setValue(this.model.get('isRecursive')); }, /** all custom field rendering */ renderCustomFields: function(){ @@ -155,12 +152,12 @@ define(function(require){ cache :true, data : params }).done(function(){ - that.$('[data-customfields="groupPerms"]').html(new GroupPermList({ + that.$('[data-customfields="groupPerms"]').html(new PermissionList({ collection : that.formInputList, groupList : that.groupList, userList : that.userList, - model : that.model, - accessTypes : accessType, + model : that.model, + accessTypes: accessType, rangerServiceDefModel : that.rangerServiceDefModel }).render().el); }); @@ -169,7 +166,7 @@ define(function(require){ beforeSave : function(){ var that = this, resources = []; - this.model.set('service',this.rangerService.get('name')); + var resources = {}; _.each(this.rangerServiceDefModel.get('resources'),function(obj){ if(!_.isNull(obj)){ @@ -189,12 +186,13 @@ define(function(require){ var RangerPolicyItem = Backbone.Collection.extend(); var policyItemList = new RangerPolicyItem(); policyItemList = this.setPermissionsToColl(this.formInputList, policyItemList); - this.model.set('policyItems', policyItemList) - //Unset attrs which are not needed + this.model.set('policyItems', policyItemList) + this.model.set('service',this.rangerService.get('name')); + /*//Unset attrs which are not needed _.each(this.model.attributes.resources,function(obj,key){ this.model.unset(key, obj.values.toString()) - },this) + },this)*/ }, setPermissionsToColl : function(list, policyItemList) { @@ -321,25 +319,12 @@ define(function(require){ that.fields[that.pathFieldName].$el.find('.help-inline').html('Please enter valid resource path : ' + ui.tagLabel); return false; } -// this.value = tags; - /*if(_.contains(ui.tagLabel,',')) - tags = ui.tagLabel.split(','); - this.value = tags;*/ } }); - /*this.fields.name.editor.$el.tagit({ - beforeTagAdded: function(event, ui) { - // do something special - var tags = []; - console.log(ui.tag); - if(_.contains(ui.tagLabel,',')) - tags = ui.tagLabel.split(','); - this.value = tags; - } - });*/ + }, - getPlugginAttr :function(autocomplete, searchType){ + getPlugginAttr :function(autocomplete, searchType, lookupURL){ var that =this; var type = searchType; if(!autocomplete) @@ -349,7 +334,6 @@ define(function(require){ return { closeOnSelect : true, - //placeholder : 'Select User', tags:true, multiple: true, minimumInputLength: 1, @@ -372,24 +356,8 @@ define(function(require){ }; } }, - /*query: function (query) { - var url = "service/assets/hive/resources"; - var data = _.extend(that.getDataParams(type, query.term)); - //var results = [ {id: query.term, path: query.term}]; - - $.get(url, data, function (resp) { - var serverRes = []; - if(resp.resultSize){ - serverRes = resp.vXStrings.map(function(m, i){ return {id : m.text, path: m.text}; }); - } - query.callback({results: serverRes}); - }, 'json'); - - //query.callback({results: results}); - },*/ - ajax: { - url: "service/assets/hive/resources", + url: lookupURL, dataType: 'json', params : { timeout: 3000 @@ -417,13 +385,6 @@ define(function(require){ resultSize : 0 }); }); - /*$.ajax.error(function(data) { - console.log("ajax failed"); - return { - results : [] - }; - });*/ - } }, @@ -446,5 +407,5 @@ define(function(require){ }, }); - return PolicyForm; + return RangerPolicyForm; }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e551d589/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js index 74e393e..eec4484 100644 --- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js +++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js @@ -39,10 +39,10 @@ define(function(require){ require('backgrid-paginator'); require('bootbox'); - var PolicyTableLayout = Backbone.Marionette.Layout.extend( - /** @lends PolicyTableLayout */ + var RangerPolicyTableLayout = Backbone.Marionette.Layout.extend( + /** @lends RangerPolicyTableLayout */ { - _viewName : 'PolicyTableLayout', + _viewName : 'RangerPolicyTableLayout', template: RangerPolicyTableLayoutTmpl, @@ -79,7 +79,7 @@ define(function(require){ /** ui events hash */ events: function() { var events = {}; - events['click ' + this.ui.btnDeletePolicy] = 'onDelete'; +// events['click ' + this.ui.btnDeletePolicy] = 'onDelete'; events['click ' + this.ui.btnShowMore] = 'onShowMore'; events['click ' + this.ui.btnShowLess] = 'onShowLess'; @@ -87,11 +87,11 @@ define(function(require){ }, /** - * intialize a new PolicyTableLayout Layout + * intialize a new RangerPolicyTableLayout Layout * @constructs */ initialize: function(options) { - console.log("initialized a PolicyTableLayout Layout"); + console.log("initialized a RangerPolicyTableLayout Layout"); _.extend(this, _.pick(options,'rangerService')); @@ -157,40 +157,6 @@ define(function(require){ editable: false, sortable : false }, - /* database : { - cell : "html", - label : localization.tt("lbl.database"), - editable: false, - sortable : false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue,model) { - rawValue = model.get('resources') - var name='' - _.each(rawValue, function(obj){ - if(!_.isUndefined(obj.values)) - name += obj.values.toString(); - }); - return name; - } - }) - },*/ - /* resources : { - cell : "html", - label : localization.tt("lbl.resourcePath"), - editable: false, - sortable : false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - console.log(rawValue) - var name='' - _.each(rawValue, function(obj){ - if(!_.isUndefined(obj.values)) - name += obj.values.toString(); - }); - return name; - } - }) - },*/ isEnabled:{ label:localization.tt('lbl.status'), cell :"html", @@ -217,118 +183,12 @@ define(function(require){ drag : false, sortable : false }, - /*isRecursive:{ - label:localization.tt('lbl.includesAllPathsRecursively'), - cell :"html", - editable:false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - var status; - _.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(rawValue) == m.value){ - status = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - } - }); - return status ? '<label class="label label-success">YES</label>' : '<label class="label label">NO</label>'; - } - }), - click : false, - drag : false, - sortable : false - }, - permMapList : { - reName : 'groupName', - cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), - label : localization.tt("lbl.groups"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - if(!_.isUndefined(rawValue)) - return XAUtil.showGroups(rawValue); - else - return '--'; - } - }), - editable : false, - sortable : false - }, - auditList : { - label : localization.tt("lbl.auditLogging"), - cell: "html", - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue, model) { - return model.has('auditList') ? '<label class="label label-success">ON</label>' : '<label class="label label">OFF</label>'; - } - }), - click : false, - drag : false, - sortable : false, - editable : false - }, - isEncrypt:{ - label:localization.tt("lbl.encrypted"), - cell :"Switch", - editable:false, - // canHeaderFilter : true, - // headerFilterList :[{label : 'ON',value : 1},{label :'OFF' ,value:2}], - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - var status; - _.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(rawValue) == m.value){ - status = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - return ; - } - }); - //You can use rawValue to custom your html, you can change this value using the name parameter. - return status; - } - }), - click : false, - drag : false, - onText : 'ON', - offText : 'OFF', - sortable : false - }, - resourceStatus:{ - label:localization.tt('lbl.status'), - cell :"html", - editable:false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - var status; - _.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(rawValue) == m.value){ - status = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - } - }); - return status ? '<label class="label label-success">Enabled</label>' : '<label class="label label-important">Disabled</label>'; - } - }), - click : false, - drag : false, - sortable : false - }, - permissions : { - cell : "html", - label : localization.tt("lbl.action"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue,model) { - return '<a href="#!/hdfs/'+model.get('assetId')+'/policy/'+model.id+'" class="btn btn-mini" title="Edit"><i class="icon-edit icon-large" /></a>\ - <a href="javascript:void(0);" data-name ="deletePolicy" data-id="'+model.id+'" class="btn btn-mini btn-danger" title="Delete"><i class="icon-trash icon-large" /></a>'; - //You can use rawValue to custom your html, you can change this value using the name parameter. - } - }), - editable: false, - sortable : false - - } -*/ }; _.each(this.rangerServiceDefModel.get('resources'), function(obj){ if(!_.isUndefined(obj) && !_.isNull(obj)) cols[obj.name]={ cell : "html", - label : obj.name, + label : XAUtil.capitaliseFirstLetter(obj.name), editable: false, sortable : false, formatter: _.extend({}, Backgrid.CellFormatter.prototype, { @@ -432,5 +292,5 @@ define(function(require){ }); - return PolicyTableLayout; + return RangerPolicyTableLayout; });
