X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fsecurity%2FJcrKeyring.java;h=c75d38fc88f54c18fc80414ccba8b29acd076a09;hb=1b09095425a7c067c097eb91bed5b4a4a33f0dc8;hp=bc233d07d5cc8eadeb451018cfb461f6bf510b4e;hpb=4a3d035a548b0cc9b448151bbb8894292e2e4bb3;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/security/JcrKeyring.java b/org.argeo.cms/src/org/argeo/cms/security/JcrKeyring.java index bc233d07d..c75d38fc8 100644 --- a/org.argeo.cms/src/org/argeo/cms/security/JcrKeyring.java +++ b/org.argeo.cms/src/org/argeo/cms/security/JcrKeyring.java @@ -46,6 +46,7 @@ import org.argeo.cms.ArgeoTypes; import org.argeo.cms.CmsException; import org.argeo.jcr.ArgeoJcrException; import org.argeo.jcr.JcrUtils; +import org.argeo.node.NodeConstants; import org.argeo.node.NodeUtils; import org.argeo.node.security.PBEKeySpecCallback; @@ -108,7 +109,7 @@ public class JcrKeyring extends AbstractKeyring implements ArgeoNames { private Session login() { try { - return repository.login(); + return repository.login(NodeConstants.HOME); } catch (RepositoryException e) { throw new CmsException("Cannot login key ring session", e); } @@ -193,9 +194,11 @@ public class JcrKeyring extends AbstractKeyring implements ArgeoNames { @Override protected synchronized void handleKeySpecCallback(PBEKeySpecCallback pbeCallback) { + Session session = null; try { - session().refresh(true); - Node userHome = NodeUtils.getUserHome(session()); + session = session(); + session.refresh(true); + Node userHome = NodeUtils.getUserHome(session); Node keyring; if (userHome.hasNode(ARGEO_KEYRING)) keyring = userHome.getNode(ARGEO_KEYRING); @@ -214,6 +217,8 @@ public class JcrKeyring extends AbstractKeyring implements ArgeoNames { // notYetSavedKeyring.remove(); } catch (RepositoryException e) { throw new ArgeoJcrException("Cannot handle key spec callback", e); + } finally { + JcrUtils.logoutQuietly(session); } }