Improve tokens management
[lgpl/argeo-commons.git] / org.argeo.enterprise / src / org / argeo / osgi / useradmin / AggregatingUserAdmin.java
index 01254b985a64302b84dd22db5e789040143b6461..b09c8df5eee20cb633d3fbe602352202a4ac7ecf 100644 (file)
@@ -13,7 +13,6 @@ import java.util.Set;
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 
-import org.argeo.naming.LdapAttrs;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.useradmin.Authorization;
 import org.osgi.service.useradmin.Group;
@@ -88,16 +87,16 @@ public class AggregatingUserAdmin implements UserAdmin {
                Authorization rawAuthorization = userAdmin.getAuthorization(user);
                String usernameToUse;
                String displayNameToUse;
-               if (user instanceof Group) {// tokens
-                       String ownerDn = (String) user.getProperties().get(LdapAttrs.owner.name());
-                       if (ownerDn != null) {
+               if (user instanceof Group) {
+                       String ownerDn = TokenUtils.userDn((Group) user);
+                       if (ownerDn != null) {// tokens
                                UserAdmin ownerUserAdmin = findUserAdmin(ownerDn);
                                User ownerUser = (User) ownerUserAdmin.getRole(ownerDn);
                                usernameToUse = ownerDn;
                                displayNameToUse = LdifAuthorization.extractDisplayName(ownerUser);
                        } else {
-                               throw new UserDirectoryException(
-                                               "Cannot get authorization for group " + user.getName() + " without owner");
+                               usernameToUse = rawAuthorization.getName();
+                               displayNameToUse = rawAuthorization.toString();
                        }
                } else {// regular users
                        usernameToUse = rawAuthorization.getName();