public UserGroupCache getUserGroupCache() { return getTenantRegistry().getUserGroupCache(); } }
/** * Sets next free SambaSID or, if free and given the same id as the posix UID. * * @param ldapUserValues * @param user */ public void setDefaultValues(final LdapUserValues ldapUserValues, final PFUserDO user) { final LdapConfig ldapConfig = ldapService.getLdapConfig(); LdapSambaAccountsConfig ldapSambaAccountsConfig = ldapConfig != null ? ldapConfig.getSambaAccountsConfig() : null; if (ldapSambaAccountsConfig == null) { ldapSambaAccountsConfig = new LdapSambaAccountsConfig(); } if (ldapUserValues.getUidNumber() != null && isGivenNumberFree(user, ldapUserValues.getUidNumber()) == true) { ldapUserValues.setSambaSIDNumber(ldapUserValues.getUidNumber()); } else { ldapUserValues.setSambaSIDNumber(getNextFreeSambaSIDNumber()); } if (ldapSambaAccountsConfig.getDefaultSambaPrimaryGroupSID() != null) { ldapUserValues.setSambaPrimaryGroupSIDNumber(ldapSambaAccountsConfig.getDefaultSambaPrimaryGroupSID()); } }
/** * Get all given uid numbers of all ProjectForge users including any deleted user and get the next highest and free * number. The number is 1000 if no uid number (with a value greater than 999) is found. */ public int getNextFreeSambaSIDNumber() { final Collection<PFUserDO> allUsers = getUserGroupCache().getAllUsers(); int currentMaxNumber = 999; for (final PFUserDO user : allUsers) { final LdapUserValues ldapUserValues = PFUserDOConverter.readLdapUserValues(user.getLdapValues()); if (ldapUserValues == null) { continue; } if (ldapUserValues.getSambaSIDNumber() != null && ldapUserValues.getSambaSIDNumber().intValue() > currentMaxNumber) { currentMaxNumber = ldapUserValues.getUidNumber(); } } return currentMaxNumber + 1; }
ldapPosixAccountsUtils.setDefaultValues(ldapUserValues, data); if (updateSambaAccount == true) { ldapSambaAccountsUtils.setDefaultValues(ldapUserValues, data); sambaSIDNumberField.modelChanged(); sambaPrimaryGroupSIDNumberField.modelChanged(); ldapSambaAccountsUtils.setDefaultValues(ldapUserValues, data); sambaSIDNumberField.modelChanged(); sambaPrimaryGroupSIDNumberField.modelChanged();
@Override public void validate(final Form<?> form) { final LdapUserValues values = new LdapUserValues(); values.setSambaSIDNumber(sambaSIDNumberField.getConvertedInput()); values.setSambaPrimaryGroupSIDNumber(sambaPrimaryGroupSIDNumberField.getConvertedInput()); if (StringUtils.isBlank(data.getLdapValues()) == true && values.isSambaValuesEmpty() == true) { // Nothing to validate: all fields are zero and posix account wasn't set for this user before. return; } if (values.getSambaSIDNumber() == null) { sambaSIDNumberField .error(getLocalizedMessage(WebConstants.I18N_KEY_FIELD_REQUIRED, getString("ldap.sambaSID"))); } else { if (ldapSambaAccountsUtils.isGivenNumberFree(data, values.getSambaSIDNumber()) == false) { sambaSIDNumberField.error(getLocalizedMessage("ldap.sambaSID.alreadyInUse", ldapSambaAccountsUtils.getNextFreeSambaSIDNumber())); } } if (values.getSambaPrimaryGroupSIDNumber() != null && values.getSambaSIDNumber() == null) { sambaSIDNumberField .error(getLocalizedMessage(WebConstants.I18N_KEY_FIELD_REQUIRED, getString("ldap.sambaSID"))); } } });
final Collection<PFUserDO> allUsers = getUserGroupCache().getAllUsers(); for (final PFUserDO user : allUsers) { final LdapUserValues ldapUserValues = PFUserDOConverter.readLdapUserValues(user.getLdapValues());