public void linkMembership(User user, Group g, MembershipType mt, boolean broadcast) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "linkMembership", new Object[] {"user", user, "group", g, "membershipType", mt, "broadcast", broadcast}); } orgService.flush(); if (user == null) { throw new InvalidNameException("Can not create membership record because user is null"); } if (orgService.getUserHandler().findUserByName(user.getUserName()) == null) { throw new InvalidNameException( "Can not create membership record because user " + user.getUserName() + " does not exist."); } if (g == null) { throw new InvalidNameException( "Can not create membership record for " + user.getUserName() + " because group is null"); } // Check group exist Group g1 = this.orgService.getGroupHandler().findGroupById(g.getId()); if (g1 == null) { throw new InvalidNameException( "Can not create membership record for " + user.getUserName() + " because group " + g.getGroupName() + " is not exist"); } if (mt == null) { throw new InvalidNameException( "Can not create membership record for " + user.getUserName() + " because membership type is null"); } if (orgService.getMembershipTypeHandler().findMembershipType(mt.getName()) == null) { throw new InvalidNameException("MembershipType doesn't exist: " + mt.getName()); } String plGroupName = getPLIDMGroupName(g.getGroupName()); String groupId = getIdentitySession() .getPersistenceManager() .createGroupKey( plGroupName, orgService.getConfiguration().getGroupType(g.getParentId())); if (isCreateMembership(mt.getName(), g.getId())) { if (getIdentitySession().getRoleManager().getRoleType(mt.getName()) == null) { getIdentitySession().getRoleManager().createRoleType(mt.getName()); } if (getIdentitySession() .getRoleManager() .hasRole(user.getUserName(), groupId, mt.getName())) { return; } } if (isAssociationMapped() && getAssociationMapping().equals(mt.getName())) { getIdentitySession() .getRelationshipManager() .associateUserByKeys(groupId, user.getUserName()); } MembershipImpl membership = new MembershipImpl(); membership.setMembershipType(mt.getName()); membership.setUserName(user.getUserName()); membership.setGroupId(g.getId()); if (broadcast) { preSave(membership, true); } if (isCreateMembership(mt.getName(), g.getId())) { getIdentitySession().getRoleManager().createRole(mt.getName(), user.getUserName(), groupId); } if (broadcast) { postSave(membership, true); } }
public Collection findMembershipsByGroupId(String groupId) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "findMembershipsByGroup", new Object[] {"groupId", groupId}); } orgService.flush(); String plGroupName = getPLIDMGroupName(getGroupNameFromId(groupId)); String gid = getIdentitySession() .getPersistenceManager() .createGroupKey(plGroupName, getGroupTypeFromId(groupId)); Collection<Role> roles = new HashSet(); try { roles = getIdentitySession().getRoleManager().findRoles(gid, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } HashSet<MembershipImpl> memberships = new HashSet<MembershipImpl>(); Group g = orgService.getGroupHandler().findGroupById(groupId); for (Role role : roles) { if (isCreateMembership(role.getRoleType().getName(), g.getId())) { MembershipImpl m = new MembershipImpl(); m.setGroupId(g.getId()); m.setUserName(role.getUser().getId()); m.setMembershipType(role.getRoleType().getName()); memberships.add(m); } } if (isAssociationMapped()) { Collection<org.picketlink.idm.api.User> users = new HashSet(); try { users = getIdentitySession().getRelationshipManager().findAssociatedUsers(gid, false, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } for (org.picketlink.idm.api.User user : users) { MembershipImpl m = new MembershipImpl(); m.setGroupId(groupId); m.setUserName(user.getId()); m.setMembershipType(getAssociationMapping()); memberships.add(m); } } // TODO: Exo UI has harcoded casts to List List<MembershipImpl> results = new LinkedList<MembershipImpl>(memberships); if (orgService.getConfiguration().isSortMemberships()) { Collections.sort(results); } if (log.isTraceEnabled()) { Tools.logMethodOut(log, LogLevel.TRACE, "findMembershipsByGroupId", results); } return results; }
public Collection findMembershipsByUser(String userName) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "findMembershipsByUser", new Object[] {"userName", userName}); } orgService.flush(); Collection<Role> roles = new HashSet(); try { roles = getIdentitySession().getRoleManager().findRoles(userName, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } HashSet<MembershipImpl> memberships = new HashSet<MembershipImpl>(); for (Role role : roles) { Group g = ((GroupDAOImpl) orgService.getGroupHandler()).convertGroup(role.getGroup()); if (isCreateMembership(role.getRoleType().getName(), g.getId())) { MembershipImpl m = new MembershipImpl(); m.setGroupId(g.getId()); m.setUserName(role.getUser().getId()); // LDAP store may return raw membership type as role type if (role.getRoleType().getName().equals("JBOSS_IDENTITY_MEMBERSHIP")) { m.setMembershipType(orgService.getConfiguration().getAssociationMembershipType()); } else { m.setMembershipType(role.getRoleType().getName()); } memberships.add(m); } } if (isAssociationMapped()) { Collection<org.picketlink.idm.api.Group> groups = new HashSet(); try { groups = getIdentitySession().getRelationshipManager().findAssociatedGroups(userName, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } for (org.picketlink.idm.api.Group group : groups) { MembershipImpl m = new MembershipImpl(); Group g = ((GroupDAOImpl) orgService.getGroupHandler()).convertGroup(group); m.setGroupId(g.getId()); m.setUserName(userName); m.setMembershipType(getAssociationMapping()); memberships.add(m); } } Collection result = new LinkedList(memberships); if (log.isTraceEnabled()) { Tools.logMethodOut(log, LogLevel.TRACE, "findMembershipsByUser", result); } return result; }
public Collection findMembershipsByUserAndGroup(String userName, String groupId) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "findMembershipByUserAndGroup", new Object[] { "userName", userName, "groupId", groupId, }); } orgService.flush(); if (userName == null) { // julien fix : if user name is null, need to check if we do need to return a special group if (log.isTraceEnabled()) { Tools.logMethodOut( log, LogLevel.TRACE, "findMembershipByUserAndGroup", Collections.emptyList()); } return Collections.emptyList(); } String plGroupName = getPLIDMGroupName(getGroupNameFromId(groupId)); String gid = getIdentitySession() .getPersistenceManager() .createGroupKey(plGroupName, getGroupTypeFromId(groupId)); Collection<RoleType> roleTypes = new HashSet(); try { roleTypes = getIdentitySession().getRoleManager().findRoleTypes(userName, gid, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } HashSet<MembershipImpl> memberships = new HashSet<MembershipImpl>(); for (RoleType roleType : roleTypes) { if (isCreateMembership(roleType.getName(), groupId)) { MembershipImpl m = new MembershipImpl(); m.setGroupId(groupId); m.setUserName(userName); m.setMembershipType(roleType.getName()); memberships.add(m); } } boolean associated = false; try { associated = getIdentitySession().getRelationshipManager().isAssociatedByKeys(gid, userName); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } if (isAssociationMapped() && associated) { MembershipImpl m = new MembershipImpl(); m.setGroupId(groupId); m.setUserName(userName); m.setMembershipType(getAssociationMapping()); memberships.add(m); } // TODO: Exo UI has hardcoded casts to List Collection result = new LinkedList(memberships); if (log.isTraceEnabled()) { Tools.logMethodOut(log, LogLevel.TRACE, "findMembershipByUserAndGroup", result); } return result; }
public Membership findMembershipByUserGroupAndType(String userName, String groupId, String type) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "findMembershipByUserAndType", new Object[] { "userName", userName, "groupId", groupId, "type", type, }); } orgService.flush(); String plGroupName = getPLIDMGroupName(getGroupNameFromId(groupId)); String gid = getIdentitySession() .getPersistenceManager() .createGroupKey(plGroupName, getGroupTypeFromId(groupId)); boolean hasMembership = false; boolean associated = false; try { associated = getIdentitySession().getRelationshipManager().isAssociatedByKeys(gid, userName); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } if (isAssociationMapped() && getAssociationMapping().equals(type) && associated) { hasMembership = true; } Role role = null; try { role = getIdentitySession().getRoleManager().getRole(type, userName, gid); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } if (role != null && (!isAssociationMapped() || !getAssociationMapping().equals(role.getRoleType()) || !ignoreMappedMembershipType(groupId))) { hasMembership = true; } Membership result = null; if (hasMembership) { MembershipImpl m = new MembershipImpl(); m.setGroupId(groupId); m.setUserName(userName); m.setMembershipType(type); result = m; } if (log.isTraceEnabled()) { Tools.logMethodOut(log, LogLevel.TRACE, "findMembershipByUserGroupAndType", result); } return result; }
public Collection removeMembershipByUser(String userName, boolean broadcast) throws Exception { if (log.isTraceEnabled()) { Tools.logMethodIn( log, LogLevel.TRACE, "removeMembershipByUser", new Object[] {"userName", userName, "broadcast", broadcast}); } orgService.flush(); Collection<Role> roles = new HashSet(); try { roles = getIdentitySession().getRoleManager().findRoles(userName, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } HashSet<MembershipImpl> memberships = new HashSet<MembershipImpl>(); for (Role role : roles) { MembershipImpl m = new MembershipImpl(); Group g = ((GroupDAOImpl) orgService.getGroupHandler()).convertGroup(role.getGroup()); m.setGroupId(g.getId()); m.setUserName(role.getUser().getId()); m.setMembershipType(role.getRoleType().getName()); memberships.add(m); if (broadcast) { preDelete(m); } getIdentitySession().getRoleManager().removeRole(role); if (broadcast) { postDelete(m); } } if (isAssociationMapped()) { Collection<org.picketlink.idm.api.Group> groups = new HashSet(); try { groups = getIdentitySession().getRelationshipManager().findAssociatedGroups(userName, null); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } Set<String> keys = new HashSet<String>(); keys.add(userName); for (org.picketlink.idm.api.Group group : groups) { try { getIdentitySession() .getRelationshipManager() .disassociateUsersByKeys(group.getKey(), keys); } catch (Exception e) { // TODO: handleException("Identity operation error: ", e); } } } // TODO: Exo UI has hardcoded casts to List return new LinkedList(memberships); }