Repository: incubator-ranger Updated Branches: refs/heads/master 89661939f -> de598fada
RANGER-389 : Fix - User not able to create service 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/de598fad Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/de598fad Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/de598fad Branch: refs/heads/master Commit: de598fadac7626f72649c4d60aef1f031cffb7bb Parents: 8966193 Author: Gautam Borad <[email protected]> Authored: Tue Apr 14 19:15:18 2015 +0530 Committer: Velmurugan Periasamy <[email protected]> Committed: Tue Apr 14 12:16:24 2015 -0400 ---------------------------------------------------------------------- .../java/org/apache/ranger/biz/UserMgr.java | 2 - .../java/org/apache/ranger/biz/XUserMgr.java | 11 +- .../java/org/apache/ranger/rest/UserREST.java | 12 +- .../RangerSecurityContextFormationFilter.java | 2 +- .../ranger/service/RangerBaseModelService.java | 2 +- .../src/main/webapp/scripts/utils/XAGlobals.js | 5 +- .../src/main/webapp/scripts/utils/XAUtils.js | 1091 ++++++++++-------- .../org/apache/ranger/biz/TestXUserMgr.java | 4 +- 8 files changed, 659 insertions(+), 470 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java index 3e600fe..52b6695 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java @@ -1099,8 +1099,6 @@ public class UserMgr { } } - - xUserMgr.assignPermissionToUser(userProfile,true); XXPortalUser xXPortalUser = null; String loginId = userProfile.getLoginId(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java index b426bb8..c96eb17 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java @@ -656,9 +656,9 @@ public class XUserMgr extends XUserMgrBase { } } - public void checkPermissionRoleByGivenUrls(String enteredURL, String method) { + /*public void checkPermissionRoleByGivenUrls(String enteredURL, String method) { Long currentUserId = ContextUtil.getCurrentUserId(); - /*List<String> notPermittedUrls = daoManager.getXXModuleDef() + List<String> notPermittedUrls = daoManager.getXXModuleDef() .findModuleURLOfPemittedModules(currentUserId); if (notPermittedUrls != null) { List<XXPortalUserRole> xPortalUserRoles = daoManager @@ -679,14 +679,15 @@ public class XUserMgr extends XUserMgrBase { if (flag) { throw restErrorUtil.create403RESTException("Access Denied"); } - }*/ + } boolean flag = false; List<XXPortalUserRole> xPortalUserRoles = daoManager .getXXPortalUserRole().findByUserId(currentUserId); for (XXPortalUserRole xPortalUserRole : xPortalUserRoles) { if (xPortalUserRole.getUserRole().equalsIgnoreCase( RangerConstants.ROLE_USER) - && enteredURL.toLowerCase().contains("/permission")) { + && enteredURL.contains("/permission") + && !enteredURL.contains("/templates")) { flag = true; } } @@ -694,7 +695,7 @@ public class XUserMgr extends XUserMgrBase { throw restErrorUtil.create403RESTException("Access Denied"); } - } + }*/ // Module permissions public VXModuleDef createXModuleDefPermission(VXModuleDef vXModuleDef) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java b/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java index 0bcba7d..3cb2d2d 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java @@ -32,6 +32,7 @@ import javax.ws.rs.core.Context; import org.apache.log4j.Logger; import org.apache.ranger.biz.UserMgr; +import org.apache.ranger.biz.XUserMgr; import org.apache.ranger.common.MessageEnums; import org.apache.ranger.common.RESTErrorUtil; import org.apache.ranger.common.RangerConfigUtil; @@ -86,6 +87,9 @@ public class UserREST { @Autowired RangerRestUtil msRestUtil; + + @Autowired + XUserMgr xUserMgr; /** * Implements the traditional search functionalities for UserProfile @@ -183,8 +187,14 @@ public class UserREST { @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") public VXPortalUser createDefaultAccountUser(VXPortalUser userProfile, @Context HttpServletRequest servletRequest) { + VXPortalUser vxPortalUser; logger.info("create:" + userProfile.getEmailAddress()); - return userManager.createDefaultAccountUser(userProfile); + vxPortalUser=userManager.createDefaultAccountUser(userProfile); + if(vxPortalUser!=null) + { + xUserMgr.assignPermissionToUser(vxPortalUser, true); + } + return vxPortalUser; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java index 048d58c..ad8c95e 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java @@ -130,7 +130,7 @@ public class RangerSecurityContextFormationFilter extends GenericFilterBean { context.setUserSession(userSession); - xUserMgr.checkPermissionRoleByGivenUrls(httpRequest.getRequestURL().toString(),httpMethod); +// xUserMgr.checkPermissionRoleByGivenUrls(httpRequest.getRequestURL().toString(),httpMethod); } chain.doFilter(request, response); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java index c134642..ee1b589 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java @@ -391,7 +391,7 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range List<T> resultList = getDao().executeQueryInSecurityContext(tEntityClass, query); if (vList != null) { - vList.setResultSize(query.getResultList().size()); + vList.setResultSize(resultList.size()); vList.setPageSize(query.getMaxResults()); vList.setSortBy(searchCriteria.getSortBy()); vList.setSortType(searchCriteria.getSortType()); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/main/webapp/scripts/utils/XAGlobals.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/utils/XAGlobals.js b/security-admin/src/main/webapp/scripts/utils/XAGlobals.js index 6805ffd..ee8c90d 100644 --- a/security-admin/src/main/webapp/scripts/utils/XAGlobals.js +++ b/security-admin/src/main/webapp/scripts/utils/XAGlobals.js @@ -64,13 +64,14 @@ define(function(require){ XAGlobals.hardcoded.HBaseAssetId = 2; XAGlobals.hardcoded.HiveAssetId = 3; XAGlobals.DenyControllerActions = ['userManagerAction','userCreateAction','userEditAction','groupCreateAction', - 'groupEditAction','auditReportAction','loginSessionDetail','serviceCreateAction','serviceEditAction']; + 'groupEditAction','auditReportAction','loginSessionDetail','serviceCreateAction','serviceEditAction','modulePermissionsAction','modulePermissionEditAction']; XAGlobals.ListOfModuleActions = { 'Policy Manager':['serviceManagerAction','serviceCreateAction','serviceEditAction', 'policyManageAction','RangerPolicyCreateAction','RangerPolicyEditAction'], 'Users/Groups' : ['userManagerAction','userCreateAction','userEditAction','groupCreateAction','groupEditAction'], 'Analytics' : ['userAccessReportAction'], - 'Audit' : ['auditReportAction','loginSessionDetail'] + 'Audit' : ['auditReportAction','loginSessionDetail'], + 'Permissions' : ['modulePermissionsAction','modulePermissionEditAction'] }; return XAGlobals; }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/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 0c704fc..f0a8723 100644 --- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js +++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js @@ -17,22 +17,22 @@ * under the License. */ - - define(function(require) { - 'use strict'; - - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); + 'use strict'; + + var XAEnums = require('utils/XAEnums'); + var localization = require('utils/XALangSupport'); var XAUtils = {}; require('bootstrap-notify'); - + // /////////////////////////////////////////////////////// // Enum utility methods // ////////////////////////////////////////////////////// /** * Get enum for the enumId - * @param {integer} enumId - The enumId + * + * @param {integer} + * enumId - The enumId */ XAUtils.getEnum = function(enumId) { if (!enumId || enumId.length < 1) { @@ -47,8 +47,11 @@ define(function(require) { /** * Get enum by Enum and value - * @param {Object} myEnum - The enum - * @param {integer} value - The value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value */ XAUtils.enumElementByValue = function(myEnum, value) { var element = _.detect(myEnum, function(element) { @@ -59,11 +62,16 @@ define(function(require) { /** * Get enum by Enum and name, value - * @param {Object} myEnum - The enum - * @param {string} propertyName - The name of key - * @param {integer} propertyValue - The value + * + * @param {Object} + * myEnum - The enum + * @param {string} + * propertyName - The name of key + * @param {integer} + * propertyValue - The value */ - XAUtils.enumElementByPropertyNameValue = function(myEnum, propertyName, propertyValue) { + XAUtils.enumElementByPropertyNameValue = function(myEnum, propertyName, + propertyValue) { for ( var element in myEnum) { if (myEnum[element][propertyName] == propertyValue) { return myEnum[element]; @@ -74,8 +82,11 @@ define(function(require) { /** * Get enum value for given enum label - * @param {Object} myEnum - The enum - * @param {string} label - The label to search for in the Enum + * + * @param {Object} + * myEnum - The enum + * @param {string} + * label - The label to search for in the Enum */ XAUtils.enumLabelToValue = function(myEnum, label) { var element = _.detect(myEnum, function(element) { @@ -86,8 +97,11 @@ define(function(require) { /** * Get enum label for given enum value - * @param {Object} myEnum - The enum - * @param {integer} value - The value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value */ XAUtils.enumValueToLabel = function(myEnum, value) { var element = _.detect(myEnum, function(element) { @@ -98,8 +112,11 @@ define(function(require) { /** * Get enum label tt string for given Enum value - * @param {Object} myEnum - The enum - * @param {integer} value - The value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value */ XAUtils.enumValueToLabeltt = function(myEnum, value) { var element = _.detect(myEnum, function(element) { @@ -110,10 +127,12 @@ define(function(require) { /** * Get NVpairs for given Enum to be used in Select - * @param {Object} myEnum - The enum + * + * @param {Object} + * myEnum - The enum */ XAUtils.enumToSelectPairs = function(myEnum) { - return _.map(myEnum, function(o){ + return _.map(myEnum, function(o) { return { val : o.value, label : o.label @@ -121,10 +140,11 @@ define(function(require) { }); }; - /** * Get NVpairs for given Enum - * @param {Object} myEnum - The enum + * + * @param {Object} + * myEnum - The enum */ XAUtils.enumNVPairs = function(myEnum) { var nvPairs = { @@ -140,7 +160,9 @@ define(function(require) { /** * Get array NV pairs for given Array - * @param {Array} myArray - The eArraynum + * + * @param {Array} + * myArray - The eArraynum */ XAUtils.arrayNVPairs = function(myArray) { var nvPairs = { @@ -154,17 +176,25 @@ define(function(require) { /** * Notify Info the given title / text - * @param {string} text - The text - * @param {string} type - The type - * @param {object} text - Plugin options + * + * @param {string} + * text - The text + * @param {string} + * type - The type + * @param {object} + * text - Plugin options */ XAUtils.notifyInfo = function(type, text, options) { var html = '<div style="width: 245px;"><div style="min-height: 16px;"><div><span class="icon-exclamation-sign"></span>\ - </div><h4 style="margin-top: -19px;margin-left: 15px;">Info</h4><div>'+text+'</div></div></div>'; - if(_.isUndefined(options)){ + </div><h4 style="margin-top: -19px;margin-left: 15px;">Info</h4><div>' + + text + '</div></div></div>'; + if (_.isUndefined(options)) { options = { - message: { html: html, text: text }, - type:'info' + message : { + html : html, + text : text + }, + type : 'info' }; } $('.top-right').notify(options).show(); @@ -172,44 +202,60 @@ define(function(require) { /** * Notify Info the given title / text - * @param {string} text - The text - * @param {string} type - The type - * @param {object} text - Plugin options + * + * @param {string} + * text - The text + * @param {string} + * type - The type + * @param {object} + * text - Plugin options */ XAUtils.notifyError = function(type, text, options) { var html = '<div style="width: 245px;"><div style="min-height: 16px;"><div><span class="icon-warning-sign"></span>\ - </div><h4 style="margin-top: -19px;margin-left: 15px;">Error</h4><div>'+text+'</div></div></div>'; - if(_.isUndefined(options)){ + </div><h4 style="margin-top: -19px;margin-left: 15px;">Error</h4><div>' + + text + '</div></div></div>'; + if (_.isUndefined(options)) { options = { - message: { html: html, text: text }, - type:'error' + message : { + html : html, + text : text + }, + type : 'error' }; } $('.top-right').notify(options).show(); }; - + /** * Notify Info the given title / text - * @param {string} text - The text - * @param {string} type - The type - * @param {object} text - Plugin options + * + * @param {string} + * text - The text + * @param {string} + * type - The type + * @param {object} + * text - Plugin options */ XAUtils.notifySuccess = function(type, text, options) { var html = '<div style="width: 245px;"><div style="min-height: 16px;"><div><span class="icon-ok-sign"></span>\ - </div><h4 style="margin-top: -19px;margin-left: 15px;">Success</h4><div>'+text+'</div></div></div>'; - if(_.isUndefined(options)){ + </div><h4 style="margin-top: -19px;margin-left: 15px;">Success</h4><div>' + + text + '</div></div></div>'; + if (_.isUndefined(options)) { options = { - message: { html:html}, - type:'success', + message : { + html : html + }, + type : 'success', }; } $('.top-right').notify(options).show(); }; - - + /** * Convert new line to <br /> - * @param {string} str - the string to convert + * + * @param {string} + * str - the string to convert */ XAUtils.nl2br = function(str) { if (!str) @@ -218,8 +264,11 @@ define(function(require) { }; /** - * Convert <br /> to new line - * @param {string} str - the string to convert + * Convert <br /> + * to new line + * + * @param {string} + * str - the string to convert */ XAUtils.br2nl = function(str) { if (!str) @@ -229,7 +278,9 @@ define(function(require) { /** * Escape html chars - * @param {string} str - the html string to escape + * + * @param {string} + * str - the html string to escape */ XAUtils.escapeHtmlChar = function(str) { if (!str) @@ -244,7 +295,9 @@ define(function(require) { /** * nl2br and Escape html chars - * @param {string} str - the html string + * + * @param {string} + * str - the html string */ XAUtils.nl2brAndEscapeHtmlChar = function(str) { @@ -257,8 +310,11 @@ define(function(require) { /** * prevent navigation with msg and call callback - * @param {String} msg - The msg to show - * @param {function} callback - The callback to call + * + * @param {String} + * msg - The msg to show + * @param {function} + * callback - The callback to call */ XAUtils.preventNavigation = function(msg, $form) { window._preventNavigation = true; @@ -286,576 +342,699 @@ define(function(require) { e.preventDefault(); e.stopImmediatePropagation(); - bootbox.dialog(msg, [{ - "label": localization.tt('btn.stayOnPage'), - "class": "btn-success btn-small", - "callback": function() {} + bootbox.dialog(msg, [ { + "label" : localization.tt('btn.stayOnPage'), + "class" : "btn-success btn-small", + "callback" : function() { + } }, { - "label": localization.tt('btn.leavePage'), - "class": "btn-danger btn-small", - "callback": function() { + "label" : localization.tt('btn.leavePage'), + "class" : "btn-danger btn-small", + "callback" : function() { XAUtils.allowNavigation(); target.click(); } - }]); + } ]); return false; } }; /** * Bootbox wrapper for alert - * @param {Object} params - The params + * + * @param {Object} + * params - The params */ XAUtils.alertPopup = function(params) { - if(params.callback == undefined){ + if (params.callback == undefined) { bootbox.alert(params.msg); } else { - bootbox.alert(params.msg,params.callback); + bootbox.alert(params.msg, params.callback); } }; /** * Bootbox wrapper for confirm - * @param {Object} params - The params + * + * @param {Object} + * params - The params */ XAUtils.confirmPopup = function(params) { bootbox.confirm(params.msg, function(result) { - if(result){ + if (result) { params.callback(); } - }); - }; + }); + }; - XAUtils.filterResultByIds = function(results , selectedVals){ - return _.filter(results,function(obj){ - if($.inArray(obj.id,selectedVals) < 0) + XAUtils.filterResultByIds = function(results, selectedVals) { + return _.filter(results, function(obj) { + if ($.inArray(obj.id, selectedVals) < 0) return obj; - - }); + + }); }; - XAUtils.filterResultByText = function(results , selectedVals){ - return _.filter(results,function(obj){ - if($.inArray(obj.text,selectedVals) < 0) + XAUtils.filterResultByText = function(results, selectedVals) { + return _.filter(results, function(obj) { + if ($.inArray(obj.text, selectedVals) < 0) return obj; - - }); + + }); }; - XAUtils.scrollToField = function(field){ + XAUtils.scrollToField = function(field) { $("html, body").animate({ - scrollTop: field.position().top-80 - }, 1100, function(){ + scrollTop : field.position().top - 80 + }, 1100, function() { field.focus(); }); }; - XAUtils.blockUI = function(options){ - var Opt = {autoUnblock : false , clickUnblock : false, bgPath : 'images/' ,content: '<img src="images/blockLoading.gif" > Please wait..',css :{}}; - options = _.isUndefined(options) ? Opt : options; + XAUtils.blockUI = function(options) { + var Opt = { + autoUnblock : false, + clickUnblock : false, + bgPath : 'images/', + content : '<img src="images/blockLoading.gif" > Please wait..', + css : {} + }; + options = _.isUndefined(options) ? Opt : options; $.msg(options); }; - XAUtils.showGroups = function(rawValue){ - var showMoreLess = false,id; - if(_.isArray(rawValue)) - rawValue = new Backbone.Collection(rawValue); - if(!_.isUndefined(rawValue) && rawValue.models.length > 0){ - var groupArr = _.uniq(_.compact(_.map(rawValue.models, function(m, i){ - if(m.has('groupName')) - return m.get('groupName') ; + XAUtils.showGroups = function(rawValue) { + var showMoreLess = false, id; + if (_.isArray(rawValue)) + rawValue = new Backbone.Collection(rawValue); + if (!_.isUndefined(rawValue) && rawValue.models.length > 0) { + var groupArr = _.uniq(_.compact(_.map(rawValue.models, function(m, + i) { + if (m.has('groupName')) + return m.get('groupName'); }))); - if(groupArr.length > 0){ - if(rawValue.first().has('resourceId')) + if (groupArr.length > 0) { + if (rawValue.first().has('resourceId')) id = rawValue.first().get('resourceId'); else id = rawValue.first().get('userId'); } - var newGroupArr = _.map(groupArr, function(name, i){ - if(i >= 4) - return '<span class="label label-info" policy-group-id="'+id+'" style="display:none;">' + name + '</span>'; - else if(i == 3 && groupArr.length > 4){ + var newGroupArr = _.map(groupArr, function(name, i) { + if (i >= 4) + return '<span class="label label-info" policy-group-id="' + + id + '" style="display:none;">' + name + + '</span>'; + else if (i == 3 && groupArr.length > 4) { showMoreLess = true; - return '<span class="label label-info" policy-group-id="'+id+'">' + name + '</span>'; - } - else - return '<span class="label label-info" policy-group-id="'+id+'">' + name + '</span>'; + return '<span class="label label-info" policy-group-id="' + + id + '">' + name + '</span>'; + } else + return '<span class="label label-info" policy-group-id="' + + id + '">' + name + '</span>'; }); - if(showMoreLess){ - newGroupArr.push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-group-id="'+id+'"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-group-id="'+id+'" style="display:none;"><code> - Less..</code></a></span>'); + if (showMoreLess) { + newGroupArr + .push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-group-id="' + + id + + '"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-group-id="' + + id + + '" style="display:none;"><code> - Less..</code></a></span>'); } return newGroupArr.length ? newGroupArr.join(' ') : '--'; - }else + } else return '--'; }; - XAUtils.showGroupsOrUsersForPolicy = function(rawValue, model, showGroups){ + XAUtils.showGroupsOrUsersForPolicy = function(rawValue, model, showGroups) { var showMoreLess = false, groupArr = []; var type = _.isUndefined(showGroups) ? 'groups' : 'users'; - if(!_.isArray(rawValue) && !_.isUndefined(rawValue[type])) + if (!_.isArray(rawValue) && !_.isUndefined(rawValue[type])) return '--'; - _.each(rawValue,function(perm){ - groupArr = _.union(groupArr, perm[type]) + _.each(rawValue, function(perm) { + groupArr = _.union(groupArr, perm[type]) }); - - var newGroupArr = _.map(groupArr, function(name, i){ - if(i >= 4){ - return '<span class="label label-info" policy-'+type+'-id="'+model.id+'" style="display:none;">' + name + '</span>'; - }else if(i == 3 && groupArr.length > 4){ + + var newGroupArr = _.map(groupArr, function(name, i) { + if (i >= 4) { + return '<span class="label label-info" policy-' + type + + '-id="' + model.id + '" style="display:none;">' + + name + '</span>'; + } else if (i == 3 && groupArr.length > 4) { showMoreLess = true; - return '<span class="label label-info" policy-'+type+'-id="'+model.id+'">' + name + '</span>'; - }else{ - return '<span class="label label-info" policy-'+type+'-id="'+model.id+'">' + name + '</span>'; + return '<span class="label label-info" policy-' + type + + '-id="' + model.id + '">' + name + '</span>'; + } else { + return '<span class="label label-info" policy-' + type + + '-id="' + model.id + '">' + name + '</span>'; } }); - if(showMoreLess){ - newGroupArr.push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-'+type+'-id="'+model.id+'"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-'+type+'-id="'+model.id+'" style="display:none;"><code> - Less..</code></a></span>'); + if (showMoreLess) { + newGroupArr + .push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-' + + type + + '-id="' + + model.id + + '"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-' + + type + + '-id="' + + model.id + + '" style="display:none;"><code> - Less..</code></a></span>'); } return newGroupArr.length ? newGroupArr.join(' ') : '--'; - + }; - XAUtils.showGroupsOrUsers = function(rawValue, model, userOrGroups){ + XAUtils.showGroupsOrUsers = function(rawValue, model, userOrGroups) { var showMoreLess = false, objArr = []; - if(!_.isArray(rawValue) && rawValue.length == 0) + if (!_.isArray(rawValue) && rawValue.length == 0) return '--'; - if(userOrGroups == 'groups'){ - _.each(rawValue,function(perm){ + if (userOrGroups == 'groups') { + _.each(rawValue, function(perm) { objArr = _.union(objArr, perm.groupName) }); - }else if(userOrGroups == 'users'){ - _.each(rawValue,function(perm){ + } else if (userOrGroups == 'users') { + _.each(rawValue, function(perm) { objArr = _.union(objArr, perm.userName) }); } - var newObjArr = _.map(objArr, function(name, i){ - if(i >= 4){ - return '<span class="label label-info" policy-'+userOrGroups+'-id="'+model.id+'" style="display:none;">' + name + '</span>'; - }else if(i == 3 && objArr.length > 4){ + var newObjArr = _.map(objArr, function(name, i) { + if (i >= 4) { + return '<span class="label label-info" policy-' + userOrGroups + + '-id="' + model.id + '" style="display:none;">' + + name + '</span>'; + } else if (i == 3 && objArr.length > 4) { showMoreLess = true; - return '<span class="label label-info" policy-'+userOrGroups+'-id="'+model.id+'">' + name + '</span>'; - }else{ - return '<span class="label label-info" policy-'+userOrGroups+'-id="'+model.id+'">' + name + '</span>'; + return '<span class="label label-info" policy-' + userOrGroups + + '-id="' + model.id + '">' + name + '</span>'; + } else { + return '<span class="label label-info" policy-' + userOrGroups + + '-id="' + model.id + '">' + name + '</span>'; } }); - if(showMoreLess){ - newObjArr.push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-'+userOrGroups+'-id="'+model.id+'"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-'+userOrGroups+'-id="'+model.id+'" style="display:none;"><code> - Less..</code></a></span>'); + if (showMoreLess) { + newObjArr + .push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-' + + userOrGroups + + '-id="' + + model.id + + '"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-' + + userOrGroups + + '-id="' + + model.id + + '" style="display:none;"><code> - Less..</code></a></span>'); } return newObjArr.length ? newObjArr.join(' ') : '--'; }; - XAUtils.defaultErrorHandler = function(model, error) { - var App = require('App'); + var App = require('App'); var vError = require('views/common/ErrorView'); - if (error.status == 404 ) { - App.rContent.show(new vError({ - status : error.status - })); - }else if (error.status == 401 ) { - App.rContent.show(new vError({ - status : error.status - })); - }else if (error.status == 419 ) { - window.location = 'login.jsp' - } - }; - XAUtils.select2Focus = function(event) { - if (/^select2-focus/.test(event.type)) { - $(this).select2('open'); - } - }; - XAUtils.makeCollForGroupPermission = function(model){ - var XAEnums = require('utils/XAEnums'); - var formInputColl = new Backbone.Collection(); - // permMapList = [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4}, {id: 18, groupId : 2, permType :5} ] - // [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4} ] + if (error.status == 404) { + App.rContent.show(new vError({ + status : error.status + })); + } else if (error.status == 401) { + App.rContent.show(new vError({ + status : error.status + })); + } else if (error.status == 419) { + window.location = 'login.jsp' + } + }; + XAUtils.select2Focus = function(event) { + if (/^select2-focus/.test(event.type)) { + $(this).select2('open'); + } + }; + XAUtils.makeCollForGroupPermission = function(model) { + var XAEnums = require('utils/XAEnums'); + var formInputColl = new Backbone.Collection(); + // permMapList = [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId + // : 1, permType :4}, {id: 18, groupId : 2, permType :5} ] + // [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, + // permType :4} ] // [2] => [ {id: 18, groupId : 2, permType :5} ] - if(!model.isNew()){ - if(!_.isUndefined(model.get('policyItems'))){ - var policyItems = model.get('policyItems'); -// var groupPolicyItems = _.filter(policyItems,function(m){if(!_.isEmpty(m.groups)) return m;}); - _.each(policyItems,function(obj){ + if (!model.isNew()) { + if (!_.isUndefined(model.get('policyItems'))) { + var policyItems = model.get('policyItems'); + // var groupPolicyItems = + // _.filter(policyItems,function(m){if(!_.isEmpty(m.groups)) + // return m;}); + _.each(policyItems, function(obj) { var groupNames = null, userNames = null; - if(!_.isEmpty(obj.groups)) groupNames = obj.groups.join(','); - if(!_.isEmpty(obj.users)) userNames = obj.users.join(','); - var m = new Backbone.Model({ - groupName : groupNames, - userName : userNames, - accesses : obj.accesses, - conditions : obj.conditions, - delegateAdmin: obj.delegateAdmin, - editMode : true, - }); - formInputColl.add(m); - + if (!_.isEmpty(obj.groups)) + groupNames = obj.groups.join(','); + if (!_.isEmpty(obj.users)) + userNames = obj.users.join(','); + var m = new Backbone.Model({ + groupName : groupNames, + userName : userNames, + accesses : obj.accesses, + conditions : obj.conditions, + delegateAdmin : obj.delegateAdmin, + editMode : true, + }); + formInputColl.add(m); + }); } } return formInputColl; }; - - XAUtils.makeCollForUserPermission = function(model){ - var XAEnums = require('utils/XAEnums'); - var coll = new Backbone.Collection(); - // permMapList = [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4}, {id: 18, groupId : 2, permType :5} ] - // [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4} ] + + XAUtils.makeCollForUserPermission = function(model) { + var XAEnums = require('utils/XAEnums'); + var coll = new Backbone.Collection(); + // permMapList = [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId + // : 1, permType :4}, {id: 18, groupId : 2, permType :5} ] + // [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, + // permType :4} ] // [2] => [ {id: 18, groupId : 2, permType :5} ] - if(!model.isNew()){ - if(!_.isUndefined(model.get('policyItems'))){ - var policyItems = model.get('policyItems'); - var userPolicyItems = _.filter(policyItems,function(m){if(!_.isEmpty(m.users)) return m;}); - _.each(userPolicyItems,function(obj){ - var m = new Backbone.Model({ -// userId : groupIds.join(','), - userName : obj.users.join(','), -// ipAddress : values[0].ipAddress, - editMode : true, - accesses : obj.accesses, - conditions : obj.conditions - }); - coll.add(m); - + if (!model.isNew()) { + if (!_.isUndefined(model.get('policyItems'))) { + var policyItems = model.get('policyItems'); + var userPolicyItems = _.filter(policyItems, function(m) { + if (!_.isEmpty(m.users)) + return m; + }); + _.each(userPolicyItems, function(obj) { + var m = new Backbone.Model({ + // userId : groupIds.join(','), + userName : obj.users.join(','), + // ipAddress : values[0].ipAddress, + editMode : true, + accesses : obj.accesses, + conditions : obj.conditions + }); + coll.add(m); + }); } } return coll; }; - XAUtils.checkDirtyField = function(arg1, arg2, $elem) { - if(_.isEqual(arg1,arg2)){ - $elem.removeClass('dirtyField'); - }else{ - $elem.addClass('dirtyField'); - } + XAUtils.checkDirtyField = function(arg1, arg2, $elem) { + if (_.isEqual(arg1, arg2)) { + $elem.removeClass('dirtyField'); + } else { + $elem.addClass('dirtyField'); + } }; - XAUtils.checkDirtyFieldForToggle = function($el){ - if($el.hasClass('dirtyField')){ + XAUtils.checkDirtyFieldForToggle = function($el) { + if ($el.hasClass('dirtyField')) { $el.removeClass('dirtyField'); - }else{ + } else { $el.addClass('dirtyField'); } }; - XAUtils.checkDirtyFieldForSelect2 = function($el, dirtyFieldValue, that){ - if($el.hasClass('dirtyField') && _.isEqual($el.val(), dirtyFieldValue.toString())){ + XAUtils.checkDirtyFieldForSelect2 = function($el, dirtyFieldValue, that) { + if ($el.hasClass('dirtyField') + && _.isEqual($el.val(), dirtyFieldValue.toString())) { $el.removeClass('dirtyField'); - }else if(!$el.hasClass('dirtyField')){ + } else if (!$el.hasClass('dirtyField')) { $el.addClass('dirtyField'); - dirtyFieldValue = !_.isUndefined(that.value.values) ? that.value.values : ''; + dirtyFieldValue = !_.isUndefined(that.value.values) ? that.value.values + : ''; } return dirtyFieldValue; }; XAUtils.enumToSelectLabelValuePairs = function(myEnum) { - return _.map(myEnum, function(o){ + return _.map(myEnum, function(o) { return { label : o.label, - value : o.value+'' - //category :'DHSS', + value : o.value + '' + // category :'DHSS', }; }); }; XAUtils.hackForVSLabelValuePairs = function(myEnum) { - return _.map(myEnum, function(o){ + return _.map(myEnum, function(o) { return { label : o.label, - value : o.label+'' - //category :'DHSS', + value : o.label + '' + // category :'DHSS', }; }); }; - XAUtils.addVisualSearch = function(searchOpt,serverAttrName,collection,pluginAttr){ - var visualSearch ; - var search = function(searchCollection, serverAttrName, searchOpt,collection){ + XAUtils.addVisualSearch = function(searchOpt, serverAttrName, collection, + pluginAttr) { + var visualSearch; + var search = function(searchCollection, serverAttrName, searchOpt, + collection) { var params = {}; - searchCollection.each(function(m){ - var serverParamName = _.findWhere(serverAttrName,{text :m.attributes.category}); + searchCollection.each(function(m) { + var serverParamName = _.findWhere(serverAttrName, { + text : m.attributes.category + }); var extraParam = {}; - if(_.has(serverParamName,'multiple') && serverParamName.multiple){ - extraParam[serverParamName.label] = XAUtils.enumLabelToValue(serverParamName.optionsArr,m.get('value'));; - $.extend(params ,extraParam); - }else{ - if(!_.isUndefined(serverParamName)){ + if (_.has(serverParamName, 'multiple') + && serverParamName.multiple) { + extraParam[serverParamName.label] = XAUtils + .enumLabelToValue(serverParamName.optionsArr, m + .get('value')); + ; + $.extend(params, extraParam); + } else { + if (!_.isUndefined(serverParamName)) { extraParam[serverParamName.label] = m.get('value'); - $.extend(params ,extraParam); + $.extend(params, extraParam); } } }); - collection.queryParams = $.extend(collection.queryParams,params); + collection.queryParams = $.extend(collection.queryParams, params); collection.state.currentPage = collection.state.firstPage; collection.fetch({ reset : true, cache : false - //data : params, + // data : params, }); }; - //var searchOpt = ['Event Time','User','Resource Name','Resource ID','Resource Type','Repository Name','Repository Type','Result','Client IP','Client Type','Access Type','Access Enforcer','Audit Type','Session ID']; - + // var searchOpt = ['Event Time','User','Resource Name','Resource + // ID','Resource Type','Repository Name','Repository + // Type','Result','Client IP','Client Type','Access Type','Access + // Enforcer','Audit Type','Session ID']; + var callbackCommon = { - search : function(query, searchCollection) { - collection.VSQuery = query; - search(searchCollection, serverAttrName, searchOpt,collection); - }, - clearSearch: function(callback) { + search : function(query, searchCollection) { + collection.VSQuery = query; + search(searchCollection, serverAttrName, searchOpt, collection); + }, + clearSearch : function(callback) { _.each(serverAttrName, function(attr) { delete collection.queryParams[attr.label]; }); callback(); }, - facetMatches : function(callback) { - // console.log(visualSearch); - var searchOptTemp = $.extend(true, [], searchOpt); - visualSearch.searchQuery.each(function(m){ - if($.inArray(m.get('category'),searchOptTemp) >= 0){ - searchOptTemp.splice($.inArray(m.get('category'),searchOptTemp), 1); - } - }); - //visualSearch.options.readOnly = searchOptTemp.length <= 0 ? true : false; - callback(searchOptTemp,{preserveOrder : false}); - }, - removedFacet : function(removedFacet,searchCollection,indexObj){ - //console.log(removedFacet); - - var removedFacetSeverName = _.findWhere(serverAttrName,{text :removedFacet.get('category')}); - if(!_.isUndefined(removedFacetSeverName)){ - delete collection.queryParams[removedFacetSeverName.label]; - collection.state.currentPage = collection.state.firstPage; - collection.fetch({ - reset : true, - cache : false - }); - } - //TODO Added for Demo to remove datapicker popups - if(!_.isUndefined(visualSearch.searchBox.$el)) - visualSearch.searchBox.$el.parents('body').find('.datepicker').remove(); - } - //we can also add focus, blur events callback here.. - }; - pluginAttr.callbacks = $.extend(callbackCommon, pluginAttr.callbacks); - //Initializing VisualSearch Plugin.... - visualSearch = VS.init($.extend(pluginAttr, {remainder : false })); - - if(visualSearch.searchQuery.length > 0) //For On Load Visual Search - search(visualSearch.searchQuery, serverAttrName, searchOpt,collection); - + facetMatches : function(callback) { + // console.log(visualSearch); + var searchOptTemp = $.extend(true, [], searchOpt); + visualSearch.searchQuery.each(function(m) { + if ($.inArray(m.get('category'), searchOptTemp) >= 0) { + searchOptTemp.splice($.inArray(m.get('category'), + searchOptTemp), 1); + } + }); + // visualSearch.options.readOnly = searchOptTemp.length <= 0 ? + // true : false; + callback(searchOptTemp, { + preserveOrder : false + }); + }, + removedFacet : function(removedFacet, searchCollection, indexObj) { + // console.log(removedFacet); + + var removedFacetSeverName = _.findWhere(serverAttrName, { + text : removedFacet.get('category') + }); + if (!_.isUndefined(removedFacetSeverName)) { + delete collection.queryParams[removedFacetSeverName.label]; + collection.state.currentPage = collection.state.firstPage; + collection.fetch({ + reset : true, + cache : false + }); + } + // TODO Added for Demo to remove datapicker popups + if (!_.isUndefined(visualSearch.searchBox.$el)) + visualSearch.searchBox.$el.parents('body').find( + '.datepicker').remove(); + } + // we can also add focus, blur events callback here.. + }; + pluginAttr.callbacks = $.extend(callbackCommon, pluginAttr.callbacks); + // Initializing VisualSearch Plugin.... + visualSearch = VS.init($.extend(pluginAttr, { + remainder : false + })); + + if (visualSearch.searchQuery.length > 0) // For On Load Visual Search + search(visualSearch.searchQuery, serverAttrName, searchOpt, + collection); + return visualSearch; }; - - XAUtils.displayDatepicker = function ($el, facet, $date, callback) { - var input = $el.find('.search_facet.is_editing input.search_facet_input'); - $el.parents('body').find('.datepicker').hide(); - input.datepicker({ - autoclose : true, - dateFormat: 'yy-mm-dd' - }).on('changeDate', function(ev){ - callback(ev.date); - input.datepicker("hide"); - var e = jQuery.Event("keydown"); - e.which = 13; // Enter - $(this).trigger(e); - }); - if(!_.isUndefined($date)){ - if(facet == 'Start Date'){ - input.datepicker('setEndDate', $date); - }else{ - input.datepicker('setStartDate', $date); - } - } - input.datepicker('show'); - input.on('blur',function(e){ - input.datepicker("hide"); - //$('.datepicker').remove(); - - }); - //input.attr("readonly", "readonly"); - input.on('keydown',function(e){ - if(e.which == 9 && e.shiftKey ){ - input.datepicker('setValue', new Date()); - input.trigger('change'); - input.datepicker("hide"); - } - if(e.which == 13){ - var e1 = jQuery.Event("keypress"); - e1.which = 13; // Enter - $(this).trigger(e1); - - } - }); - return input; - }; - XAUtils.getPerms = function(policyType){ + + XAUtils.displayDatepicker = function($el, facet, $date, callback) { + var input = $el + .find('.search_facet.is_editing input.search_facet_input'); + $el.parents('body').find('.datepicker').hide(); + input.datepicker({ + autoclose : true, + dateFormat : 'yy-mm-dd' + }).on('changeDate', function(ev) { + callback(ev.date); + input.datepicker("hide"); + var e = jQuery.Event("keydown"); + e.which = 13; // Enter + $(this).trigger(e); + }); + if (!_.isUndefined($date)) { + if (facet == 'Start Date') { + input.datepicker('setEndDate', $date); + } else { + input.datepicker('setStartDate', $date); + } + } + input.datepicker('show'); + input.on('blur', function(e) { + input.datepicker("hide"); + // $('.datepicker').remove(); + + }); + // input.attr("readonly", "readonly"); + input.on('keydown', function(e) { + if (e.which == 9 && e.shiftKey) { + input.datepicker('setValue', new Date()); + input.trigger('change'); + input.datepicker("hide"); + } + if (e.which == 13) { + var e1 = jQuery.Event("keypress"); + e1.which = 13; // Enter + $(this).trigger(e1); + + } + }); + return input; + }; + XAUtils.getPerms = function(policyType) { var permArr = []; - switch(policyType){ - case XAEnums.AssetType.ASSET_HDFS.value : - permArr = ['XA_PERM_TYPE_READ', 'XA_PERM_TYPE_WRITE', 'XA_PERM_TYPE_EXECUTE','XA_PERM_TYPE_ADMIN']; + switch (policyType) { + case XAEnums.AssetType.ASSET_HDFS.value: + permArr = [ 'XA_PERM_TYPE_READ', 'XA_PERM_TYPE_WRITE', + 'XA_PERM_TYPE_EXECUTE', 'XA_PERM_TYPE_ADMIN' ]; break; - case XAEnums.AssetType.ASSET_HIVE.value : - permArr = ['XA_PERM_TYPE_SELECT','XA_PERM_TYPE_UPDATE','XA_PERM_TYPE_CREATE','XA_PERM_TYPE_DROP','XA_PERM_TYPE_ALTER', - 'XA_PERM_TYPE_INDEX','XA_PERM_TYPE_LOCK', 'XA_PERM_TYPE_ALL', 'XA_PERM_TYPE_ADMIN']; + case XAEnums.AssetType.ASSET_HIVE.value: + permArr = [ 'XA_PERM_TYPE_SELECT', 'XA_PERM_TYPE_UPDATE', + 'XA_PERM_TYPE_CREATE', 'XA_PERM_TYPE_DROP', + 'XA_PERM_TYPE_ALTER', 'XA_PERM_TYPE_INDEX', + 'XA_PERM_TYPE_LOCK', 'XA_PERM_TYPE_ALL', + 'XA_PERM_TYPE_ADMIN' ]; break; - case XAEnums.AssetType.ASSET_HBASE.value : - permArr = ['XA_PERM_TYPE_READ','XA_PERM_TYPE_WRITE','XA_PERM_TYPE_CREATE','XA_PERM_TYPE_ADMIN']; + case XAEnums.AssetType.ASSET_HBASE.value: + permArr = [ 'XA_PERM_TYPE_READ', 'XA_PERM_TYPE_WRITE', + 'XA_PERM_TYPE_CREATE', 'XA_PERM_TYPE_ADMIN' ]; break; - case XAEnums.AssetType.ASSET_KNOX.value : - permArr = ['XA_PERM_TYPE_ALLOW','XA_PERM_TYPE_ADMIN']; + case XAEnums.AssetType.ASSET_KNOX.value: + permArr = [ 'XA_PERM_TYPE_ALLOW', 'XA_PERM_TYPE_ADMIN' ]; + break; + case XAEnums.AssetType.ASSET_STORM.value: + permArr = [ 'XA_PERM_TYPE_ADMIN' ]; + /* + * permArr = + * ['XA_PERM_TYPE_SUBMIT_TOPOLOGY','XA_PERM_TYPE_FILE_UPLOAD','XA_PERM_TYPE_GET_NIMBUS', + * 'XA_PERM_TYPE_GET_CLUSTER_INFO','XA_PERM_TYPE_FILE_DOWNLOAD','XA_PERM_TYPE_KILL_TOPOLOGY', + * 'XA_PERM_TYPE_REBALANCE','XA_PERM_TYPE_ACTIVATE','XA_PERM_TYPE_DEACTIVATE','XA_PERM_TYPE_GET_TOPOLOGY_CONF', + * 'XA_PERM_TYPE_GET_TOPOLOGY','XA_PERM_TYPE_GET_USER_TOPOLOGY','XA_PERM_TYPE_GET_TOPOLOGY_INFO','XA_PERM_TYPE_UPLOAD_NEW_CREDENTIAL' ]; + */ break; - case XAEnums.AssetType.ASSET_STORM.value : - permArr = ['XA_PERM_TYPE_ADMIN']; - /*permArr = ['XA_PERM_TYPE_SUBMIT_TOPOLOGY','XA_PERM_TYPE_FILE_UPLOAD','XA_PERM_TYPE_GET_NIMBUS', - 'XA_PERM_TYPE_GET_CLUSTER_INFO','XA_PERM_TYPE_FILE_DOWNLOAD','XA_PERM_TYPE_KILL_TOPOLOGY', - 'XA_PERM_TYPE_REBALANCE','XA_PERM_TYPE_ACTIVATE','XA_PERM_TYPE_DEACTIVATE','XA_PERM_TYPE_GET_TOPOLOGY_CONF', - 'XA_PERM_TYPE_GET_TOPOLOGY','XA_PERM_TYPE_GET_USER_TOPOLOGY','XA_PERM_TYPE_GET_TOPOLOGY_INFO','XA_PERM_TYPE_UPLOAD_NEW_CREDENTIAL' - ];*/ - break; } return permArr; }; - XAUtils.getPermHeaders = function(policyType, isGroup){ - if(_.isUndefined(isGroup)) isGroup = true; - var permHeaders = isGroup ? [localization.tt('lbl.selectGroup')] :[localization.tt('lbl.selectUser')]; - - switch(policyType){ - case XAEnums.AssetType.ASSET_HDFS.value : - permHeaders.push(localization.tt('lbl.read'),localization.tt('lbl.write'),localization.tt('lbl.execute'),localization.tt('lbl.admin'),''); + XAUtils.getPermHeaders = function(policyType, isGroup) { + if (_.isUndefined(isGroup)) + isGroup = true; + var permHeaders = isGroup ? [ localization.tt('lbl.selectGroup') ] + : [ localization.tt('lbl.selectUser') ]; + + switch (policyType) { + case XAEnums.AssetType.ASSET_HDFS.value: + permHeaders.push(localization.tt('lbl.read'), localization + .tt('lbl.write'), localization.tt('lbl.execute'), + localization.tt('lbl.admin'), ''); + break; + case XAEnums.AssetType.ASSET_HIVE.value: + permHeaders.push(localization.tt('lbl.select'), localization + .tt('lbl.update'), localization.tt('lbl.create'), + localization.tt('lbl.drop'), localization.tt('lbl.alter'), + localization.tt('lbl.index'), localization.tt('lbl.lock'), + localization.tt('lbl.all'), localization.tt('lbl.admin'), + ''); break; - case XAEnums.AssetType.ASSET_HIVE.value : - permHeaders.push(localization.tt('lbl.select'),localization.tt('lbl.update'),localization.tt('lbl.create'),localization.tt('lbl.drop'),localization.tt('lbl.alter'),localization.tt('lbl.index'),localization.tt('lbl.lock'),localization.tt('lbl.all'),localization.tt('lbl.admin'),''); + case XAEnums.AssetType.ASSET_HBASE.value: + permHeaders.push(localization.tt('lbl.read'), localization + .tt('lbl.write'), localization.tt('lbl.create'), + localization.tt('lbl.admin'), ''); break; - case XAEnums.AssetType.ASSET_HBASE.value : - permHeaders.push(localization.tt('lbl.read'),localization.tt('lbl.write'),localization.tt('lbl.create'),localization.tt('lbl.admin'),''); + case XAEnums.AssetType.ASSET_KNOX.value: + permHeaders.push(localization.tt('lbl.ipAddress'), localization + .tt('lbl.allow'), localization.tt('lbl.admin'), ''); break; - case XAEnums.AssetType.ASSET_KNOX.value : - permHeaders.push(localization.tt('lbl.ipAddress'),localization.tt('lbl.allow'),localization.tt('lbl.admin'),''); + case XAEnums.AssetType.ASSET_STORM.value: + permHeaders.push(localization.tt('lbl.actions'), localization + .tt('lbl.admin'), ''); break; - case XAEnums.AssetType.ASSET_STORM.value : - permHeaders.push(localization.tt('lbl.actions'),localization.tt('lbl.admin'),''); - break; } return permHeaders; }; - XAUtils.getStormActions = function(){ - return ['XA_PERM_TYPE_SUBMIT_TOPOLOGY','XA_PERM_TYPE_FILE_UPLOAD','XA_PERM_TYPE_GET_NIMBUS', - 'XA_PERM_TYPE_GET_CLUSTER_INFO','XA_PERM_TYPE_FILE_DOWNLOAD','XA_PERM_TYPE_KILL_TOPOLOGY', - 'XA_PERM_TYPE_REBALANCE','XA_PERM_TYPE_ACTIVATE','XA_PERM_TYPE_DEACTIVATE','XA_PERM_TYPE_GET_TOPOLOGY_CONF', - 'XA_PERM_TYPE_GET_TOPOLOGY','XA_PERM_TYPE_GET_USER_TOPOLOGY','XA_PERM_TYPE_GET_TOPOLOGY_INFO','XA_PERM_TYPE_UPLOAD_NEW_CREDENTIAL' - ]; + XAUtils.getStormActions = function() { + return [ 'XA_PERM_TYPE_SUBMIT_TOPOLOGY', 'XA_PERM_TYPE_FILE_UPLOAD', + 'XA_PERM_TYPE_GET_NIMBUS', 'XA_PERM_TYPE_GET_CLUSTER_INFO', + 'XA_PERM_TYPE_FILE_DOWNLOAD', 'XA_PERM_TYPE_KILL_TOPOLOGY', + 'XA_PERM_TYPE_REBALANCE', 'XA_PERM_TYPE_ACTIVATE', + 'XA_PERM_TYPE_DEACTIVATE', 'XA_PERM_TYPE_GET_TOPOLOGY_CONF', + 'XA_PERM_TYPE_GET_TOPOLOGY', 'XA_PERM_TYPE_GET_USER_TOPOLOGY', + 'XA_PERM_TYPE_GET_TOPOLOGY_INFO', + 'XA_PERM_TYPE_UPLOAD_NEW_CREDENTIAL' ]; }; - XAUtils.highlightDisabledPolicy = function(that){ + XAUtils.highlightDisabledPolicy = function(that) { var $el = that.rTableList.$el; - var timerId = setInterval(function(){ - if($el.find('tr td:last').text() != "No Policies found!"){ - _.each($el.find('tr td').find('.label-important'),function(a,b){ - if($(a).html() == "Disabled") - console.log(that.$(a).parents('tr').addClass('disable-policy')) - },that); + var timerId = setInterval(function() { + if ($el.find('tr td:last').text() != "No Policies found!") { + _.each($el.find('tr td').find('.label-important'), function(a, + b) { + if ($(a).html() == "Disabled") + console.log(that.$(a).parents('tr').addClass( + 'disable-policy')) + }, that); clearInterval(timerId); } console.log('highlight disabled policy..'); - },5); + }, 5); }; - XAUtils.showAlerForDisabledPolicy = function(that){ - if(!_.isUndefined(that.model.get('resourceStatus')) - && that.model.get('resourceStatus') == XAEnums.ActiveStatus.STATUS_DISABLED.value){ + XAUtils.showAlerForDisabledPolicy = function(that) { + if (!_.isUndefined(that.model.get('resourceStatus')) + && that.model.get('resourceStatus') == XAEnums.ActiveStatus.STATUS_DISABLED.value) { that.ui.policyDisabledAlert.show(); that.$(that.rForm.el).addClass("policy-disabled"); - }else{ + } else { that.ui.policyDisabledAlert.hide(); that.$(that.rForm.el).removeClass("policy-disabled"); } }; XAUtils.customXEditableForPolicyCond = function(template) { -// $.fn.editable.defaults.mode = 'inline'; - var PolicyConditions = function (options) { - this.init('policyConditions', options, PolicyConditions.defaults); - }; - - //inherit from Abstract input - $.fn.editableutils.inherit(PolicyConditions, $.fn.editabletypes.abstractinput); - - $.extend(PolicyConditions.prototype, { - render: function() { - this.$input = this.$tpl.find('input'); - var pluginOpts = {tags : true,width :'220px',multiple: true,minimumInputLength: 1,tokenSeparators: [",", ";"],} - this.$input.select2(pluginOpts); - }, - - value2str: function(value) { - var str = ''; - if(value) { - for(var k in value) { - str = str + k + ':' + value[k].toString() + ';'; - } - } - return str; - }, - - value2input: function(value) { - _.each(value, function(val,name){ - this.$input.filter('[name='+name+']').select2('val',value[name]); - },this); - }, - - input2value: function() { - var obj={}; - _.each(this.$input,function(input){ - var name = input.name; - var val = this.$input.filter('[name="'+name+'"]').select2('val'); - obj[name] = val; - },this); - - return obj; - }, - activate: function() { - this.$input.first().focus() - }, - }); - - PolicyConditions.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, { - tpl: template, - - inputclass: '' - }); - $.fn.editabletypes.policyConditions = PolicyConditions; - }; - XAUtils.capitaliseFirstLetter = function (string){ - return string.charAt(0).toUpperCase() + string.slice(1); - }; - XAUtils.lowerCaseFirstLetter = function (string){ - return string.charAt(0).toLowerCase() + string.slice(1); + // $.fn.editable.defaults.mode = 'inline'; + var PolicyConditions = function(options) { + this.init('policyConditions', options, PolicyConditions.defaults); + }; + + // inherit from Abstract input + $.fn.editableutils.inherit(PolicyConditions, + $.fn.editabletypes.abstractinput); + + $.extend(PolicyConditions.prototype, { + render : function() { + this.$input = this.$tpl.find('input'); + var pluginOpts = { + tags : true, + width : '220px', + multiple : true, + minimumInputLength : 1, + tokenSeparators : [ ",", ";" ], + } + this.$input.select2(pluginOpts); + }, + + value2str : function(value) { + var str = ''; + if (value) { + for ( var k in value) { + str = str + k + ':' + value[k].toString() + ';'; + } + } + return str; + }, + + value2input : function(value) { + _.each(value, function(val, name) { + this.$input.filter('[name=' + name + ']').select2('val', + value[name]); + }, this); + }, + + input2value : function() { + var obj = {}; + _.each(this.$input, function(input) { + var name = input.name; + var val = this.$input.filter('[name="' + name + '"]') + .select2('val'); + obj[name] = val; + }, this); + + return obj; + }, + activate : function() { + this.$input.first().focus() + }, + }); + + PolicyConditions.defaults = $.extend({}, + $.fn.editabletypes.abstractinput.defaults, { + tpl : template, + + inputclass : '' + }); + $.fn.editabletypes.policyConditions = PolicyConditions; + }; + XAUtils.capitaliseFirstLetter = function(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + }; + XAUtils.lowerCaseFirstLetter = function(string) { + return string.charAt(0).toLowerCase() + string.slice(1); }; XAUtils.getServicePoliciesURL = function(serviceId) { - return "service/plugins/policies/service/"+serviceId; + return "service/plugins/policies/service/" + serviceId; }; XAUtils.getRangerServiceDef = function(name) { - return "service/plugins/definitions/name/"+name; + return "service/plugins/definitions/name/" + name; }; XAUtils.filterAllowedActions = function(controller) { - var SessionMgr = require('mgrs/SessionMgr'); - var XAGlobals = require('utils/XAGlobals'); - var that = this; - var vXPortalUser = SessionMgr.getUserProfile(); - var denyControllerActions= []; - var userModuleNames = _.pluck(vXPortalUser.get('userPermList'),'moduleName'); - var groupModuleNames = _.pluck(vXPortalUser.get('groupPermissions'), 'moduleName'); - var moduleNames = _.union(userModuleNames,groupModuleNames); - var denyModulesObj = _.omit(XAGlobals.ListOfModuleActions, moduleNames); - if(!_.isEmpty(denyModulesObj)){ - _.each(denyModulesObj, function(deniedModule){ - denyControllerActions.push(_.values(deniedModule)); - }); - denyControllerActions = _.flatten(denyControllerActions); - } + var SessionMgr = require('mgrs/SessionMgr'); + if (!SessionMgr.isSystemAdmin()) { - if(!_.isEmpty(denyControllerActions)){ - _.each(denyControllerActions, function(routeMethodName) { - if(!_.isUndefined(controller[routeMethodName])){ - controller[routeMethodName] = function(){ - that.defaultErrorHandler(undefined, {'status':401}); - }; - } - }); + var XAGlobals = require('utils/XAGlobals'); + var that = this; + var vXPortalUser = SessionMgr.getUserProfile(); + var denyControllerActions = []; + var userModuleNames = _.pluck(vXPortalUser.get('userPermList'), + 'moduleName'); + var groupModuleNames = _.pluck( + vXPortalUser.get('groupPermissions'), 'moduleName'); + var moduleNames = _.union(userModuleNames, groupModuleNames); + var denyModulesObj = _.omit(XAGlobals.ListOfModuleActions, + moduleNames); + if (!_.isEmpty(denyModulesObj)) { + _.each(denyModulesObj, function(deniedModule) { + denyControllerActions.push(_.values(deniedModule)); + }); + denyControllerActions = _.flatten(denyControllerActions); + } + + if (!_.isEmpty(denyControllerActions)) { + _.each(denyControllerActions, function(routeMethodName) { + if (!_.isUndefined(controller[routeMethodName])) { + controller[routeMethodName] = function() { + that.defaultErrorHandler(undefined, { + 'status' : 401 + }); + }; + } + }); + } } return controller; }; XAUtils.getRangerServiceByName = function(name) { - return "service/plugins/services/name/"+name; + return "service/plugins/services/name/" + name; }; - return XAUtils; + return XAUtils; }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de598fad/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java index 0c0f64e..a2403c0 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java @@ -1066,7 +1066,7 @@ public class TestXUserMgr { Mockito.verify(xGroupPermissionService).deleteResource(1L); } - @Test + /*@Test public void test43checkPermissionRoleByGivenUrls() { XXModuleDefDao value = Mockito.mock(XXModuleDefDao.class); XXPortalUserRoleDao xPortalUserRoleDao = Mockito @@ -1097,7 +1097,7 @@ public class TestXUserMgr { Mockito.verify(value).findModuleURLOfPemittedModules(null); Mockito.verify(daoManager).getXXPortalUserRole(); Mockito.verify(xPortalUserRoleDao).findByUserId(null); - } + }*/ @Test public void test44getGroupsForUser() {
