X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fauth%2FCmsUserManagerImpl.java;h=d9b8f42d1c4a35b8c108d9933a402dd2fb510b3a;hb=f552b4781dca895ba2b09e41160748d3b3f63daf;hp=109a0d4066e65561a76d4801f3ed035989a685ff;hpb=b7c2f2cc2f6f74762031567e9e636ff277ebc7c7;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..d9b8f42d1 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 @@ -25,6 +25,7 @@ import javax.transaction.UserTransaction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.api.NodeConstants; import org.argeo.cms.CmsUserManager; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.UserAdminUtils; @@ -32,11 +33,9 @@ import org.argeo.jcr.JcrUtils; import org.argeo.naming.LdapAttrs; import org.argeo.naming.NamingUtils; import org.argeo.naming.SharedSecret; -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();