Alfred Schmid
2014-02-03 f6d7de15b1471b1c101362dbaf598de8031e6540
src/main/java/com/gitblit/auth/LdapAuthProvider.java
@@ -152,6 +152,9 @@
                                userManager.updateTeamModels(userTeams.values());
                            }
                        }
                        if (!supportsTeamMembershipChanges()) {
                           getEmptyTeamsFromLdap(ldapConnection);
                        }
                        lastLdapUserSync.set(System.currentTimeMillis());
                    } finally {
                        ldapConnection.close();
@@ -435,6 +438,27 @@
      }
   }
   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();