X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fauth%2FCmsUserManagerImpl.java;h=869dbb23c9a2e76989091de5432563a56687ac8e;hb=08490f85954fc85940d1182c12a825b33491c3ba;hp=109a0d4066e65561a76d4801f3ed035989a685ff;hpb=24fae6254c74806416ee21cb6a73388d5e958b29;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java index 109a0d406..869dbb23c 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java @@ -36,7 +36,6 @@ import org.argeo.node.NodeConstants; import org.argeo.osgi.useradmin.TokenUtils; import org.argeo.osgi.useradmin.UserAdminConf; import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceReference; import org.osgi.service.useradmin.Authorization; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; @@ -59,8 +58,6 @@ public class CmsUserManagerImpl implements CmsUserManager { private final static Log log = LogFactory.getLog(CmsUserManagerImpl.class); private UserAdmin userAdmin; - @Deprecated - private ServiceReference userAdminServiceReference; private Map serviceProperties; private UserTransaction userTransaction; @@ -206,8 +203,7 @@ public class CmsUserManagerImpl implements CmsUserManager { public Map getKnownBaseDns(boolean onlyWritable) { Map dns = new HashMap(); - String[] propertyKeys = userAdminServiceReference != null ? userAdminServiceReference.getPropertyKeys() - : serviceProperties.keySet().toArray(new String[serviceProperties.size()]); + String[] propertyKeys = serviceProperties.keySet().toArray(new String[serviceProperties.size()]); for (String uri : propertyKeys) { if (!uri.startsWith("/")) continue; @@ -374,25 +370,31 @@ public class CmsUserManagerImpl implements CmsUserManager { @Override public void addAuthToken(String userDn, String token, Integer hours, String... roles) { + addAuthToken(userDn, token, ZonedDateTime.now().plusHours(hours), roles); + } + + @Override + public void addAuthToken(String userDn, String token, ZonedDateTime expiryDate, String... roles) { try { userTransaction.begin(); User user = (User) userAdmin.getRole(userDn); String tokenDn = cn + "=" + token + "," + NodeConstants.TOKENS_BASEDN; Group tokenGroup = (Group) userAdmin.createRole(tokenDn, Role.GROUP); - for (String role : roles) { - Role r = userAdmin.getRole(role); - if (r != null) - tokenGroup.addMember(r); - else { - if (!role.equals(NodeConstants.ROLE_USER)) { - throw new IllegalStateException( - "Cannot add role " + role + " to token " + token + " for " + userDn); + if (roles != null) + for (String role : roles) { + Role r = userAdmin.getRole(role); + if (r != null) + tokenGroup.addMember(r); + else { + if (!role.equals(NodeConstants.ROLE_USER)) { + throw new IllegalStateException( + "Cannot add role " + role + " to token " + token + " for " + userDn); + } } } - } tokenGroup.getProperties().put(owner.name(), user.getName()); - if (hours != null) { - String ldapDate = NamingUtils.instantToLdapDate(ZonedDateTime.now().plusHours(hours)); + if (expiryDate != null) { + String ldapDate = NamingUtils.instantToLdapDate(expiryDate); tokenGroup.getProperties().put(description.name(), ldapDate); } userTransaction.commit();