How jmanuelbr/aem-groups-graph works
Groups Membership Graph is an AEM author-side administrator tool for exploring direct and inherited group membership. An administrator opens the tool, selects a user or group with AEM’s built-in autocomplete, and the browser requests a protected graph endpoint. The servlet authorizes the request and invokes breadth-first membership traversal using the caller’s resolver; returned nodes and edges feed Cytoscape visualization, including depth coloring, built-in-group filtering, path tracing, and details. The README documents the page-level access guard and UI capabilities; the graph shows only wiring evidenced by the supplied source and documentation.
Main entry points: graph.js Interactive graph · GraphDataServlet.java Graph endpoint · page.html Tool page · MembershipGraphServiceImpl.java Membership traversal
Components 17
Author UI
- Tool page
ui.apps/src/main/content/jcr_root/apps/groupsgraph/components/page/page.html - Principal picker
ui.apps/src/main/content/jcr_root/apps/groupsgraph/components/page/page.html - Graph controller
ui.apps/src/main/content/jcr_root/apps/groupsgraph/clientlibs/clientlib-tool/js/graph.js - Interactive graph
ui.apps/src/main/content/jcr_root/apps/groupsgraph/clientlibs/clientlib-tool/js/graph.js - Node details
ui.apps/src/main/content/jcr_root/apps/groupsgraph/clientlibs/clientlib-tool/js/graph.js - Built-in filter
ui.apps/src/main/content/jcr_root/apps/groupsgraph/clientlibs/clientlib-tool/js/graph.js
Access control
- Page access model
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/models/ToolAccessModel.java - Admin check
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/security/PrincipalAccess.java
Graph service
- Graph endpoint
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/servlets/GraphDataServlet.java - Membership traversal
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/graph/impl/MembershipGraphServiceImpl.java - Graph result
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/graph/GraphData.java - Graph nodes
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/graph/GraphNode.java - Membership edges
core/src/main/java/io/github/jmanuelbr/groupsgraph/core/graph/GraphEdge.java
Other components
- Administrator
- AEM autocomplete
- AEM authorizables
- Cytoscape.js
Connections 18
- Administrator → Tool page: opens
- Tool page → Page access model: renders with
- Page access model → Admin check: checks access
- Tool page → Principal picker: renders
- Principal picker → AEM autocomplete: uses
- Administrator → Graph controller: selects principal
- Graph controller → Graph endpoint: requests graph
- Graph endpoint → Admin check: checks access
- Graph endpoint → Membership traversal: builds graph
- Membership traversal → AEM authorizables: reads memberships
- Membership traversal → Graph result: produces
- Graph result → Graph nodes: contains
- Graph result → Membership edges: contains
- Graph endpoint → Graph controller: returns JSON
- Graph controller → Interactive graph: renders result
- Interactive graph → Cytoscape.js: draws layout
- Interactive graph → Built-in filter: applies toggle
- Interactive graph → Node details: opens on click