Repository: incubator-ranger Updated Branches: refs/heads/master 9474fe9d5 -> de170ab23
RANGER-526 : Provide REST API to change user role 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/de170ab2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/de170ab2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/de170ab2 Branch: refs/heads/master Commit: de170ab2358739f938f52ccc871d4d9e3ebb52ef Parents: 9474fe9 Author: Gautam Borad <[email protected]> Authored: Tue Oct 13 12:40:19 2015 +0530 Committer: Velmurugan Periasamy <[email protected]> Committed: Tue Oct 13 20:26:33 2015 -0400 ---------------------------------------------------------------------- .../db/mysql/patches/009-updated_schema.sql | 2 +- .../db/oracle/patches/009-updated_schema.sql | 2 +- .../db/postgres/xa_core_db_postgres.sql | 2 +- .../db/sqlanywhere/xa_core_db_sqlanywhere.sql | 2 +- .../db/sqlserver/xa_core_db_sqlserver.sql | 2 +- .../java/org/apache/ranger/biz/UserMgr.java | 9 +- .../java/org/apache/ranger/biz/XUserMgr.java | 165 ++++++ .../apache/ranger/db/XXGroupPermissionDao.java | 2 +- .../java/org/apache/ranger/rest/XUserREST.java | 41 ++ .../ranger/security/context/RangerAPIList.java | 4 + .../security/context/RangerAPIMapping.java | 4 + .../CustomLogoutSuccessHandler.java | 1 + .../RangerAuthFailureHandler.java | 1 + .../RangerAuthSuccessHandler.java | 2 +- .../RangerAuthenticationEntryPoint.java | 1 + .../security/web/filter/MyRememberMeFilter.java | 7 +- .../RangerSecurityContextFormationFilter.java | 5 +- security-admin/src/main/webapp/login.jsp | 4 +- .../java/org/apache/ranger/biz/TestUserMgr.java | 187 ++++++- .../org/apache/ranger/biz/TestXUserMgr.java | 511 ++++++++++++++++++- 20 files changed, 922 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/db/mysql/patches/009-updated_schema.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/mysql/patches/009-updated_schema.sql b/security-admin/db/mysql/patches/009-updated_schema.sql index c5aa728..beaeda6 100644 --- a/security-admin/db/mysql/patches/009-updated_schema.sql +++ b/security-admin/db/mysql/patches/009-updated_schema.sql @@ -52,7 +52,7 @@ CREATE TABLE `x_service` ( `upd_by_id` bigint(20) DEFAULT NULL, `version` bigint(20) DEFAULT NULL, `type` bigint(20) DEFAULT NULL, -`name` varchar(512) DEFAULT NULL, +`name` varchar(255) DEFAULT NULL, `policy_version` bigint(20) DEFAULT NULL, `policy_update_time`datetime DEFAULT NULL, `description` varchar(1024) DEFAULT NULL, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/db/oracle/patches/009-updated_schema.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/oracle/patches/009-updated_schema.sql b/security-admin/db/oracle/patches/009-updated_schema.sql index ef5ff3c..293d6a5 100644 --- a/security-admin/db/oracle/patches/009-updated_schema.sql +++ b/security-admin/db/oracle/patches/009-updated_schema.sql @@ -63,7 +63,7 @@ added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, version NUMBER(20) DEFAULT NULL NULL, type NUMBER(20) DEFAULT NULL NULL, -name varchar(512) DEFAULT NULL NULL, +name varchar(255) DEFAULT NULL NULL, policy_version NUMBER(20) DEFAULT NULL NULL, policy_update_time DATE DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/db/postgres/xa_core_db_postgres.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/postgres/xa_core_db_postgres.sql b/security-admin/db/postgres/xa_core_db_postgres.sql index 5a76442..8245c23 100644 --- a/security-admin/db/postgres/xa_core_db_postgres.sql +++ b/security-admin/db/postgres/xa_core_db_postgres.sql @@ -492,7 +492,7 @@ added_by_id BIGINT DEFAULT NULL NULL, upd_by_id BIGINT DEFAULT NULL NULL, version BIGINT DEFAULT NULL NULL, type BIGINT DEFAULT NULL NULL, -name VARCHAR(512) DEFAULT NULL NULL, +name VARCHAR(255) DEFAULT NULL NULL, policy_version BIGINT DEFAULT NULL NULL, policy_update_time TIMESTAMP DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql b/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql index 0760cb8..b063bad 100644 --- a/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql +++ b/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql @@ -312,7 +312,7 @@ create table dbo.x_service ( upd_by_id bigint DEFAULT NULL NULL, version bigint DEFAULT NULL NULL, type bigint DEFAULT NULL NULL, - name varchar(512) DEFAULT NULL NULL, + name varchar(255) DEFAULT NULL NULL, policy_version bigint DEFAULT NULL NULL, policy_update_time datetime DEFAULT NULL NULL, description varchar(1024) DEFAULT NULL NULL, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/db/sqlserver/xa_core_db_sqlserver.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql index 25d374e..f2e9644 100644 --- a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql +++ b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql @@ -1778,7 +1778,7 @@ CREATE TABLE [dbo].[x_service] ( [upd_by_id] [bigint] DEFAULT NULL NULL, [version] [bigint] DEFAULT NULL NULL, [type] [bigint] DEFAULT NULL NULL, - [name] [varchar](512) DEFAULT NULL NULL, + [name] [varchar](255) DEFAULT NULL NULL, [policy_version] [bigint] DEFAULT NULL NULL, [policy_update_time] [datetime2] DEFAULT NULL NULL, [description] [varchar](1024) DEFAULT NULL NULL, http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/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 ff0ea01..8fbad1f 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 @@ -304,7 +304,7 @@ public class UserMgr { return gjUser; } - private boolean updateRoles(Long userId, Collection<String> rolesList) { + public boolean updateRoles(Long userId, Collection<String> rolesList) { boolean rolesUpdated = false; if (rolesList == null || rolesList.size() == 0) { return false; @@ -352,12 +352,13 @@ public class UserMgr { * @param vStrings */ public void setUserRoles(Long userId, List<VXString> vStringRolesList) { - checkAccess(userId); List<String> stringRolesList = new ArrayList<String>(); for (VXString vXString : vStringRolesList) { stringRolesList.add(vXString.getValue()); } - updateRoles(userId, stringRolesList); + xUserMgr.checkAccessRoles(stringRolesList); + VXPortalUser oldUserProfile=getUserProfile(userId); + xUserMgr.updateUserRolesPermissions(oldUserProfile, stringRolesList); } /** @@ -634,7 +635,7 @@ public class UserMgr { .getXXUserPermission().findByUserPermissionIdAndIsAllowed( userProfile.getId()); List<XXGroupPermission> xxGroupPermissions = daoManager - .getXXGroupPermission().findbyVXPoratUserId( + .getXXGroupPermission().findbyVXPortalUserId( userProfile.getId()); List<VXGroupPermission> groupPermissions = new ArrayList<VXGroupPermission>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/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 5f43bc0..b860877 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 @@ -80,6 +80,10 @@ import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import org.apache.ranger.view.VXResponse; +import org.apache.ranger.entity.XXPortalUserRole; +import javax.servlet.http.HttpServletResponse; +import org.apache.ranger.view.VXString; +import org.apache.ranger.view.VXStringList; @Component public class XUserMgr extends XUserMgrBase { @@ -1131,4 +1135,165 @@ public class XUserMgr extends XUserMgrBase { vxAuditMapList.setTotalCount(auditMapList.size()); } + public void checkAccessRoles(List<String> stringRolesList) { + UserSessionBase session = ContextUtil.getCurrentUserSession(); + if (session != null && stringRolesList!=null) { + if (!session.isUserAdmin() && !session.isKeyAdmin()) { + throw restErrorUtil.create403RESTException("Permission" + + " denied. LoggedInUser=" + + (session != null ? session.getXXPortalUser().getId() + : "Not Logged In") + + " ,isn't permitted to perform the action."); + }else{ + if (session.isUserAdmin() && stringRolesList.contains(RangerConstants.ROLE_KEY_ADMIN)) { + throw restErrorUtil.create403RESTException("Permission" + + " denied. LoggedInUser=" + + (session != null ? session.getXXPortalUser().getId() + : "") + + " isn't permitted to perform the action."); + } + if (session.isKeyAdmin() && stringRolesList.contains(RangerConstants.ROLE_SYS_ADMIN)) { + throw restErrorUtil.create403RESTException("Permission" + + " denied. LoggedInUser=" + + (session != null ? session.getXXPortalUser().getId() + : "") + + " isn't permitted to perform the action."); + } + } + }else{ + VXResponse vXResponse = new VXResponse(); + vXResponse.setStatusCode(HttpServletResponse.SC_UNAUTHORIZED); + vXResponse.setMsgDesc("Bad Credentials"); + throw restErrorUtil.generateRESTException(vXResponse); + } + } + + public VXStringList setUserRolesByExternalID(Long userId, List<VXString> vStringRolesList) { + List<String> roleListNewProfile = new ArrayList<String>(); + if(vStringRolesList!=null){ + for (VXString vXString : vStringRolesList) { + roleListNewProfile.add(vXString.getValue()); + } + } + checkAccessRoles(roleListNewProfile); + VXUser vXUser=getXUser(userId); + List<XXPortalUserRole> portalUserRoleList =null; + if(vXUser!=null && roleListNewProfile.size()>0){ + VXPortalUser oldUserProfile = userMgr.getUserProfileByLoginId(vXUser.getName()); + if(oldUserProfile!=null){ + updateUserRolesPermissions(oldUserProfile,roleListNewProfile); + portalUserRoleList = daoManager.getXXPortalUserRole().findByUserId(oldUserProfile.getId()); + return getStringListFromUserRoleList(portalUserRoleList); + }else{ + throw restErrorUtil.createRESTException("User ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA); + } + }else{ + throw restErrorUtil.createRESTException("User ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA); + } + } + + public VXStringList setUserRolesByName(String userName, List<VXString> vStringRolesList) { + List<String> roleListNewProfile = new ArrayList<String>(); + if(vStringRolesList!=null){ + for (VXString vXString : vStringRolesList) { + roleListNewProfile.add(vXString.getValue()); + } + } + checkAccessRoles(roleListNewProfile); + if(userName!=null && roleListNewProfile.size()>0){ + VXPortalUser oldUserProfile = userMgr.getUserProfileByLoginId(userName); + if(oldUserProfile!=null){ + updateUserRolesPermissions(oldUserProfile,roleListNewProfile); + List<XXPortalUserRole> portalUserRoleList = daoManager.getXXPortalUserRole().findByUserId(oldUserProfile.getId()); + return getStringListFromUserRoleList(portalUserRoleList); + }else{ + throw restErrorUtil.createRESTException("Login ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA); + } + }else{ + throw restErrorUtil.createRESTException("Login ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA); + } + + } + + public VXStringList getUserRolesByExternalID(Long userId) { + VXUser vXUser=getXUser(userId); + if(vXUser==null){ + throw restErrorUtil.createRESTException("Please provide a valid ID", MessageEnums.INVALID_INPUT_DATA); + } + List<XXPortalUserRole> portalUserRoleList =null; + VXPortalUser oldUserProfile = userMgr.getUserProfileByLoginId(vXUser.getName()); + if(oldUserProfile!=null){ + portalUserRoleList = daoManager.getXXPortalUserRole().findByUserId(oldUserProfile.getId()); + return getStringListFromUserRoleList(portalUserRoleList); + }else{ + throw restErrorUtil.createRESTException("User ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA); + } + } + + public VXStringList getUserRolesByName(String userName) { + VXPortalUser vXPortalUser=null; + if(userName!=null && !userName.trim().isEmpty()){ + vXPortalUser = userMgr.getUserProfileByLoginId(userName); + if(vXPortalUser!=null && vXPortalUser.getUserRoleList()!=null){ + List<XXPortalUserRole> portalUserRoleList = daoManager.getXXPortalUserRole().findByUserId(vXPortalUser.getId()); + return getStringListFromUserRoleList(portalUserRoleList); + }else{ + throw restErrorUtil.createRESTException("Please provide a valid userName", MessageEnums.INVALID_INPUT_DATA); + } + }else{ + throw restErrorUtil.createRESTException("Please provide a valid userName", MessageEnums.INVALID_INPUT_DATA); + } + } + + public void updateUserRolesPermissions(VXPortalUser oldUserProfile,List<String> roleListNewProfile){ + //update permissions start + Collection<String> roleListUpdatedProfile =new ArrayList<String>(); + if (oldUserProfile != null && oldUserProfile.getId() != null) { + Collection<String> roleListOldProfile = oldUserProfile.getUserRoleList(); + if(roleListNewProfile!=null && roleListOldProfile!=null){ + for (String role : roleListNewProfile) { + if(role!=null && !roleListOldProfile.contains(role)){ + roleListUpdatedProfile.add(role); + } + } + } + } + if(roleListUpdatedProfile!=null && roleListUpdatedProfile.size()>0){ + oldUserProfile.setUserRoleList(roleListUpdatedProfile); + List<XXUserPermission> xuserPermissionList = daoManager + .getXXUserPermission() + .findByUserPermissionId(oldUserProfile.getId()); + if (xuserPermissionList!=null && xuserPermissionList.size()>0){ + for (XXUserPermission xXUserPermission : xuserPermissionList) { + if (xXUserPermission != null) { + xUserPermissionService.deleteResource(xXUserPermission.getId()); + } + } + } + assignPermissionToUser(oldUserProfile,true); + if(roleListUpdatedProfile!=null && roleListUpdatedProfile.size()>0){ + userMgr.updateRoles(oldUserProfile.getId(), oldUserProfile.getUserRoleList()); + } + } + //update permissions end + } + + public VXStringList getStringListFromUserRoleList( + List<XXPortalUserRole> listXXPortalUserRole) { + if(listXXPortalUserRole==null){ + return null; + } + List<VXString> xStrList = new ArrayList<VXString>(); + VXString vXStr=null; + for (XXPortalUserRole userRole : listXXPortalUserRole) { + if(userRole!=null){ + vXStr = new VXString(); + vXStr.setValue(userRole.getUserRole()); + xStrList.add(vXStr); + } + } + VXStringList vXStringList = new VXStringList(xStrList); + return vXStringList; + } + } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java index db69cea..18ca9e3 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java @@ -80,7 +80,7 @@ public class XXGroupPermissionDao extends BaseDao<XXGroupPermission> { } return null; } - public List<XXGroupPermission> findbyVXPoratUserId(Long userId) { + public List<XXGroupPermission> findbyVXPortalUserId(Long userId) { if (userId != null) { try { return getEntityManager() http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java index b7884eb..448a60a 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java @@ -75,6 +75,9 @@ import org.apache.ranger.view.VXModuleDef; import org.apache.ranger.view.VXModuleDefList; import org.apache.ranger.view.VXPermMap; import org.apache.ranger.view.VXPermMapList; +import org.apache.ranger.view.VXPortalUser; +import org.apache.ranger.view.VXResponse; +import org.apache.ranger.view.VXStringList; import org.apache.ranger.view.VXUser; import org.apache.ranger.view.VXUserGroupInfo; import org.apache.ranger.view.VXUserList; @@ -957,4 +960,42 @@ public class XUserREST { public void modifyUserActiveStatus(HashMap<Long, Integer> statusMap){ xUserMgr.modifyUserActiveStatus(statusMap); } + + @PUT + @Path("/secure/users/roles/{userId}") + @Produces({ "application/xml", "application/json" }) + @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.SET_USER_ROLES_BY_ID + "\")") + public VXStringList setUserRolesByExternalID(@PathParam("userId") Long userId, + VXStringList roleList) { + return xUserMgr.setUserRolesByExternalID(userId, roleList.getVXStrings()); + } + + @PUT + @Path("/secure/users/roles/userName/{userName}") + @Produces({ "application/xml", "application/json" }) + @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.SET_USER_ROLES_BY_NAME + "\")") + public VXStringList setUserRolesByName(@PathParam("userName") String userName, + VXStringList roleList) { + return xUserMgr.setUserRolesByName(userName, roleList.getVXStrings()); + } + + @GET + @Path("/secure/users/external/{userId}") + @Produces({ "application/xml", "application/json" }) + @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_USER_ROLES_BY_ID + "\")") + public VXStringList getUserRolesByExternalID(@PathParam("userId") Long userId) { + VXStringList vXStringList=new VXStringList(); + vXStringList=xUserMgr.getUserRolesByExternalID(userId); + return vXStringList; + } + + @GET + @Path("/secure/users/roles/userName/{userName}") + @Produces({ "application/xml", "application/json" }) + @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_USER_ROLES_BY_NAME + "\")") + public VXStringList getUserRolesByName(@PathParam("userName") String userName) { + VXStringList vXStringList=new VXStringList(); + vXStringList=xUserMgr.getUserRolesByName(userName); + return vXStringList; + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java index f10453c..ab16535 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java +++ b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java @@ -198,4 +198,8 @@ public class RangerAPIList { public static final String SEARCH_X_GROUP_PERMISSION = "XUserREST.searchXGroupPermission"; public static final String COUNT_X_GROUP_PERMISSION = "XUserREST.countXGroupPermission"; public static final String MODIFY_USER_ACTIVE_STATUS = "XUserREST.modifyUserActiveStatus"; + public static final String SET_USER_ROLES_BY_ID="XUserREST.setUserRolesByID"; + public static final String SET_USER_ROLES_BY_NAME="XUserREST.setUserRolesByName"; + public static final String GET_USER_ROLES_BY_ID="XUserREST.getUserRolesByID"; + public static final String GET_USER_ROLES_BY_NAME="XUserREST.getUserRolesByName"; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java index adc8e2a..f8966f5 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java +++ b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java @@ -345,6 +345,10 @@ public class RangerAPIMapping { apiAssociatedWithUserAndGroups.add(RangerAPIList.UPDATE); apiAssociatedWithUserAndGroups.add(RangerAPIList.SET_USER_ROLES); apiAssociatedWithUserAndGroups.add(RangerAPIList.DEACTIVATE_USER); + apiAssociatedWithUserAndGroups.add(RangerAPIList.SET_USER_ROLES_BY_ID); + apiAssociatedWithUserAndGroups.add(RangerAPIList.SET_USER_ROLES_BY_NAME); + apiAssociatedWithUserAndGroups.add(RangerAPIList.GET_USER_ROLES_BY_ID); + apiAssociatedWithUserAndGroups.add(RangerAPIList.GET_USER_ROLES_BY_NAME); rangerAPIMappingWithUI.put(TAB_USERS_GROUPS, apiAssociatedWithUserAndGroups); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/web/authentication/CustomLogoutSuccessHandler.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/CustomLogoutSuccessHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/CustomLogoutSuccessHandler.java index 80f5180..6a91834 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/CustomLogoutSuccessHandler.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/CustomLogoutSuccessHandler.java @@ -45,6 +45,7 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); + response.setHeader("X-Frame-Options", "DENY"); String jsonStr = ""; try { VXResponse vXResponse = new VXResponse(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java index 94ce93a..cb4c16a 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java @@ -76,6 +76,7 @@ ExceptionMappingAuthenticationFailureHandler { response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); + response.setHeader("X-Frame-Options", "DENY"); String jsonResp = ""; try { String msg = exception.getMessage(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java index 62ba781..bf16a57 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java @@ -86,7 +86,7 @@ SavedRequestAwareAuthenticationSuccessHandler { response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); - + response.setHeader("X-Frame-Options", "DENY"); VXResponse vXResponse = new VXResponse(); if(!isValidUser) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java index a3f3ed5..52228dd 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java @@ -78,6 +78,7 @@ public class RangerAuthenticationEntryPoint extends HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { String ajaxRequestHeader = request.getHeader("X-Requested-With"); + response.setHeader("X-Frame-Options", "DENY"); if (logger.isDebugEnabled()) { logger.debug("commence() X-Requested-With=" + ajaxRequestHeader); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/java/org/apache/ranger/security/web/filter/MyRememberMeFilter.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/MyRememberMeFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/MyRememberMeFilter.java index d18006e..9867bb0 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/MyRememberMeFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/MyRememberMeFilter.java @@ -71,8 +71,9 @@ public class MyRememberMeFilter extends RememberMeAuthenticationFilter { @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { - // TODO Auto-generated method stub - super.doFilter(arg0, arg1, arg2); + HttpServletResponse res = (HttpServletResponse)arg1; + res.setHeader("X-Frame-Options", "DENY" ); + super.doFilter(arg0, res, arg2); } /* @@ -99,6 +100,7 @@ public class MyRememberMeFilter extends RememberMeAuthenticationFilter { @Override protected void onSuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) { + response.setHeader("X-Frame-Options", "DENY" ); super.onSuccessfulAuthentication(request, response, authResult); // if (logger.isDebugEnabled()) { logger.info("onSuccessfulAuthentication() authResult=" + authResult); @@ -119,6 +121,7 @@ public class MyRememberMeFilter extends RememberMeAuthenticationFilter { HttpServletResponse response, AuthenticationException failed) { logger.error("Authentication failure. failed=" + failed, new Throwable()); + response.setHeader("X-Frame-Options", "DENY" ); super.onUnsuccessfulAuthentication(request, response, failed); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/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 52ea841..d92fcbb 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 @@ -29,6 +29,7 @@ import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; @@ -135,7 +136,9 @@ public class RangerSecurityContextFormationFilter extends GenericFilterBean { // xUserMgr.checkPermissionRoleByGivenUrls(httpRequest.getRequestURL().toString(),httpMethod); } - chain.doFilter(request, response); + HttpServletResponse res = (HttpServletResponse)response; + res.setHeader("X-Frame-Options", "DENY" ); + chain.doFilter(request, res); } finally { // [4]remove context from thread-local http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/main/webapp/login.jsp ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/login.jsp b/security-admin/src/main/webapp/login.jsp index 1faae6a..0db6882 100644 --- a/security-admin/src/main/webapp/login.jsp +++ b/security-admin/src/main/webapp/login.jsp @@ -55,7 +55,9 @@ </head> <body class="login" style=""> - + <% + response.setHeader("X-Frame-Options", "DENY"); + %> <!-- Page content ================================================== --> <section id="signin-container" style="margin-top: 4.5px;"> http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java index 479dfde..e617de6 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java @@ -105,7 +105,10 @@ public class TestUserMgr { @Mock SessionMgr sessionMgr; - + + @Mock + XUserMgr xUserMgr; + @Rule public ExpectedException thrown = ExpectedException.none(); @@ -131,10 +134,9 @@ public class TestUserMgr { return userProfile; } - @Ignore("Junit breakage: RANGER-425") // TODO @Test public void test11CreateUser() { - setup(); + setup(); XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); XXPortalUserRoleDao roleDao = Mockito.mock(XXPortalUserRoleDao.class); @@ -188,10 +190,9 @@ public class TestUserMgr { Mockito.verify(daoManager).getXXPortalUserRole(); } - @Ignore("Junit breakage: RANGER-425") // TODO @Test public void test12CreateUser() { - setup(); + setup(); XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); XXPortalUserRoleDao roleDao = Mockito.mock(XXPortalUserRoleDao.class); @@ -426,7 +427,7 @@ public class TestUserMgr { Mockito.when(daoManager.getXXGroupPermission()).thenReturn( xGroupPermissionDao); Mockito.when( - xGroupPermissionDao.findbyVXPoratUserId(userProfile.getId())) + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) .thenReturn(xGroupPermissionList); VXPortalUser dbVXPortalUser = userMgr.createUser(userProfile); @@ -710,7 +711,7 @@ public class TestUserMgr { Mockito.when(daoManager.getXXGroupPermission()).thenReturn( xGroupPermissionDao); Mockito.when( - xGroupPermissionDao.findbyVXPoratUserId(userProfile.getId())) + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) .thenReturn(xGroupPermissionList); Mockito.when( @@ -744,6 +745,7 @@ public class TestUserMgr { @Test public void test30checkAccess() { + setup(); XXPortalUserDao xPortalUserDao = Mockito.mock(XXPortalUserDao.class); XXPortalUser xPortalUser = Mockito.mock(XXPortalUser.class); Mockito.when(daoManager.getXXPortalUser()).thenReturn(xPortalUserDao); @@ -755,6 +757,7 @@ public class TestUserMgr { @Test public void test31getUserProfile() { + setup(); XXPortalUserDao xPortalUserDao = Mockito.mock(XXPortalUserDao.class); XXPortalUser xPortalUser = Mockito.mock(XXPortalUser.class); XXUserPermissionDao xUserPermissionDao = Mockito @@ -812,7 +815,7 @@ public class TestUserMgr { Mockito.when(daoManager.getXXGroupPermission()).thenReturn( xGroupPermissionDao); Mockito.when( - xGroupPermissionDao.findbyVXPoratUserId(userProfile.getId())) + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) .thenReturn(xGroupPermissionList); VXPortalUser dbVXPortalUser = userMgr.getUserProfile(userId); Assert.assertNotNull(dbVXPortalUser); @@ -825,6 +828,7 @@ public class TestUserMgr { @Test public void test32getUserProfileByLoginId() { + setup(); XXPortalUserDao xPortalUserDao = Mockito.mock(XXPortalUserDao.class); XXPortalUser xPortalUser = Mockito.mock(XXPortalUser.class); Mockito.when(daoManager.getXXPortalUser()).thenReturn(xPortalUserDao); @@ -836,24 +840,175 @@ public class TestUserMgr { Mockito.verify(daoManager).getXXPortalUser(); } - @Ignore("Junit breakage: RANGER-526") // TODO + @Test public void test33setUserRoles() { - XXPortalUserRoleDao xPortalUserRoleDao = Mockito.mock(XXPortalUserRoleDao.class); + setup(); + XXPortalUserRoleDao xPortalUserRoleDao = Mockito + .mock(XXPortalUserRoleDao.class); + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + XXUserPermissionDao xUserPermissionDao = Mockito + .mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito + .mock(XXGroupPermissionDao.class); + XXModuleDefDao xModuleDefDao = Mockito.mock(XXModuleDefDao.class); + + VXPortalUser userProfile = userProfile(); + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + List<VXString> vStringRolesList = new ArrayList<VXString>(); VXString vXStringObj = new VXString(); - vXStringObj.setValue("1L"); + vXStringObj.setValue("ROLE_USER"); vStringRolesList.add(vXStringObj); - + List<XXPortalUserRole> xPortalUserRoleList = new ArrayList<XXPortalUserRole>(); XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserId(userId); XXPortalUserRole.setUserRole("ROLE_USER"); xPortalUserRoleList.add(XXPortalUserRole); - - Mockito.when(daoManager.getXXPortalUserRole()).thenReturn(xPortalUserRoleDao); - Mockito.when(xPortalUserRoleDao.findByUserId(userId)) - .thenReturn(xPortalUserRoleList); + + List<XXUserPermission> xUserPermissionsList = new ArrayList<XXUserPermission>(); + XXUserPermission xUserPermissionObj = new XXUserPermission(); + xUserPermissionObj.setAddedByUserId(userId); + xUserPermissionObj.setCreateTime(new Date()); + xUserPermissionObj.setId(userId); + xUserPermissionObj.setIsAllowed(1); + xUserPermissionObj.setModuleId(1L); + xUserPermissionObj.setUpdatedByUserId(userId); + xUserPermissionObj.setUpdateTime(new Date()); + xUserPermissionObj.setUserId(userId); + xUserPermissionsList.add(xUserPermissionObj); + + List<XXGroupPermission> xGroupPermissionList = new ArrayList<XXGroupPermission>(); + XXGroupPermission xGroupPermissionObj = new XXGroupPermission(); + xGroupPermissionObj.setAddedByUserId(userId); + xGroupPermissionObj.setCreateTime(new Date()); + xGroupPermissionObj.setId(userId); + xGroupPermissionObj.setIsAllowed(1); + xGroupPermissionObj.setModuleId(1L); + xGroupPermissionObj.setUpdatedByUserId(userId); + xGroupPermissionObj.setUpdateTime(new Date()); + xGroupPermissionObj.setGroupId(userId); + xGroupPermissionList.add(xGroupPermissionObj); + + List<VXGroupPermission> groupPermList = new ArrayList<VXGroupPermission>(); + VXGroupPermission groupPermission = new VXGroupPermission(); + groupPermission.setId(1L); + groupPermission.setIsAllowed(1); + groupPermission.setModuleId(1L); + groupPermission.setGroupId(userId); + groupPermission.setGroupName("xyz"); + groupPermission.setOwner("admin"); + groupPermList.add(groupPermission); + + XXModuleDef xModuleDef = new XXModuleDef(); + xModuleDef.setUpdatedByUserId(userId); + xModuleDef.setAddedByUserId(userId); + xModuleDef.setCreateTime(new Date()); + xModuleDef.setId(userId); + xModuleDef.setModule("Policy manager"); + xModuleDef.setUpdateTime(new Date()); + xModuleDef.setUrl("/policy manager"); + + VXUserPermission userPermission = new VXUserPermission(); + userPermission.setId(1L); + userPermission.setIsAllowed(1); + userPermission.setModuleId(1L); + userPermission.setUserId(userId); + userPermission.setUserName("xyz"); + userPermission.setOwner("admin"); + + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn( + xPortalUserRoleDao); + Mockito.when(xPortalUserRoleDao.findByUserId(userId)).thenReturn( + xPortalUserRoleList); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.getById(userId)).thenReturn(user); + Mockito.when(daoManager.getXXUserPermission()).thenReturn( + xUserPermissionDao); + Mockito.when( + xUserPermissionDao + .findByUserPermissionIdAndIsAllowed(userProfile.getId())) + .thenReturn(xUserPermissionsList); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn( + xGroupPermissionDao); + Mockito.when( + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) + .thenReturn(xGroupPermissionList); + Mockito.when( + xGroupPermissionService.populateViewBean(xGroupPermissionObj)) + .thenReturn(groupPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when( + xUserPermissionService.populateViewBean(xUserPermissionObj)) + .thenReturn(userPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + + userMgr.checkAccess(userId); userMgr.setUserRoles(userId, vStringRolesList); + + Mockito.verify(daoManager).getXXUserPermission(); + Mockito.verify(daoManager).getXXGroupPermission(); + Mockito.verify(xGroupPermissionService).populateViewBean( + xGroupPermissionObj); + Mockito.verify(xUserPermissionService).populateViewBean( + xUserPermissionObj); } + + @Test + public void test19updateRoles() { + //setup(); + Collection<String> rolesList = new ArrayList<String>(); + rolesList.add("ROLE_USER"); + rolesList.add("ROLE_ADMIN"); + XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); + XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserRole("ROLE_USER"); + List<XXPortalUserRole> list = new ArrayList<XXPortalUserRole>(); + list.add(XXPortalUserRole); + XXPortalUserRoleDao userDao = Mockito.mock(XXPortalUserRoleDao.class); + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn(userDao); + Mockito.when(userDao.findByUserId(userId)).thenReturn(list); + boolean isFound = userMgr.updateRoles(userId, rolesList); + Assert.assertFalse(isFound); + } + + @Test + public void test20UpdateUserWithPass() { + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + VXPortalUser userProfile = userProfile(); + String userName = userProfile.getFirstName(); + String userPassword = userProfile.getPassword(); + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn( + user); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.update(user)).thenReturn(user); + XXPortalUser dbXXPortalUser = userMgr.updatePasswordInSHA256(userName, + userPassword); + Assert.assertNotNull(dbXXPortalUser); + } + } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/de170ab2/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 cda423e..e992190 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 @@ -61,10 +61,12 @@ import org.apache.ranger.view.VXGroupUser; import org.apache.ranger.view.VXGroupUserList; import org.apache.ranger.view.VXModuleDef; import org.apache.ranger.view.VXPortalUser; +import org.apache.ranger.view.VXStringList; import org.apache.ranger.view.VXUser; import org.apache.ranger.view.VXUserGroupInfo; import org.apache.ranger.view.VXUserList; import org.apache.ranger.view.VXUserPermission; +import org.apache.ranger.view.VXString; import org.junit.Assert; import org.junit.FixMethodOrder; import org.junit.Rule; @@ -211,7 +213,19 @@ public class TestXUserMgr { return groupPermission; } - @Ignore("temp disable") + private VXPortalUser userProfile() { + VXPortalUser userProfile = new VXPortalUser(); + userProfile.setEmailAddress("[email protected]"); + userProfile.setFirstName("user12"); + userProfile.setLastName("test12"); + userProfile.setLoginId("134"); + userProfile.setPassword("usertest12323"); + userProfile.setUserSource(123); + userProfile.setPublicScreenName("user"); + userProfile.setId(userId); + return userProfile; + } + @Test public void test11CreateXUser() { setup(); @@ -1147,4 +1161,499 @@ public class TestXUserMgr { Assert.assertNotNull(list); Mockito.verify(xUserService).getXUserByUserName(userName); } + + @Test + public void test45setUserRolesByExternalID() { + setup(); + XXPortalUserRoleDao xPortalUserRoleDao = Mockito + .mock(XXPortalUserRoleDao.class); + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + XXUserPermissionDao xUserPermissionDao = Mockito + .mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito + .mock(XXGroupPermissionDao.class); + XXModuleDefDao xModuleDefDao = Mockito.mock(XXModuleDefDao.class); + + VXUser vXUser = vxUser(); + VXPortalUser userProfile = userProfile(); + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + + List<VXString> vStringRolesList = new ArrayList<VXString>(); + VXString vXStringObj = new VXString(); + vXStringObj.setValue("ROLE_USER"); + vStringRolesList.add(vXStringObj); + + List<XXPortalUserRole> xPortalUserRoleList = new ArrayList<XXPortalUserRole>(); + XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); + XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserId(userId); + XXPortalUserRole.setUserRole("ROLE_USER"); + xPortalUserRoleList.add(XXPortalUserRole); + + List<XXUserPermission> xUserPermissionsList = new ArrayList<XXUserPermission>(); + XXUserPermission xUserPermissionObj = new XXUserPermission(); + xUserPermissionObj.setAddedByUserId(userId); + xUserPermissionObj.setCreateTime(new Date()); + xUserPermissionObj.setId(userId); + xUserPermissionObj.setIsAllowed(1); + xUserPermissionObj.setModuleId(1L); + xUserPermissionObj.setUpdatedByUserId(userId); + xUserPermissionObj.setUpdateTime(new Date()); + xUserPermissionObj.setUserId(userId); + xUserPermissionsList.add(xUserPermissionObj); + + List<XXGroupPermission> xGroupPermissionList = new ArrayList<XXGroupPermission>(); + XXGroupPermission xGroupPermissionObj = new XXGroupPermission(); + xGroupPermissionObj.setAddedByUserId(userId); + xGroupPermissionObj.setCreateTime(new Date()); + xGroupPermissionObj.setId(userId); + xGroupPermissionObj.setIsAllowed(1); + xGroupPermissionObj.setModuleId(1L); + xGroupPermissionObj.setUpdatedByUserId(userId); + xGroupPermissionObj.setUpdateTime(new Date()); + xGroupPermissionObj.setGroupId(userId); + xGroupPermissionList.add(xGroupPermissionObj); + + List<VXGroupPermission> groupPermList = new ArrayList<VXGroupPermission>(); + VXGroupPermission groupPermission = new VXGroupPermission(); + groupPermission.setId(1L); + groupPermission.setIsAllowed(1); + groupPermission.setModuleId(1L); + groupPermission.setGroupId(userId); + groupPermission.setGroupName("xyz"); + groupPermission.setOwner("admin"); + groupPermList.add(groupPermission); + + XXModuleDef xModuleDef = new XXModuleDef(); + xModuleDef.setUpdatedByUserId(userId); + xModuleDef.setAddedByUserId(userId); + xModuleDef.setCreateTime(new Date()); + xModuleDef.setId(userId); + xModuleDef.setModule("Policy manager"); + xModuleDef.setUpdateTime(new Date()); + xModuleDef.setUrl("/policy manager"); + + VXUserPermission userPermission = new VXUserPermission(); + userPermission.setId(1L); + userPermission.setIsAllowed(1); + userPermission.setModuleId(1L); + userPermission.setUserId(userId); + userPermission.setUserName("xyz"); + userPermission.setOwner("admin"); + + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn( + xPortalUserRoleDao); + Mockito.when(xPortalUserRoleDao.findByUserId(userId)).thenReturn( + xPortalUserRoleList); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.getById(userId)).thenReturn(user); + Mockito.when(daoManager.getXXUserPermission()).thenReturn( + xUserPermissionDao); + Mockito.when( + xUserPermissionDao + .findByUserPermissionIdAndIsAllowed(userProfile.getId())) + .thenReturn(xUserPermissionsList); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn( + xGroupPermissionDao); + Mockito.when( + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) + .thenReturn(xGroupPermissionList); + Mockito.when( + xGroupPermissionService.populateViewBean(xGroupPermissionObj)) + .thenReturn(groupPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when( + xUserPermissionService.populateViewBean(xUserPermissionObj)) + .thenReturn(userPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when(xUserMgr.getXUser(userId)).thenReturn(vXUser); + Mockito.when(userMgr.getUserProfileByLoginId(vXUser.getName())) + .thenReturn(userProfile); + VXStringList vXStringList = xUserMgr.setUserRolesByExternalID(userId, + vStringRolesList); + Assert.assertNotNull(vXStringList); + } + + @Test + public void test46setUserRolesByName() { + setup(); + XXPortalUserRoleDao xPortalUserRoleDao = Mockito + .mock(XXPortalUserRoleDao.class); + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + XXUserPermissionDao xUserPermissionDao = Mockito + .mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito + .mock(XXGroupPermissionDao.class); + XXModuleDefDao xModuleDefDao = Mockito.mock(XXModuleDefDao.class); + + VXPortalUser userProfile = userProfile(); + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + + List<VXString> vStringRolesList = new ArrayList<VXString>(); + VXString vXStringObj = new VXString(); + vXStringObj.setValue("ROLE_USER"); + vStringRolesList.add(vXStringObj); + + List<XXPortalUserRole> xPortalUserRoleList = new ArrayList<XXPortalUserRole>(); + XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); + XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserId(userId); + XXPortalUserRole.setUserRole("ROLE_USER"); + xPortalUserRoleList.add(XXPortalUserRole); + + List<XXUserPermission> xUserPermissionsList = new ArrayList<XXUserPermission>(); + XXUserPermission xUserPermissionObj = new XXUserPermission(); + xUserPermissionObj.setAddedByUserId(userId); + xUserPermissionObj.setCreateTime(new Date()); + xUserPermissionObj.setId(userId); + xUserPermissionObj.setIsAllowed(1); + xUserPermissionObj.setModuleId(1L); + xUserPermissionObj.setUpdatedByUserId(userId); + xUserPermissionObj.setUpdateTime(new Date()); + xUserPermissionObj.setUserId(userId); + xUserPermissionsList.add(xUserPermissionObj); + + List<XXGroupPermission> xGroupPermissionList = new ArrayList<XXGroupPermission>(); + XXGroupPermission xGroupPermissionObj = new XXGroupPermission(); + xGroupPermissionObj.setAddedByUserId(userId); + xGroupPermissionObj.setCreateTime(new Date()); + xGroupPermissionObj.setId(userId); + xGroupPermissionObj.setIsAllowed(1); + xGroupPermissionObj.setModuleId(1L); + xGroupPermissionObj.setUpdatedByUserId(userId); + xGroupPermissionObj.setUpdateTime(new Date()); + xGroupPermissionObj.setGroupId(userId); + xGroupPermissionList.add(xGroupPermissionObj); + + List<VXGroupPermission> groupPermList = new ArrayList<VXGroupPermission>(); + VXGroupPermission groupPermission = new VXGroupPermission(); + groupPermission.setId(1L); + groupPermission.setIsAllowed(1); + groupPermission.setModuleId(1L); + groupPermission.setGroupId(userId); + groupPermission.setGroupName("xyz"); + groupPermission.setOwner("admin"); + groupPermList.add(groupPermission); + + XXModuleDef xModuleDef = new XXModuleDef(); + xModuleDef.setUpdatedByUserId(userId); + xModuleDef.setAddedByUserId(userId); + xModuleDef.setCreateTime(new Date()); + xModuleDef.setId(userId); + xModuleDef.setModule("Policy manager"); + xModuleDef.setUpdateTime(new Date()); + xModuleDef.setUrl("/policy manager"); + + VXUserPermission userPermission = new VXUserPermission(); + userPermission.setId(1L); + userPermission.setIsAllowed(1); + userPermission.setModuleId(1L); + userPermission.setUserId(userId); + userPermission.setUserName("xyz"); + userPermission.setOwner("admin"); + + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn( + xPortalUserRoleDao); + Mockito.when(xPortalUserRoleDao.findByUserId(userId)).thenReturn( + xPortalUserRoleList); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.getById(userId)).thenReturn(user); + Mockito.when(daoManager.getXXUserPermission()).thenReturn( + xUserPermissionDao); + Mockito.when( + xUserPermissionDao + .findByUserPermissionIdAndIsAllowed(userProfile.getId())) + .thenReturn(xUserPermissionsList); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn( + xGroupPermissionDao); + Mockito.when( + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) + .thenReturn(xGroupPermissionList); + Mockito.when( + xGroupPermissionService.populateViewBean(xGroupPermissionObj)) + .thenReturn(groupPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when( + xUserPermissionService.populateViewBean(xUserPermissionObj)) + .thenReturn(userPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when(userMgr.getUserProfileByLoginId(userProfile.getLoginId())) + .thenReturn(userProfile); + VXStringList vXStringList = xUserMgr.setUserRolesByName( + userProfile.getLoginId(), vStringRolesList); + Assert.assertNotNull(vXStringList); + } + + @Test + public void test47getUserRolesByExternalID() { + setup(); + XXPortalUserRoleDao xPortalUserRoleDao = Mockito + .mock(XXPortalUserRoleDao.class); + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + XXUserPermissionDao xUserPermissionDao = Mockito + .mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito + .mock(XXGroupPermissionDao.class); + XXModuleDefDao xModuleDefDao = Mockito.mock(XXModuleDefDao.class); + + VXUser vXUser = vxUser(); + VXPortalUser userProfile = userProfile(); + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + + List<VXString> vStringRolesList = new ArrayList<VXString>(); + VXString vXStringObj = new VXString(); + vXStringObj.setValue("ROLE_USER"); + vStringRolesList.add(vXStringObj); + + List<XXPortalUserRole> xPortalUserRoleList = new ArrayList<XXPortalUserRole>(); + XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); + XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserId(userId); + XXPortalUserRole.setUserRole("ROLE_USER"); + xPortalUserRoleList.add(XXPortalUserRole); + + List<XXUserPermission> xUserPermissionsList = new ArrayList<XXUserPermission>(); + XXUserPermission xUserPermissionObj = new XXUserPermission(); + xUserPermissionObj.setAddedByUserId(userId); + xUserPermissionObj.setCreateTime(new Date()); + xUserPermissionObj.setId(userId); + xUserPermissionObj.setIsAllowed(1); + xUserPermissionObj.setModuleId(1L); + xUserPermissionObj.setUpdatedByUserId(userId); + xUserPermissionObj.setUpdateTime(new Date()); + xUserPermissionObj.setUserId(userId); + xUserPermissionsList.add(xUserPermissionObj); + + List<XXGroupPermission> xGroupPermissionList = new ArrayList<XXGroupPermission>(); + XXGroupPermission xGroupPermissionObj = new XXGroupPermission(); + xGroupPermissionObj.setAddedByUserId(userId); + xGroupPermissionObj.setCreateTime(new Date()); + xGroupPermissionObj.setId(userId); + xGroupPermissionObj.setIsAllowed(1); + xGroupPermissionObj.setModuleId(1L); + xGroupPermissionObj.setUpdatedByUserId(userId); + xGroupPermissionObj.setUpdateTime(new Date()); + xGroupPermissionObj.setGroupId(userId); + xGroupPermissionList.add(xGroupPermissionObj); + + List<VXGroupPermission> groupPermList = new ArrayList<VXGroupPermission>(); + VXGroupPermission groupPermission = new VXGroupPermission(); + groupPermission.setId(1L); + groupPermission.setIsAllowed(1); + groupPermission.setModuleId(1L); + groupPermission.setGroupId(userId); + groupPermission.setGroupName("xyz"); + groupPermission.setOwner("admin"); + groupPermList.add(groupPermission); + + XXModuleDef xModuleDef = new XXModuleDef(); + xModuleDef.setUpdatedByUserId(userId); + xModuleDef.setAddedByUserId(userId); + xModuleDef.setCreateTime(new Date()); + xModuleDef.setId(userId); + xModuleDef.setModule("Policy manager"); + xModuleDef.setUpdateTime(new Date()); + xModuleDef.setUrl("/policy manager"); + + VXUserPermission userPermission = new VXUserPermission(); + userPermission.setId(1L); + userPermission.setIsAllowed(1); + userPermission.setModuleId(1L); + userPermission.setUserId(userId); + userPermission.setUserName("xyz"); + userPermission.setOwner("admin"); + + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn( + xPortalUserRoleDao); + Mockito.when(xPortalUserRoleDao.findByUserId(userId)).thenReturn( + xPortalUserRoleList); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.getById(userId)).thenReturn(user); + Mockito.when(daoManager.getXXUserPermission()).thenReturn( + xUserPermissionDao); + Mockito.when( + xUserPermissionDao + .findByUserPermissionIdAndIsAllowed(userProfile.getId())) + .thenReturn(xUserPermissionsList); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn( + xGroupPermissionDao); + Mockito.when( + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) + .thenReturn(xGroupPermissionList); + Mockito.when( + xGroupPermissionService.populateViewBean(xGroupPermissionObj)) + .thenReturn(groupPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when( + xUserPermissionService.populateViewBean(xUserPermissionObj)) + .thenReturn(userPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when(xUserMgr.getXUser(userId)).thenReturn(vXUser); + Mockito.when(userMgr.getUserProfileByLoginId(vXUser.getName())) + .thenReturn(userProfile); + VXStringList vXStringList = xUserMgr.getUserRolesByExternalID(userId); + Assert.assertNotNull(vXStringList); + } + + @Test + public void test48getUserRolesByName() { + setup(); + XXPortalUserRoleDao xPortalUserRoleDao = Mockito + .mock(XXPortalUserRoleDao.class); + XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class); + XXUserPermissionDao xUserPermissionDao = Mockito + .mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito + .mock(XXGroupPermissionDao.class); + XXModuleDefDao xModuleDefDao = Mockito.mock(XXModuleDefDao.class); + + VXPortalUser userProfile = userProfile(); + Collection<String> userRoleList = new ArrayList<String>(); + userRoleList.add("ROLE_USER"); + userProfile.setUserRoleList(userRoleList); + + XXPortalUser user = new XXPortalUser(); + user.setEmailAddress(userProfile.getEmailAddress()); + user.setFirstName(userProfile.getFirstName()); + user.setLastName(userProfile.getLastName()); + user.setLoginId(userProfile.getLoginId()); + user.setPassword(userProfile.getPassword()); + user.setUserSource(userProfile.getUserSource()); + user.setPublicScreenName(userProfile.getPublicScreenName()); + user.setId(userProfile.getId()); + + List<VXString> vStringRolesList = new ArrayList<VXString>(); + VXString vXStringObj = new VXString(); + vXStringObj.setValue("ROLE_USER"); + vStringRolesList.add(vXStringObj); + + List<XXPortalUserRole> xPortalUserRoleList = new ArrayList<XXPortalUserRole>(); + XXPortalUserRole XXPortalUserRole = new XXPortalUserRole(); + XXPortalUserRole.setId(userId); + XXPortalUserRole.setUserId(userId); + XXPortalUserRole.setUserRole("ROLE_USER"); + xPortalUserRoleList.add(XXPortalUserRole); + + List<XXUserPermission> xUserPermissionsList = new ArrayList<XXUserPermission>(); + XXUserPermission xUserPermissionObj = new XXUserPermission(); + xUserPermissionObj.setAddedByUserId(userId); + xUserPermissionObj.setCreateTime(new Date()); + xUserPermissionObj.setId(userId); + xUserPermissionObj.setIsAllowed(1); + xUserPermissionObj.setModuleId(1L); + xUserPermissionObj.setUpdatedByUserId(userId); + xUserPermissionObj.setUpdateTime(new Date()); + xUserPermissionObj.setUserId(userId); + xUserPermissionsList.add(xUserPermissionObj); + + List<XXGroupPermission> xGroupPermissionList = new ArrayList<XXGroupPermission>(); + XXGroupPermission xGroupPermissionObj = new XXGroupPermission(); + xGroupPermissionObj.setAddedByUserId(userId); + xGroupPermissionObj.setCreateTime(new Date()); + xGroupPermissionObj.setId(userId); + xGroupPermissionObj.setIsAllowed(1); + xGroupPermissionObj.setModuleId(1L); + xGroupPermissionObj.setUpdatedByUserId(userId); + xGroupPermissionObj.setUpdateTime(new Date()); + xGroupPermissionObj.setGroupId(userId); + xGroupPermissionList.add(xGroupPermissionObj); + + List<VXGroupPermission> groupPermList = new ArrayList<VXGroupPermission>(); + VXGroupPermission groupPermission = new VXGroupPermission(); + groupPermission.setId(1L); + groupPermission.setIsAllowed(1); + groupPermission.setModuleId(1L); + groupPermission.setGroupId(userId); + groupPermission.setGroupName("xyz"); + groupPermission.setOwner("admin"); + groupPermList.add(groupPermission); + + XXModuleDef xModuleDef = new XXModuleDef(); + xModuleDef.setUpdatedByUserId(userId); + xModuleDef.setAddedByUserId(userId); + xModuleDef.setCreateTime(new Date()); + xModuleDef.setId(userId); + xModuleDef.setModule("Policy manager"); + xModuleDef.setUpdateTime(new Date()); + xModuleDef.setUrl("/policy manager"); + + VXUserPermission userPermission = new VXUserPermission(); + userPermission.setId(1L); + userPermission.setIsAllowed(1); + userPermission.setModuleId(1L); + userPermission.setUserId(userId); + userPermission.setUserName("xyz"); + userPermission.setOwner("admin"); + + Mockito.when(daoManager.getXXPortalUserRole()).thenReturn( + xPortalUserRoleDao); + Mockito.when(xPortalUserRoleDao.findByUserId(userId)).thenReturn( + xPortalUserRoleList); + Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao); + Mockito.when(userDao.getById(userId)).thenReturn(user); + Mockito.when(daoManager.getXXUserPermission()).thenReturn( + xUserPermissionDao); + Mockito.when( + xUserPermissionDao + .findByUserPermissionIdAndIsAllowed(userProfile.getId())) + .thenReturn(xUserPermissionsList); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn( + xGroupPermissionDao); + Mockito.when( + xGroupPermissionDao.findbyVXPortalUserId(userProfile.getId())) + .thenReturn(xGroupPermissionList); + Mockito.when( + xGroupPermissionService.populateViewBean(xGroupPermissionObj)) + .thenReturn(groupPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when( + xUserPermissionService.populateViewBean(xUserPermissionObj)) + .thenReturn(userPermission); + Mockito.when(daoManager.getXXModuleDef()).thenReturn(xModuleDefDao); + Mockito.when(xModuleDefDao.findByModuleId(Mockito.anyLong())) + .thenReturn(xModuleDef); + Mockito.when(userMgr.getUserProfileByLoginId(userProfile.getLoginId())) + .thenReturn(userProfile); + VXStringList vXStringList = xUserMgr.getUserRolesByName(userProfile + .getLoginId()); + Assert.assertNotNull(vXStringList); + } }
