X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifGroup.java;h=bd129119b2592366a49fdba8582fa892d9795e0c;hb=0b8aa4c76cb7a1d19abf93a4c1ae0c973abdab5b;hp=3e9d44750b2ef333326d36cf2a971483c74b61e4;hpb=25071ab6bcb2df1fa4057c2c04137f2d606772e7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifGroup.java b/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifGroup.java index 3e9d44750..bd129119b 100644 --- a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifGroup.java +++ b/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifGroup.java @@ -10,10 +10,11 @@ import javax.naming.ldap.LdapName; import org.osgi.service.useradmin.Role; -public class LdifGroup extends LdifUser implements DirectoryGroup { +/** Directory group implementation */ +class LdifGroup extends LdifUser implements DirectoryGroup { private final String memberAttributeId; - public LdifGroup(AbstractUserDirectory userAdmin, LdapName dn, + LdifGroup(AbstractUserDirectory userAdmin, LdapName dn, Attributes attributes) { super(userAdmin, dn, attributes); memberAttributeId = userAdmin.getMemberAttributeId(); @@ -21,10 +22,16 @@ public class LdifGroup extends LdifUser implements DirectoryGroup { @Override public boolean addMember(Role role) { + getUserAdmin().checkEdit(); + if (!isEditing()) + startEditing(); + Attribute member = getAttributes().get(memberAttributeId); if (member != null) { if (member.contains(role.getName())) return false; + else + member.add(role.getName()); } else getAttributes().put(memberAttributeId, role.getName()); return true; @@ -37,6 +44,10 @@ public class LdifGroup extends LdifUser implements DirectoryGroup { @Override public boolean removeMember(Role role) { + getUserAdmin().checkEdit(); + if (!isEditing()) + startEditing(); + Attribute member = getAttributes().get(memberAttributeId); if (member != null) { if (!member.contains(role.getName()))