X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FHomeRepository.java;h=c0cf3e02566f4e989653d7de6f0cca7267643666;hb=b1dbb754c88b8609246b865a25bc946213370662;hp=270a542144c613f019366fa0f4bb279ce17267d0;hpb=06acf73a99f0e3908fe8998f1ff08dee109c5562;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java index 270a54214..c0cf3e025 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java @@ -4,7 +4,6 @@ import java.security.PrivilegedAction; import java.util.HashSet; import java.util.Set; -import javax.jcr.LoginException; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -15,6 +14,7 @@ import javax.naming.ldap.LdapName; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; +import org.apache.jackrabbit.core.security.SecurityConstants; import org.argeo.ArgeoException; import org.argeo.cms.CmsException; import org.argeo.cms.auth.AuthConstants; @@ -62,17 +62,42 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants, Ar }); } + // @Override + // public Session login() throws LoginException, RepositoryException { + // Session session = super.login(); + // String username = session.getUserID(); + // if (username == null) + // return session; + // if (session.getUserID().equals(AuthConstants.ROLE_ANONYMOUS)) + // return session; + // + // if (checkedUsers.contains(username)) + // return session; + // Session adminSession = KernelUtils.openAdminSession(getRepository(), + // session.getWorkspace().getName()); + // try { + // syncJcr(adminSession, username); + // checkedUsers.add(username); + // } finally { + // JcrUtils.logoutQuietly(adminSession); + // } + // return session; + // } + @Override - public Session login() throws LoginException, RepositoryException { - Session session = super.login(); + protected void processNewSession(Session session) { String username = session.getUserID(); if (username == null) - return session; + return; if (session.getUserID().equals(AuthConstants.ROLE_ANONYMOUS)) - return session; + return; + if (session.getUserID().equals(AuthConstants.ROLE_KERNEL)) + return; + if (session.getUserID().equals(SecurityConstants.ADMIN_ID)) + return; if (checkedUsers.contains(username)) - return session; + return; Session adminSession = KernelUtils.openAdminSession(getRepository(), session.getWorkspace().getName()); try { syncJcr(adminSession, username); @@ -80,7 +105,6 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants, Ar } finally { JcrUtils.logoutQuietly(adminSession); } - return session; } /* @@ -133,10 +157,13 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants, Ar userProfile = personBase.addNode(ArgeoNames.ARGEO_PROFILE); userProfile.addMixin(ArgeoTypes.ARGEO_USER_PROFILE); userProfile.setProperty(ArgeoNames.ARGEO_USER_ID, username); -// userProfile.setProperty(ArgeoNames.ARGEO_ENABLED, true); -// userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_EXPIRED, true); -// userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_LOCKED, true); -// userProfile.setProperty(ArgeoNames.ARGEO_CREDENTIALS_NON_EXPIRED, true); + // userProfile.setProperty(ArgeoNames.ARGEO_ENABLED, true); + // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_EXPIRED, + // true); + // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_LOCKED, + // true); + // userProfile.setProperty(ArgeoNames.ARGEO_CREDENTIALS_NON_EXPIRED, + // true); session.save(); JcrUtils.clearAccessControList(session, userProfile.getPath(), username);