Ejemplo n.º 1
0
  @Transactional
  private List<UserGroup> getPrivilegesAndCreateGroups(
      LDAPUser user, boolean createNonExistingLdapGroup, User toSave) {
    GroupRepository groupRepo = ApplicationContextHolder.get().getBean(GroupRepository.class);

    List<UserGroup> ug = new LinkedList<UserGroup>();
    for (Map.Entry<String, Profile> privilege : user.getPrivileges().entries()) {
      // Add group privileges for each groups

      // Retrieve group id
      String groupName = privilege.getKey();
      Profile profile = privilege.getValue();

      Group group = groupRepo.findByName(groupName);

      if (group == null && createNonExistingLdapGroup) {
        group = new Group().setName(groupName);
        group = groupRepo.save(group);

        if (Log.isDebugEnabled(Geonet.LDAP)) {
          Log.debug(Geonet.LDAP, "  - Add LDAP group " + groupName + " for user.");
        }
      }
      if (group != null) {
        if (Log.isDebugEnabled(Geonet.LDAP)) {
          Log.debug(Geonet.LDAP, "  - Add LDAP group " + groupName + " for user.");
        }
        UserGroup usergroup = new UserGroup();
        usergroup.setGroup(group);
        usergroup.setUser(toSave);
        usergroup.setProfile(profile);
        ug.add(usergroup);
      } else {
        if (Log.isDebugEnabled(Geonet.LDAP)) {
          Log.debug(
              Geonet.LDAP,
              "  - Can't create LDAP group "
                  + groupName
                  + " for user. "
                  + "Group does not exist in local database or createNonExistingLdapGroup is set to false.");
        }
      }
    }
    return ug;
  }