/** * At default the identifier in dn is cn (cn=xxx,ou=yyy,ou=zzz). But for users the dn is may-be * (uid=xxx,ou=yyy,ou=zzz). * * @param obj * @return */ protected String buildDnIdentifier(final T obj) { return "cn=" + LdapUtils.escapeCommonName(obj.getCommonName()); }
/** * @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()); } }
@Test public void escapeUserGroupNames() { assertNull(LdapUtils.escapeCommonName(null)); assertEquals("", LdapUtils.escapeCommonName("")); assertEquals("\\,", LdapUtils.escapeCommonName(",")); assertEquals("\\,\\=\\+\\<\\>\\#\\;\\\\\\\"", LdapUtils.escapeCommonName(",=+<>#;\\\"")); }
/** * @param ctx * @param ouBase If organizational units are given by the given obj then this parameter will be ignored, otherwise * this is the ou where the new object will be inserted. * @param obj * @param args * @throws NamingException */ public void create(final DirContext ctx, final String ouBase, final T obj, final Object... args) throws NamingException { final String dn = buildDn(ouBase, obj); log.info("Create " + getObjectClass() + ": " + dn + ": " + getLogInfo(obj)); final Attributes attrs = new BasicAttributes(); final List<ModificationItem> modificationItems = getModificationItems(new ArrayList<ModificationItem>(), obj); modificationItems.add(createModificationItem(DirContext.ADD_ATTRIBUTE, "objectClass", getObjectClass())); final String[] additionalObjectClasses = getAdditionalObjectClasses(obj); if (additionalObjectClasses != null) { for (final String objectClass : additionalObjectClasses) { modificationItems.add(createModificationItem(DirContext.ADD_ATTRIBUTE, "objectClass", objectClass)); } } for (final ModificationItem modItem : modificationItems) { final Attribute attr = modItem.getAttribute(); LdapUtils.putAttribute(attrs, attr.getID(), (String) attr.get()); } LdapUtils.putAttribute(attrs, "cn", LdapUtils.escapeCommonName(obj.getCommonName())); onBeforeBind(dn, attrs, args); ctx.bind(dn, null, attrs); }