private static Map<String, String> getKimMemberTypesMap() { Map<String, String> kimDocumentActionsMap = new HashMap<String, String>(); kimDocumentActionsMap.put(MemberType.PRINCIPAL.getCode(), MEMBER_TYPE_PRINCIPAL); kimDocumentActionsMap.put(MemberType.GROUP.getCode(), MEMBER_TYPE_GROUP); kimDocumentActionsMap.put(MemberType.ROLE.getCode(), MEMBER_TYPE_ROLE); return kimDocumentActionsMap; }
protected boolean checkDelegationMember(RoleDocumentDelegationMember newMember) { if (StringUtils.isBlank(newMember.getMemberTypeCode()) || StringUtils.isBlank(newMember.getMemberId())) { GlobalVariables.getMessageMap() .putError( "document.delegationMember.memberId", RiceKeyConstants.ERROR_EMPTY_ENTRY, new String[] {"Member Type Code and Member ID"}); return false; } if (MemberType.PRINCIPAL.getCode().equals(newMember.getMemberTypeCode())) { Principal principalInfo = getIdentityService().getPrincipal(newMember.getMemberId()); if (principalInfo == null) { GlobalVariables.getMessageMap() .putError( "document.delegationMember.memberId", RiceKeyConstants.ERROR_MEMBERID_MEMBERTYPE_MISMATCH, new String[] {newMember.getMemberId()}); return false; } else { newMember.setMemberName(principalInfo.getPrincipalName()); } } else if (MemberType.GROUP.getCode().equals(newMember.getMemberTypeCode())) { Group groupInfo = null; groupInfo = getGroupService().getGroup(newMember.getMemberId()); if (groupInfo == null) { GlobalVariables.getMessageMap() .putError( "document.delegationMember.memberId", RiceKeyConstants.ERROR_MEMBERID_MEMBERTYPE_MISMATCH, new String[] {newMember.getMemberId()}); return false; } else { newMember.setMemberName(groupInfo.getName()); newMember.setMemberNamespaceCode(groupInfo.getNamespaceCode()); } } else if (MemberType.ROLE.getCode().equals(newMember.getMemberTypeCode())) { Role roleInfo = KimApiServiceLocator.getRoleService().getRole(newMember.getMemberId()); if (roleInfo == null) { GlobalVariables.getMessageMap() .putError( "document.delegationMember.memberId", RiceKeyConstants.ERROR_MEMBERID_MEMBERTYPE_MISMATCH, new String[] {newMember.getMemberId()}); return false; } else { newMember.setMemberName(roleInfo.getName()); newMember.setMemberNamespaceCode(roleInfo.getNamespaceCode()); } } return true; }
protected boolean checkKimDocumentRoleMember(KimDocumentRoleMember newMember) { boolean memberExists = false; String memberName = null; String memberNamespace = null; if (StringUtils.isBlank(newMember.getMemberId())) { GlobalVariables.getMessageMap() .putError( "document.member.memberId", RiceKeyConstants.ERROR_EMPTY_ENTRY, new String[] {"Member ID"}); return false; } if (MemberType.PRINCIPAL.getCode().equals(newMember.getMemberTypeCode())) { Principal pi = this.getIdentityService().getPrincipal(newMember.getMemberId()); if (pi != null) { memberExists = true; memberName = pi.getPrincipalName(); memberNamespace = ""; } } else if (MemberType.GROUP.getCode().equals(newMember.getMemberTypeCode())) { Group gi = KimApiServiceLocator.getGroupService().getGroup(newMember.getMemberId()); if (gi != null) { memberExists = true; memberName = gi.getName(); memberNamespace = gi.getNamespaceCode(); } } else if (MemberType.ROLE.getCode().equals(newMember.getMemberTypeCode())) { Role ri = KimApiServiceLocator.getRoleService().getRole(newMember.getMemberId()); if (!validateRole(newMember.getMemberId(), ri, "document.member.memberId", "Role")) { return false; } else { memberExists = true; memberName = ri.getName(); memberNamespace = ri.getNamespaceCode(); } } if (!memberExists) { GlobalVariables.getMessageMap() .putError( "document.member.memberId", RiceKeyConstants.ERROR_MEMBERID_MEMBERTYPE_MISMATCH, new String[] {newMember.getMemberId()}); return false; } newMember.setMemberName(memberName); newMember.setMemberNamespaceCode(memberNamespace); return true; }
/** * Helper method to get the role member objects. * * @param principalId The person to get the role for * @param roleIds The role * @param asOfDate The effective date of the role * @param activeOnly Whether or not to consider only active role members * @return the list of role member objects */ private List<RoleMember> getPrincipalIdRoleMembers( String principalId, List<String> roleIds, DateTime asOfDate, boolean activeOnly) { List<String> groupIds = getGroupService().getGroupIdsByPrincipalId(principalId); List<Predicate> predicates = new ArrayList<Predicate>(); predicates.add( in( KimConstants.PrimaryKeyConstants.SUB_ROLE_ID, roleIds.toArray(new String[roleIds.size()]))); List<Predicate> principalPredicates = new ArrayList<Predicate>(); principalPredicates.add( equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.PRINCIPAL.getCode())); if (principalId != null) { principalPredicates.add(equal(KIMPropertyConstants.RoleMember.MEMBER_ID, principalId)); } Predicate principalPredicate = and(principalPredicates.toArray(new Predicate[] {})); Predicate rolePredicate = equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.ROLE.getCode()); List<Predicate> groupPredicates = new ArrayList<Predicate>(); groupPredicates.add( equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.GROUP.getCode())); if (CollectionUtils.isNotEmpty(groupIds)) { groupPredicates.add( in(KIMPropertyConstants.RoleMember.MEMBER_ID, groupIds.toArray(new String[] {}))); } Predicate groupPredicate = and(groupPredicates.toArray(new Predicate[] {})); predicates.add(or(principalPredicate, rolePredicate, groupPredicate)); if (activeOnly) { predicates.add( or(isNull("activeFromDateValue"), lessThanOrEqual("activeFromDateValue", asOfDate))); predicates.add(or(isNull("activeToDateValue"), greaterThan("activeToDateValue", asOfDate))); } return getRoleService() .findRoleMembers( QueryByCriteria.Builder.fromPredicates(predicates.toArray(new Predicate[] {}))) .getResults(); }