Author: ate
Date: Fri Mar 19 17:02:06 2010
New Revision: 925329
URL: http://svn.apache.org/viewvc?rev=925329&view=rev
Log:
JS2-1068: LDAP When last user is removed from a role a uniqueMember with
uid=foobar is left
See: http://issues.apache.org/jira/browse/JS2-1068
"fixed" by providing a "magic" replacement marker value, "#dn", which will
automatically be replaced with the ldap entry's own dn
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/AttributeBasedRelationDAO.java
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/SpringLDAPEntityDAO.java
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/security-ldap.xml
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/AttributeBasedRelationDAO.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/AttributeBasedRelationDAO.java?rev=925329&r1=925328&r2=925329&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/AttributeBasedRelationDAO.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/AttributeBasedRelationDAO.java
Fri Mar 19 17:02:06 2010
@@ -65,6 +65,18 @@ public class AttributeBasedRelationDAO e
if (relationAttrValue != null)
{
Collection<String> values = relationAttrValue.getValues();
+ if (relationAttrValue.getDefinition().isRequired())
+ {
+ String defaultValue =
relationAttrValue.getDefinition().getRequiredDefaultValue();
+ if (defaultValue != null)
+ {
+ if
(SpringLDAPEntityDAO.DN_REFERENCE_MARKER.equals(defaultValue))
+ {
+ defaultValue = entity.getInternalId();
+ }
+ values.remove(defaultValue);
+ }
+ }
if (attributeContainsInternalId)
{
return toDAO.getEntitiesByInternalId(values);
@@ -85,8 +97,8 @@ public class AttributeBasedRelationDAO e
{
// fetch entities using target Entity DAO with a specific
filter
// on the member attribute
- Filter roleMemberAttrFilter = new
EqualsFilter(relationAttribute, fromEntityUsedIdValue);
- return toDAO.getEntities(roleMemberAttrFilter);
+ Filter memberAttrFilter = new EqualsFilter(relationAttribute,
fromEntityUsedIdValue);
+ return toDAO.getEntities(memberAttrFilter);
}
}
return null;
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/SpringLDAPEntityDAO.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/SpringLDAPEntityDAO.java?rev=925329&r1=925328&r2=925329&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/SpringLDAPEntityDAO.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/mapping/ldap/dao/impl/SpringLDAPEntityDAO.java
Fri Mar 19 17:02:06 2010
@@ -54,6 +54,8 @@ import org.springframework.ldap.filter.O
*/
public class SpringLDAPEntityDAO implements EntityDAO
{
+ public static final String DN_REFERENCE_MARKER = "#dn";
+
protected enum UpdateMode
{
MAPPED, INTERNAL, ALL
@@ -192,6 +194,16 @@ public class SpringLDAPEntityDAO impleme
return principalDN;
}
+ protected String getFullDN(DistinguishedName relativeDN)
+ {
+ String fullDN = relativeDN.toCompactString();
+ if (configuration.getBaseDN() != null &&
configuration.getBaseDN().length() > 0 &&
!fullDN.endsWith(configuration.getBaseDN()))
+ {
+ return fullDN + "," + configuration.getBaseDN();
+ }
+ return fullDN;
+ }
+
protected String createSearchFilter(Filter filter)
{
if (configuration.getSearchFilter() != null)
@@ -373,7 +385,14 @@ public class SpringLDAPEntityDAO impleme
if (requiredValue != null && requiredValue.length() >
0)
{
basicAttr = new BasicAttribute(attrDef.getName());
- basicAttr.add(attrDef.getRequiredDefaultValue());
+ if
(SpringLDAPEntityDAO.DN_REFERENCE_MARKER.equals(requiredValue))
+ {
+ basicAttr.add(getFullDN(dn));
+ }
+ else
+ {
+ basicAttr.add(requiredValue);
+ }
}
}
else
@@ -538,7 +557,12 @@ public class SpringLDAPEntityDAO impleme
{
if (attrDef.getRequiredDefaultValue() != null)
{
-
basicAttr.add(attrDef.getRequiredDefaultValue());
+ String defaultValue =
attrDef.getRequiredDefaultValue();
+ if
(SpringLDAPEntityDAO.DN_REFERENCE_MARKER.equals(defaultValue))
+ {
+ defaultValue = entity.getInternalId();
+ }
+ basicAttr.add(defaultValue);
modItems.add(new
ModificationItem(DirContext.REPLACE_ATTRIBUTE, basicAttr));
}
else
Modified:
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/security-ldap.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/security-ldap.xml?rev=925329&r1=925328&r2=925329&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/security-ldap.xml
(original)
+++
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/security-ldap.xml
Fri Mar 19 17:02:06 2010
@@ -183,7 +183,7 @@
<constructor-arg index="1" value="true" />
<constructor-arg index="2" value="false" />
<property name="required" value="true" />
- <property name="requiredDefaultValue" value="uid=foobar" />
+ <property name="requiredDefaultValue" value="#dn" />
</bean>
</set>
</property>
@@ -221,7 +221,7 @@
<constructor-arg index="1" value="true" />
<constructor-arg index="2" value="false" />
<property name="required" value="true" />
- <property name="requiredDefaultValue" value="uid=foobar" />
+ <property name="requiredDefaultValue" value="#dn" />
</bean>
</set>
</property>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]