| | |
| | | userManager.updateTeamModels(userTeams.values()); |
| | | } |
| | | } |
| | | if (!supportsTeamMembershipChanges()) { |
| | | getEmptyTeamsFromLdap(ldapConnection); |
| | | } |
| | | lastLdapUserSync.set(System.currentTimeMillis()); |
| | | } finally { |
| | | ldapConnection.close(); |
| | |
| | | } |
| | | } |
| | | |
| | | private void getEmptyTeamsFromLdap(LDAPConnection ldapConnection) { |
| | | String groupBase = settings.getString(Keys.realm.ldap.groupBase, ""); |
| | | String groupMemberPattern = settings.getString(Keys.realm.ldap.groupEmptyMemberPattern, "(&(objectClass=group)(!(member=*)))"); |
| | | |
| | | SearchResult teamMembershipResult = doSearch(ldapConnection, groupBase, true, groupMemberPattern, null); |
| | | if (teamMembershipResult != null && teamMembershipResult.getEntryCount() > 0) { |
| | | for (int i = 0; i < teamMembershipResult.getEntryCount(); i++) { |
| | | SearchResultEntry teamEntry = teamMembershipResult.getSearchEntries().get(i); |
| | | if (!teamEntry.hasAttribute("member")) { |
| | | String teamName = teamEntry.getAttribute("cn").getValue(); |
| | | |
| | | TeamModel teamModel = userManager.getTeamModel(teamName); |
| | | if (teamModel == null) { |
| | | teamModel = createTeamFromLdap(teamEntry); |
| | | userManager.updateTeamModel(teamModel); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private TeamModel createTeamFromLdap(SearchResultEntry teamEntry) { |
| | | TeamModel answer = new TeamModel(teamEntry.getAttributeValue("cn")); |
| | | answer.accountType = getAccountType(); |