*/
package org.argeo.eclipse.ui.workbench.jcr.internal.parts;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.jcr.Node;
-import javax.jcr.security.AccessControlManager;
-import javax.jcr.security.Privilege;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.workbench.WorkbenchUiPlugin;
createRightsPart(form.getBody());
}
- /** Creates the rights part */
+ /** Creates the authorization part */
protected void createRightsPart(Composite parent) {
Table table = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
table.setLinesVisible(true);
table.setHeaderVisible(true);
viewer = new TableViewer(table);
- // check column
- TableViewerColumn column = createTableViewerColumn(viewer, "checked",
- 20);
+ // Group / user name
+ TableViewerColumn column = createTableViewerColumn(viewer,
+ "User/Group Name", 280);
column.setLabelProvider(new ColumnLabelProvider() {
- private static final long serialVersionUID = 3314605415711811035L;
+ private static final long serialVersionUID = -2290781173498395973L;
public String getText(Object element) {
- return null;
+ Node node = (Node) element;
+ try {
+ if (node.hasProperty("rep:principalName"))
+ return node.getProperty("rep:principalName")
+ .getString();
+ } catch (RepositoryException e) {
+ throw new ArgeoException("Unable to retrieve "
+ + "principal name on " + node, e);
+ }
+ return "";
}
public Image getImage(Object element) {
return null;
}
});
- // column.setEditingSupport(new RoleEditingSupport(rolesViewer, part));
- // role column
- column = createTableViewerColumn(viewer, "Role", 200);
+ // Privileges
+ column = createTableViewerColumn(viewer, "Assigned privileges", 300);
column.setLabelProvider(new ColumnLabelProvider() {
private static final long serialVersionUID = -2290781173498395973L;
+ private String propertyName = "rep:privileges";
public String getText(Object element) {
- Privilege p = (Privilege) element;
- return p.getName();
+ Node node = (Node) element;
+ try {
+ if (node.hasProperty(propertyName)) {
+ String separator = ", ";
+ Value[] langs = node.getProperty(propertyName)
+ .getValues();
+ StringBuilder builder = new StringBuilder();
+ for (Value val : langs) {
+ String currStr = val.getString();
+ builder.append(currStr).append(separator);
+ }
+ if (builder.lastIndexOf(separator) >= 0)
+ return builder.substring(0, builder.length()
+ - separator.length());
+ else
+ return builder.toString();
+
+ }
+ } catch (RepositoryException e) {
+ throw new ArgeoException("Unable to retrieve "
+ + "privileges on " + node, e);
+ }
+ return "";
}
public Image getImage(Object element) {
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
+ // TODO clean retrieval of authorization
public Object[] getElements(Object inputElement) {
try {
- AccessControlManager accessControlManager = currentNode
- .getSession().getAccessControlManager();
- Privilege[] privileges = accessControlManager
- .getPrivileges(currentNode.getPath());
- return privileges;
+ List<Node> privs = new ArrayList<Node>();
+ if (currentNode.hasNode("rep:policy")) {
+ NodeIterator nit = currentNode.getNode("rep:policy")
+ .getNodes();
+ while (nit.hasNext()) {
+ Node currNode = nit.nextNode();
+ if (currNode.getName().equals("allow"))
+ privs.add(currNode);
+ }
+ return privs.toArray();
+ }
+ return null;
} catch (Exception e) {
- throw new ArgeoException("Cannot retrieve rights", e);
+ throw new ArgeoException("Cannot retrieve authorization on "
+ + currentNode, e);
}
}