if (orgService.getMembershipTypeHandler().findMembershipType(m.getMembershipType()) == null) throw new InvalidNameException("Can not create membership record " + m.getId() + ", because membership" + "type " + m.getMembershipType() + " does not exist."); if (orgService.getGroupHandler().findGroupById(m.getGroupId()) == null) throw new InvalidNameException("Can not create membership record " + m.getId() + ", because group " + m.getGroupId() + " does not exist."); if (orgService.getUserHandler().findUserByName(m.getUserName()) == null) throw new InvalidNameException("Can not create membership record " + m.getId() + ", because user " + m.getGroupId() + " does not exist."); if (findMembershipByUserGroupAndType(m.getUserName(), m.getGroupId(), m.getMembershipType()) != null)
public static String computeId(Membership membership) { StringBuffer id = new StringBuffer(); if (membership.getMembershipType() != null) { id.append(membership.getMembershipType()); } id.append(":"); if (membership.getUserName() != null) { id.append(membership.getUserName()); } id.append(":"); if (membership.getGroupId() != null) { id.append(membership.getGroupId()); } return id.toString(); }
@SuppressWarnings("unchecked") public Collection<Group> findGroupByMembership(String userName, String membershipType) throws Exception { if (userName == null || membershipType == null) return null; MembershipHandler membershipHandler = orgService.getMembershipHandler(); List<Membership> members = (List<Membership>)membershipHandler.findMembershipsByUser(userName); List<Group> groups = new ArrayList<Group>(); for (Membership member : members) { if (!member.getMembershipType().equals(membershipType)) continue; Group g = findGroupById(member.getGroupId()); if (g != null) groups.add(g); } if (LOG.isDebugEnabled()) LOG.debug("----------FIND GROUP BY USERNAME AND TYPE: " + userName + " - " + membershipType + " - "); return groups; }
List<Membership> memberships = Util.getActivatedMembershipsRelatedToUser(session, username); for (Membership membership : memberships) { invokeMembershipListeners(username, membership.getGroupId(), membership.getMembershipType(), eventType); if (isNew) { if (!isAlreadyIntegrated) { invokeMembershipListeners(username, membership.getGroupId(), membership.getMembershipType(), eventType); } else { if (LOG.isDebugEnabled()) { LOG.debug("\t\t\t" + membership.getId() + " Membership is already integrated"); invokeMembershipListeners(username, membership.getGroupId(), membership.getMembershipType(), eventType); } else { if (LOG.isDebugEnabled()) { LOG.debug("\t\t\t" + membership.getId() + " Membership is not yet added, add invoke listeners with parameter isNew=true"); invokeMembershipListeners(username, membership.getGroupId(), membership.getMembershipType(), EventType.ADDED);
public int compareTo(Object o) { if (!(o instanceof Membership) || userName == null) { return 0; } Membership m = (Membership) o; return userName.compareTo(m.getUserName()); }
private boolean contains(Membership membership, List<Membership> activatedMemberships) { if (membership == null || activatedMemberships == null || activatedMemberships.size() == 0) { return false; } for (Membership tmpMembership : activatedMemberships) { if (tmpMembership.getId().equals(membership.getId())) { return true; } } return false; }
/** * Create LDAP attributes that represents user Membership in LDAP context. * * @param m Membership * @param userDN user Distinguished Name * @return DAP attributes */ public final Attributes membershipToAttributes(Membership m, String userDN) { BasicAttributes attrs = new BasicAttributes(); if (MEMBERSHIP_LDAP_CLASSES == null) MEMBERSHIP_LDAP_CLASSES = membershipLDAPClasses.split(","); attrs.put(new ObjectClassAttribute(MEMBERSHIP_LDAP_CLASSES)); attrs.put(membershipTypeRoleNameAttr, m.getMembershipType()); attrs.put(membershipTypeMemberValue, userDN); return attrs; }
@SuppressWarnings("unchecked") public Collection<Group> findGroupsOfUser(String user) throws Exception { MembershipHandler membershipHandler = orgService.getMembershipHandler(); List<Membership> members = (List<Membership>)membershipHandler.findMembershipsByUser(user); List<Group> groups = new ArrayList<Group>(); for (Membership member : members) { Group g = findGroupById(member.getGroupId()); if (g != null && !hasGroup(groups, g)) groups.add(g); } if (LOG.isDebugEnabled()) LOG.debug("----------FIND GROUP BY USER: " + user + " - " + (groups != null)); return groups; }
public static boolean hasMembershipFolder(Session session, Membership membership) throws Exception { boolean hasNode = Util.getMembershipsFolder(session).hasNode( membership.getGroupId().replace("/", Util.SPECIAL_CHARACTER_REPLACEMENT) + Util.MEMBERSHIP_SEPARATOR + membership.getMembershipType().replace("*", Util.SPECIAL_CHARACTER_REPLACEMENT) + Util.MEMBERSHIP_SEPARATOR + membership.getUserName()); return hasNode; }
private OrganizationConfig.User convertUserToSerializableObject(User user) throws Exception { OrganizationConfig.User orgConfigUser = new OrganizationConfig.User(); orgConfigUser.setEmail(user.getEmail()); orgConfigUser.setFirstName(user.getFirstName()); orgConfigUser.setLastName(user.getLastName()); if (organizationService instanceof PicketLinkIDMOrganizationServiceImpl) { orgConfigUser.setPassword(readPasswordFromPicketLink(user)); } else { orgConfigUser.setPassword(user.getPassword()); } orgConfigUser.setUserName(user.getUserName()); @SuppressWarnings("unchecked") Collection<Membership> memberships = organizationService.getMembershipHandler().findMembershipsByUser(user.getUserName()); String groups = ""; for (Membership membership : memberships) { groups = new StringBuffer().append(groups).append(membership.getMembershipType()).append(":") .append(membership.getGroupId()).append(",").toString(); groups.substring(0, groups.lastIndexOf(",")); } orgConfigUser.setGroups(groups); return orgConfigUser; }
/** * {@inheritDoc} */ public void postSave(Membership m, boolean isNew) throws Exception { if (!getOrganizationIntegrationService().isEnabled()) { return; } if (!isNew) { return; } Session session = null; try { session = repositoryService.getCurrentRepository().getSystemSession(Util.WORKSPACE); if (Util.hasUserFolder(session, m.getUserName())) { if (!Util.hasMembershipFolder(session, m)) { Util.createMembershipFolder(session, m); } } else { LOG.warn("Membership listeners can't be invoked on membership '" + m + "' because the user isn't synchronized yet."); } } finally { if (session != null) { session.logout(); } } }
/** * {@inheritDoc} */ @SuppressWarnings("unchecked") public Collection<?> removeMembershipByUser(String username, boolean broadcast) throws Exception { // DBObjectQuery<MembershipImpl> query = new // DBObjectQuery<MembershipImpl>(MembershipImpl.class); // query.addLIKE("userName", username); List<Membership> members = (List<Membership>)findMembershipsByUser(username); for (Membership member : members) { removeMembership(member.getId(), true); } return members; }
if (service.getMembershipTypeHandler().findMembershipType(membership.getMembershipType()) == null) throw new InvalidNameException("Can not create membership record " + membership.getId() + " because membership type " + membership.getMembershipType() + " not exists."); if (service.getGroupHandler().findGroupById(membership.getGroupId()) == null) throw new InvalidNameException("Can not create membership record " + membership.getId() + ", because group " + membership.getGroupId() + " does not exist."); if (service.getUserHandler().findUserByName(membership.getUserName()) == null) throw new InvalidNameException("Can not create membership record " + membership.getId() + ", because user " + membership.getGroupId() + " does not exist."); if (findMembershipByUserGroupAndType(membership.getUserName(), membership.getGroupId(), membership.getMembershipType()) != null)
public static void createMembershipFolder(Session session, Membership membership) throws Exception { if (!hasUserFolder(session, membership.getUserName())) { LOG.debug("listeners of user " + membership.getUserName() + " aren't executed, ignore membership integration feature."); return; } if (!hasGroupFolder(session, membership.getGroupId())) { LOG.debug("listeners of group " + membership.getGroupId() + " aren't executed, ignore membership integration feature."); return; } createFolder(getMembershipsFolder(session), membership.getGroupId().replace("/", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getMembershipType().replace("*", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getUserName()); createFolder( getGroupNode(session, membership.getGroupId()), membership.getMembershipType().replace("*", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getUserName()); createFolder(getUserNode(session, membership.getUserName()), membership.getMembershipType().replace("*", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getGroupId().replace("/", SPECIAL_CHARACTER_REPLACEMENT)); session.save(); }
while (i < activatedMemberships.size()) { Membership membership = activatedMemberships.get(i); if (membership.getGroupId().equals(groupId)) { activatedMemberships.remove(i); } else { invokeMembershipListeners(username, groupId, membership.getMembershipType(), event); while (i < activatedMemberships.size()) { Membership membership = activatedMemberships.get(i); if (membership.getGroupId().equals(groupId)) { activatedMemberships.remove(i); } else { if (isNew) { if (!contains(membership, activatedMemberships)) { invokeMembershipListeners(username, groupId, membership.getMembershipType(), event); invokeMembershipListeners(username, groupId, membership.getMembershipType(), event);
public ListAccess<User> findUsersByGroupId(String groupId) throws Exception { if (LOG.isDebugEnabled()) LOG.debug("+++++++++++FIND USER BY GROUP_ID " + groupId); MembershipHandler membershipHandler = orgService.getMembershipHandler(); GroupHandler groupHandler = orgService.getGroupHandler(); Group group = groupHandler.findGroupById(groupId); if (group == null) { return new LazyListImpl(); } List<Membership> members = (List<Membership>)membershipHandler.findMembershipsByGroup(group); DBObjectQuery<UserImpl> dbQuery = new DBObjectQuery<UserImpl>(UserImpl.class); for (Membership member : members) { dbQuery.addEQ("USER_NAME", member.getUserName()); } return new JDBCListAccess<User>(this, dbQuery.toQueryUseOR(), dbQuery.toCountQueryUseOR()); }
LOG.warn("\t\tMembership exists: can't invoke delete listeners on the existant membership : " + membership.getId()); return; LOG.info("Invoke " + membership.getId() + " Membership deletion listeners."); Collection<MembershipEventListener> membershipDAOListeners = membershipDAOListeners_.values(); for (MembershipEventListener membershipEventListener : membershipDAOListeners) { membershipEventListener.preDelete(membership); } catch (Exception e) { LOG.error("\t\tFailed to call preDelete on " + username + " Membership (" + membership.getId() + ") listener = " + membershipEventListener.getClass(), e); } finally { membershipEventListener.postDelete(membership); } catch (Exception e) { LOG.error("\t\tFailed to call postDelete on " + username + " Membership (" + membership.getId() + ") listener = " + membershipEventListener.getClass(), e); } finally { LOG.error("\t\tFailed to call listeners on Membership (" + membership.getId() + ")", e); LOG.info("Invoke " + membership.getId() + " Membership synchronization."); Collection<MembershipEventListener> membershipDAOListeners = membershipDAOListeners_.values(); for (MembershipEventListener membershipEventListener : membershipDAOListeners) { membershipEventListener.preSave(membership, isNew); } catch (Exception e) { LOG.error("\t\tFailed to call preSave on Membership (" + membership.getId() + ",isNew = " + isNew + ") listener = " + membershipEventListener.getClass(), e);
@SuppressWarnings("unchecked") public void setUser(User user) throws Exception { user_ = user.getUserName(); membership_.clear(); OrganizationService service = getApplicationComponent(OrganizationService.class); Collection<org.exoplatform.services.organization.Membership> collection = service.getMembershipHandler().findMembershipsByUser(user_); for (org.exoplatform.services.organization.Membership membership : collection) { addMembership(new Membership(membership.getUserName(), membership.getId(), membership.getGroupId(), membership .getMembershipType())); } UIGrid uiGrid = getChild(UIGrid.class); SerializablePageList pageList = new SerializablePageList(new MembershipListAccess(getMembership()), 10); uiGrid.getUIPageIterator().setPageList(pageList); }
public static void deleteMembershipFolder(Session session, Membership membership) throws Exception { getMembershipsFolder(session).getNode( membership.getGroupId().replace("/", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getMembershipType().replace("*", SPECIAL_CHARACTER_REPLACEMENT) + MEMBERSHIP_SEPARATOR + membership.getUserName()).remove(); String membershipGroupFolderName = membership.getMembershipType().replace("*", Util.SPECIAL_CHARACTER_REPLACEMENT) + Util.MEMBERSHIP_SEPARATOR + membership.getUserName(); if (hasGroupFolder(session, membership.getGroupId()) && getGroupNode(session, membership.getGroupId()).hasNode(membershipGroupFolderName)) { getGroupNode(session, membership.getGroupId()).getNode(membershipGroupFolderName).remove(); } String membershipUserFolderName = membership.getMembershipType().replace("*", Util.SPECIAL_CHARACTER_REPLACEMENT) + Util.MEMBERSHIP_SEPARATOR + membership.getGroupId().replace("/", Util.SPECIAL_CHARACTER_REPLACEMENT); if (hasUserFolder(session, membership.getUserName()) && getUserNode(session, membership.getUserName()).hasNode(membershipUserFolderName)) { getUserNode(session, membership.getUserName()).getNode(membershipUserFolderName).remove(); } session.save(); }
for (Membership member : members) membershipHanler.removeMembership(member.getId(), true);