/** * @see org.projectforge.business.ldap.LdapDao#buildDnIdentifier(org.projectforge.business.ldap.LdapObject) */ @Override protected String buildDnIdentifier(final LdapUser obj) { if (useUidInDn == true) { return "uid=" + obj.getUid(); } else { return "cn=" + LdapUtils.escapeCommonName(obj.getCommonName()); } }
private LdapUser getLdapUser(final List<LdapUser> ldapUsers, final PFUserDO user) { for (final LdapUser ldapUser : ldapUsers) { if (StringUtils.equals(ldapUser.getUid(), user.getUsername()) == true || StringUtils.equals(ldapUser.getEmployeeNumber(), PFUserDOConverter.buildEmployeeNumber(user)) == true) { return ldapUser; } } return null; }
public static boolean isPosixAccountValuesEmpty(final LdapUser ldapUser) { return ldapUser.getUidNumber() == null && StringUtils.isBlank(ldapUser.getHomeDirectory()) == true && StringUtils.isBlank(ldapUser.getLoginShell()) == true && ldapUser.getGidNumber() == null; }
assertEquals("k.reinhard", ldapUser.getUid()); assertEquals("k.reinhard", ldapUser.getId()); assertEquals(PFUserDOConverter.ID_PREFIX + "42", ldapUser.getEmployeeNumber()); assertEquals("Kai Reinhard", ldapUser.getCommonName()); assertEquals("Developer", ldapUser.getDescription()); assertEquals("Kai", ldapUser.getGivenName()); assertEquals("Reinhard", ldapUser.getSurname()); assertEquals("Micromata GmbH", ldapUser.getOrganization()); assertEquals(1, ldapUser.getMail().length); assertEquals("k.reinhard@micromata.de", ldapUser.getMail()[0]); assertEquals(now, ldapUser.getSambaPwdLastSet()); assertNull(ldapUser.getId()); assertNull(ldapUser.getUid()); assertNull(ldapUser.getEmployeeNumber());
public PFUserDO convert(final LdapUser ldapUser) user.setLastname(ldapUser.getSurname()); user.setFirstname(ldapUser.getGivenName()); user.setUsername(ldapUser.getUid()); user.setId(getId(ldapUser)); user.setOrganization(ldapUser.getOrganization()); user.setDescription(ldapUser.getDescription()); user.setLastWlanPasswordChange(ldapUser.getSambaPwdLastSet()); final String[] mails = ldapUser.getMail(); if (mails != null) { for (final String mail : mails) { if (ldapUser.isDeleted() == true) { user.setDeleted(true); if (ldapUser.isDeactivated() == true || ldapUserDao.isDeactivated(ldapUser) == true) { user.setDeactivated(true); if (ldapUser.isRestrictedUser() == true || ldapUserDao.isRestrictedUser(ldapUser) == true) { user.setRestrictedUser(true);
final LdapUser user = new LdapUser(); ldapPersonDao.mapToObject(dn, user, attributes); ldapConfig = ldapService.getLdapConfig(); if (posixAccountsConfigured == true || sambaAccountsConfigured == true) { final String no = LdapUtils.getAttributeStringValue(attributes, "uidNumber"); user.setUidNumber(NumberHelper.parseInteger(no)); user.setGidNumber(NumberHelper.parseInteger(no)); user.setHomeDirectory(LdapUtils.getAttributeStringValue(attributes, "homeDirectory")); user.setLoginShell(LdapUtils.getAttributeStringValue(attributes, "loginShell")); user.setSambaSIDNumber(sambaSIDNumber); final String sambaPrimaryGroupSID = LdapUtils.getAttributeStringValue(attributes, "sambaPrimaryGroupSID"); final Integer sambaPrimaryGroupSIDNumber = ldapConfig.getSambaAccountsConfig() .getSambaSIDNumber(sambaPrimaryGroupSID); user.setSambaPrimaryGroupSIDNumber(sambaPrimaryGroupSIDNumber); user.setSambaNTPassword(LdapUtils.getAttributeStringValue(attributes, "sambaNTPassword")); final String sambaPwdLastSet = LdapUtils.getAttributeStringValue(attributes, "sambaPwdLastSet"); if (sambaPwdLastSet != null) { final long value = NumberHelper.parseLong(sambaPwdLastSet) * 1000; // ms since 1970 user.setSambaPwdLastSet(new Date(value)); user.setDeactivated(true); user.setRestrictedUser(true); user.setPasswordGiven(true);
createAndAddModificationItems(list, "cn", user.getCommonName()); final boolean modifyPosixAccount = isPosixAccountsConfigured() == true && PFUserDOConverter.isPosixAccountValuesEmpty(user) == false; && PFUserDOConverter.isSambaAccountValuesEmpty(user) == false; if (modifyPosixAccount == true || modifySambaAccount == true) { if (user.getObjectClasses() != null) { final List<String> missedObjectClasses = LdapUtils.getMissedObjectClasses(getAdditionalObjectClasses(user), getObjectClass(), user.getObjectClasses()); if (CollectionUtils.isNotEmpty(missedObjectClasses) == true) { for (final String missedObjectClass : missedObjectClasses) { createAndAddModificationItems(list, "uidNumber", String.valueOf(user.getUidNumber())); createAndAddModificationItems(list, "gidNumber", String.valueOf(user.getGidNumber())); createAndAddModificationItems(list, "homeDirectory", user.getHomeDirectory()); createAndAddModificationItems(list, "loginShell", user.getLoginShell()); ldapConfig.getSambaAccountsConfig().getSambaSID(user.getSambaSIDNumber())); createAndAddModificationItems(list, "sambaPrimaryGroupSID", ldapConfig.getSambaAccountsConfig().getSambaPrimaryGroupSID(user.getSambaPrimaryGroupSIDNumber())); createAndAddModificationItems(list, "sambaAcctFlags", "U "); createAndAddModificationItems(list, "sambaPasswordHistory", "0000000000000000000000000000000000000000000000000000000000000000"); createAndAddModificationItems(list, "sambaPwdLastSet", String.valueOf(user.getSambaPwdLastSetAsUnixEpochSeconds()));
public LdapUser convert(final PFUserDO user) { final LdapUser ldapUser = new LdapUser(); ldapUser.setSurname(user.getLastname()); ldapUser.setGivenName(user.getFirstname()); ldapUser.setUid(user.getUsername()); if (user.getId() != null) { ldapUser.setEmployeeNumber(buildEmployeeNumber(user)); } ldapUser.setOrganization(user.getOrganization()); ldapUser.setDescription(user.getDescription()); ldapUser.setMail(user.getEmail()); ldapUser.setDeleted(user.isDeleted()); ldapUser.setDeactivated(user.isDeactivated()); if (user.isDeactivated() == true) { ldapUser.setMail(LdapUserDao.DEACTIVATED_MAIL); } ldapUser.setRestrictedUser(user.isRestrictedUser()); setLdapValues(ldapUser, user.getLdapValues()); ldapUser.setSambaPwdLastSet(user.getLastWlanPasswordChange() != null ? user.getLastWlanPasswordChange() : user.getCreated()); return ldapUser; }
if (posixAccountsConfig != null) { values = new LdapUserValues(); if (ldapUser.getUidNumber() != null) { values.setUidNumber(ldapUser.getUidNumber()); if (ldapUser.getGidNumber() != null) { values.setGidNumber(ldapUser.getGidNumber()); values.setHomeDirectory(ldapUser.getHomeDirectory()); values.setLoginShell(ldapUser.getLoginShell()); values = new LdapUserValues(); if (ldapUser.getSambaSIDNumber() != null) { values.setSambaSIDNumber(ldapUser.getSambaSIDNumber()); if (ldapUser.getSambaPrimaryGroupSIDNumber() != null) { values.setSambaPrimaryGroupSIDNumber(ldapUser.getSambaPrimaryGroupSIDNumber());
public static void assertUser(final LdapUser user, final String username, final String firstname, final String lastname, final String email, final String organization, final String description) { assertEquals(username, user.getUid()); assertEquals(firstname, user.getGivenName()); assertEquals(lastname, user.getSurname()); final String mail = user.getMail() != null && user.getMail().length > 0 ? user.getMail()[0] : null; assertEquals(email, mail); assertEquals(organization, user.getOrganization()); assertEquals(description, user.getDescription()); }
@Test public void setNullMailArray() { final LdapUser ldapUser = new LdapUser(); PFUserDOConverter.setMailNullArray(ldapUser); assertNull(ldapUser.getMail()); ldapUser.setMail(new String[1]); PFUserDOConverter.setMailNullArray(ldapUser); assertNull(ldapUser.getMail()); ldapUser.setMail(new String[2]); ldapUser.getMail()[1] = "Hurzel"; assertEquals(ldapUser.getMail()[1], "Hurzel"); }
public void loginAndCreateLdapUser() { final String userBase = "ou=pf-mock-test-users"; final LdapUserDao ldapUserDao = mock(LdapUserDao.class); loginHandler.ldapConfig = new LdapConfig().setUserBase(userBase); loginHandler.ldapUserDao = ldapUserDao; loginHandler.ldapOrganizationalUnitDao = mock(LdapOrganizationalUnitDao.class); loginHandler.initialize(); Login.getInstance().setLoginHandler(loginHandler); logon(TEST_ADMIN_USER); final PFUserDO user = new PFUserDO().setUsername("kai").setFirstname("Kai").setLastname("Reinhard"); userService.createEncryptedPassword(user, "successful"); userService.save(user); Assert.assertEquals(LoginResultStatus.SUCCESS, loginHandler.checkLogin("kai", "successful").getLoginResultStatus()); final ArgumentCaptor<LdapUser> argumentCaptor = ArgumentCaptor.forClass(LdapUser.class); verify(ldapUserDao).createOrUpdate(Mockito.anyString(), argumentCaptor.capture()); final LdapUser createdLdapUser = argumentCaptor.getValue(); Assert.assertEquals("kai", createdLdapUser.getUid()); Assert.assertEquals("Kai", createdLdapUser.getGivenName()); Assert.assertEquals("Reinhard", createdLdapUser.getSurname()); // Assert.assertEquals("successful", createdLdapUser.get()); logoff(); }
public static LdapUser createLdapUser(final String username, final String firstname, final String lastname, final String email, final String organization, final String description) { return (LdapUser) new LdapUser().setUid(username).setGivenName(firstname).setSurname(lastname).setMail(email) .setOrganization(organization).setDescription(description); }
public LdapUser authenticate(final String username, final String userPassword, final String... organizationalUnits) { String dn; LdapUser user = null; final String searchBase = getSearchBase(organizationalUnits); if (StringUtils.isNotBlank(ldapConfig.getManagerUser()) == true && StringUtils.isNotBlank(ldapConfig.getManagerPassword()) == true) { user = findByUsername(username, searchBase); if (user == null || StringUtils.equals(username, user.getId()) == false) { log.info("User with id '" + username + "' not found."); return null; } dn = user.getDn() + "," + ldapConnector.getBase(); } else { dn = "uid=" + username + "," + searchBase + "," + ldapConnector.getBase(); } try { ldapConnector.createContext(dn, userPassword); log.info("User '" + username + "' (" + dn + ") successfully authenticated."); return user; } catch (final Exception ex) { log.error("User '" + username + "' (" + dn + ") with invalid credentials."); return null; } }
/** * @see org.projectforge.business.ldap.LdapDao#getId(org.projectforge.business.ldap.LdapUser) */ @Override public String getId(final LdapUser obj) { return obj.getEmployeeNumber(); }
@Test public void copyLdapUser() { final LdapUser src = LdapTestUtils.createLdapUser("kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); LdapUser dest = LdapTestUtils.createLdapUser("kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); assertFalse(pfUserDOConverter.copyUserFields(src, dest)); LdapTestUtils.assertUser(src, "kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); LdapTestUtils.assertUser(dest, "kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); dest = new LdapUser(); assertTrue(pfUserDOConverter.copyUserFields(src, dest)); LdapTestUtils.assertUser(src, "kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); LdapTestUtils.assertUser(dest, null, "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"))); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer"))); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "Kai", "", "k.reinhard@acme.com", "Micromata", "Developer"))); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "Kai", "Reinhard", "", "Micromata", "Developer"))); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "Kai", "Reinhard", "k.reinhard@acme.com", "", "Developer"))); assertTrue(pfUserDOConverter.copyUserFields(src, LdapTestUtils.createLdapUser("kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", ""))); }
public static Integer getId(final LdapUser user) { final String employeeNumber = user.getEmployeeNumber(); if (employeeNumber != null && employeeNumber.startsWith(ID_PREFIX) == true && employeeNumber.length() > ID_PREFIX.length()) { final String id = employeeNumber.substring(ID_PREFIX.length()); return NumberHelper.parseInteger(id); } return null; }
public static void assertPosixAccountValues(final LdapUser ldapUser, final Integer uid, final Integer gid, final String homeDirectory, final String loginShell) { assertEquals(uid, ldapUser.getUidNumber()); assertEquals(gid, ldapUser.getGidNumber()); assertEquals(homeDirectory, ldapUser.getHomeDirectory()); assertEquals(loginShell, ldapUser.getLoginShell()); }