Pregunta / Síntomas

¿Cómo puedo comprobar si un usuario tiene privilegios para realizar una acción específica?

Respuesta/resolución

Para comprobar si un usuario tiene acceso de escritura a una página:

public boolean hasWriteAccess(Node pageNode, Session userSession) lanza RepositoryException { String path = pageNode.getPath(); prueba { userSession.checkPermission(path, "add_node,set_property"); si(pageNode.hasNode(JcrConstants.JCR_CONTENT)) { String contentNodePath = ruta + "/" + "jcr:content"; userSession.checkPermission(contentNodePath, "add_node,set_property"); }} catch(java.security.AccessControlException e) { return false; } return true; }

Para comprobar si un usuario puede activar páginas:

usuario final u = resourceResolver.adaptTo(User.class); // alternativamente: usuario final u = SecurityUtil.resolveUser(session); return u.hasPermission(Replicator.REPLICATION_PERMISSION);

Referencia

Ver 5.2 API para el usuario

Se aplica a

CQ5.1, CQ5.2