import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.server.SessionProvider;
import org.argeo.ArgeoException;
-import org.argeo.jcr.ArgeoJcrUtils;
import org.argeo.jcr.ArgeoNames;
import org.argeo.jcr.JcrUtils;
+import org.argeo.jcr.UserJcrUtils;
/**
* Implements an open session in view patter: a new JCR session is created for
private Boolean openSessionInView = true;
- private String securityWorkspace = "security";
+ private String defaultWorkspace = "default";
public Session getSession(HttpServletRequest request, Repository rep,
String workspace) throws LoginException, ServletException,
if (openSessionInView) {
JackrabbitSession session = (JackrabbitSession) rep
.login(workspace);
- if (session.getWorkspace().getName().equals(securityWorkspace))
+ if (session.getWorkspace().getName().equals(defaultWorkspace))
writeRemoteRoles(session);
return session;
} else {
JackrabbitSession session = (JackrabbitSession) rep.login(
null, workspace);
if (session.getWorkspace().getName()
- .equals(securityWorkspace))
+ .equals(defaultWorkspace))
writeRemoteRoles(session);
if (log.isTraceEnabled())
log.trace("User " + session.getUserID()
protected void writeRemoteRoles(JackrabbitSession session)
throws RepositoryException {
+ // FIXME better deal w/ non node repo
+
// retrieve roles
String userId = session.getUserID();
UserManager userManager = session.getUserManager();
userGroupIds.add(it.next().getID());
// write roles if needed
- Node userProfile = ArgeoJcrUtils.getUserHome(session).getNode(
- ArgeoNames.ARGEO_PROFILE);
+ Node userHome = UserJcrUtils.getUserHome(session);
boolean writeRoles = false;
- if (userProfile.hasProperty(ArgeoNames.ARGEO_REMOTE_ROLES)) {
- Value[] roles = userProfile.getProperty(
- ArgeoNames.ARGEO_REMOTE_ROLES).getValues();
+ if (userHome.hasProperty(ArgeoNames.ARGEO_REMOTE_ROLES)) {
+ Value[] roles = userHome.getProperty(ArgeoNames.ARGEO_REMOTE_ROLES)
+ .getValues();
if (roles.length != userGroupIds.size())
writeRoles = true;
else
if (writeRoles) {
session.getWorkspace().getVersionManager()
- .checkout(userProfile.getPath());
+ .checkout(userHome.getPath());
String[] roleIds = userGroupIds.toArray(new String[userGroupIds
.size()]);
- userProfile.setProperty(ArgeoNames.ARGEO_REMOTE_ROLES, roleIds);
- JcrUtils.updateLastModified(userProfile);
+ userHome.setProperty(ArgeoNames.ARGEO_REMOTE_ROLES, roleIds);
+ JcrUtils.updateLastModified(userHome);
session.save();
session.getWorkspace().getVersionManager()
- .checkin(userProfile.getPath());
+ .checkin(userHome.getPath());
}
}
}
public void setSecurityWorkspace(String securityWorkspace) {
- this.securityWorkspace = securityWorkspace;
+ this.defaultWorkspace = securityWorkspace;
}
}