]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java
Introduce CMS Servlet.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / auth / CmsUserManagerImpl.java
index e64a6ad931e59acae2a40bc23d93f01b4e2eb7fc..5485fc5ee112ad445995a18c61c6523e2ff7855e 100644 (file)
@@ -19,12 +19,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.jcr.Node;
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 import javax.security.auth.Subject;
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -32,10 +29,10 @@ import org.argeo.api.NodeConstants;
 import org.argeo.cms.CmsUserManager;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.auth.UserAdminUtils;
-import org.argeo.jcr.JcrUtils;
 import org.argeo.naming.LdapAttrs;
 import org.argeo.naming.NamingUtils;
 import org.argeo.naming.SharedSecret;
+import org.argeo.osgi.transaction.WorkTransaction;
 import org.argeo.osgi.useradmin.TokenUtils;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.argeo.osgi.useradmin.UserDirectory;
@@ -63,9 +60,9 @@ public class CmsUserManagerImpl implements CmsUserManager {
 
        private UserAdmin userAdmin;
 //     private Map<String, String> serviceProperties;
-       private UserTransaction userTransaction;
+       private WorkTransaction userTransaction;
 
-       private Map<UserDirectory, Hashtable<String, String>> userDirectories = Collections
+       private Map<UserDirectory, Hashtable<String, Object>> userDirectories = Collections
                        .synchronizedMap(new LinkedHashMap<>());
 
        @Override
@@ -353,7 +350,7 @@ public class CmsUserManagerImpl implements CmsUserManager {
                        return tokenStr;
                } catch (Exception e1) {
                        try {
-                               if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION)
+                               if (!userTransaction.isNoTransactionStatus())
                                        userTransaction.rollback();
                        } catch (Exception e2) {
                                if (log.isTraceEnabled())
@@ -376,7 +373,7 @@ public class CmsUserManagerImpl implements CmsUserManager {
                                log.debug("Token " + token + " expired.");
                } catch (Exception e1) {
                        try {
-                               if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION)
+                               if (!userTransaction.isNoTransactionStatus())
                                        userTransaction.rollback();
                        } catch (Exception e2) {
                                if (log.isTraceEnabled())
@@ -425,7 +422,7 @@ public class CmsUserManagerImpl implements CmsUserManager {
                        userTransaction.commit();
                } catch (Exception e1) {
                        try {
-                               if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION)
+                               if (!userTransaction.isNoTransactionStatus())
                                        userTransaction.rollback();
                        } catch (Exception e2) {
                                if (log.isTraceEnabled())
@@ -435,44 +432,44 @@ public class CmsUserManagerImpl implements CmsUserManager {
                }
        }
 
-       public User createUserFromPerson(Node person) {
-               String email = JcrUtils.get(person, LdapAttrs.mail.property());
-               String dn = buildDefaultDN(email, Role.USER);
-               User user;
-               try {
-                       userTransaction.begin();
-                       user = (User) userAdmin.createRole(dn, Role.USER);
-                       Dictionary<String, Object> userProperties = user.getProperties();
-                       String name = JcrUtils.get(person, LdapAttrs.displayName.property());
-                       userProperties.put(LdapAttrs.cn.name(), name);
-                       userProperties.put(LdapAttrs.displayName.name(), name);
-                       String givenName = JcrUtils.get(person, LdapAttrs.givenName.property());
-                       String surname = JcrUtils.get(person, LdapAttrs.sn.property());
-                       userProperties.put(LdapAttrs.givenName.name(), givenName);
-                       userProperties.put(LdapAttrs.sn.name(), surname);
-                       userProperties.put(LdapAttrs.mail.name(), email.toLowerCase());
-                       userTransaction.commit();
-               } catch (Exception e) {
-                       try {
-                               userTransaction.rollback();
-                       } catch (Exception e1) {
-                               log.error("Could not roll back", e1);
-                       }
-                       if (e instanceof RuntimeException)
-                               throw (RuntimeException) e;
-                       else
-                               throw new RuntimeException("Cannot create user", e);
-               }
-               return user;
-       }
+//     public User createUserFromPerson(Node person) {
+//             String email = JcrUtils.get(person, LdapAttrs.mail.property());
+//             String dn = buildDefaultDN(email, Role.USER);
+//             User user;
+//             try {
+//                     userTransaction.begin();
+//                     user = (User) userAdmin.createRole(dn, Role.USER);
+//                     Dictionary<String, Object> userProperties = user.getProperties();
+//                     String name = JcrUtils.get(person, LdapAttrs.displayName.property());
+//                     userProperties.put(LdapAttrs.cn.name(), name);
+//                     userProperties.put(LdapAttrs.displayName.name(), name);
+//                     String givenName = JcrUtils.get(person, LdapAttrs.givenName.property());
+//                     String surname = JcrUtils.get(person, LdapAttrs.sn.property());
+//                     userProperties.put(LdapAttrs.givenName.name(), givenName);
+//                     userProperties.put(LdapAttrs.sn.name(), surname);
+//                     userProperties.put(LdapAttrs.mail.name(), email.toLowerCase());
+//                     userTransaction.commit();
+//             } catch (Exception e) {
+//                     try {
+//                             userTransaction.rollback();
+//                     } catch (Exception e1) {
+//                             log.error("Could not roll back", e1);
+//                     }
+//                     if (e instanceof RuntimeException)
+//                             throw (RuntimeException) e;
+//                     else
+//                             throw new RuntimeException("Cannot create user", e);
+//             }
+//             return user;
+//     }
 
        public UserAdmin getUserAdmin() {
                return userAdmin;
        }
 
-       public UserTransaction getUserTransaction() {
-               return userTransaction;
-       }
+//     public UserTransaction getUserTransaction() {
+//             return userTransaction;
+//     }
 
        /* DEPENDENCY INJECTION */
        public void setUserAdmin(UserAdmin userAdmin) {
@@ -480,15 +477,15 @@ public class CmsUserManagerImpl implements CmsUserManager {
 //             this.serviceProperties = serviceProperties;
        }
 
-       public void setUserTransaction(UserTransaction userTransaction) {
+       public void setUserTransaction(WorkTransaction userTransaction) {
                this.userTransaction = userTransaction;
        }
-       
-       public void addUserDirectory(UserDirectory userDirectory, Map<String, String> properties) {
+
+       public void addUserDirectory(UserDirectory userDirectory, Map<String, Object> properties) {
                userDirectories.put(userDirectory, new Hashtable<>(properties));
        }
 
-       public void removeUserDirectory(UserDirectory userDirectory, Map<String, String> properties) {
+       public void removeUserDirectory(UserDirectory userDirectory, Map<String, Object> properties) {
                userDirectories.remove(userDirectory);
        }