You could probably hide some of the low-level details by using the sling
resource resolver to lookup the same information. You will need the patch
attached to https://issues.apache.org/jira/browse/SLING-1009 for the
listChildren call to work. Maybe someone with permissions could review the
patch and commit the changes to svn?
For example:
var resResolver = request.getResourceResolver();
var groupsResource = resResolver.resolve("/system/userManager/group");
var groupsIterator = resResolver.listChildren(groupsResource);
while (groupsIterator.hasNext()) {
var group = groupsIterator.next();
//TODO: process the group
var authorizable =
group.adaptTo(Packages.org.apache.jackrabbit.api.security.user.Authorizable);
var uid = authorizable.ID;
//for a group, you can iterate the group members
var members = authorizable.members
while (members.hasNext()) {
var member = members.next();
var memberId = member.ID;
//TODO: do something with the member
}
//get the authorizable properties by adapting the resource to a ValueMap
var valueMap =
group.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
var propsEntryIterator = valueMap.entrySet().iterator();
while (propsEntryIterator.hasNext()) {
var entry = propsEntryIterator.next();
var propName = entry.getKey();
var propValue = entry.getValue();
//TODO: process the property
}
On Tue, Jul 7, 2009 at 5:56 AM, Peter Chiochetti <[email protected]> wrote:
> I am compiling an interface to the user manager. I made some nodes and
> corresponding scripts to gather the data, that gets written out in custom
> json to be consumed by a dojo store. The code below works fine, still I'd
> like to know if it shows the /sling/ way of doing this, or if I missed some
> shortcut. (I removed all error-checking, hiding of "jcr:" properties etc.
> and kept the repetitive setup of basic structures.)
>
> # to get a list of users and some of their properties:
>
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var principalManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getPrincipalManager(jcrSession);
>> var principals =
>> principalManager.getPrincipals(Packages.org.apache.jackrabbit.api.security.principal.PrincipalManager.SEARCH_TYPE_NOT_GROUP);
>> while (principals.hasNext()) {
>> var principal = principals.nextPrincipal();
>> var authorizable = userManager.getAuthorizable(principal.name);
>> var uid = authorizable.ID;
>> var property1 =
>> authorizable.getProperty("Property1")[0].getString();
>> }
>>
>
> # to get a list of groups and some of their properties:
>
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var principalManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getPrincipalManager(jcrSession);
>> var principals =
>> principalManager.getPrincipals(Packages.org.apache.jackrabbit.api.security.principal.PrincipalManager.SEARCH_TYPE_GROUP);
>> while (principals.hasNext()) {
>> var principal = principals.nextPrincipal();
>> var authorizable = userManager.getAuthorizable(principal.name);
>> var gid = authorizable.ID;
>> var property1 =
>> authorizable.getProperty("Property1")[0].getString();
>> }
>>
>
> # to get all the properties of user "admin":
>
>> var principalID = "admin";
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var authorizable = userManager.getAuthorizable(principalID);
>> var names = authorizable.getPropertyNames();
>> while (names.hasNext()) {
>> var name = names.next();
>> var value = authorizable.getProperty(name)[0].getString();
>> }
>>
>
> # to get all the properties of group "administrators":
>
>> var principalID = "administrators";
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var authorizable = userManager.getAuthorizable(principalID);
>> var names = authorizable.getPropertyNames();
>> while (names.hasNext()) {
>> var name = names.next();
>> var value = authorizable.getProperty(name)[0].getString();
>> }
>>
>
> # to get a list of groups for user "admin":
>
>> var principalID = "admin";
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var authorizable = userManager.getAuthorizable(principalID);
>> var names = authorizable.memberOf();
>> while (names.hasNext()) {
>> var group = names.next();
>> var id = group.ID;
>> }
>>
>
> # to get a list of members for group "administrators":
>
>> var principalID = "administrators";
>> var jcrSession =
>> request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
>> var userManager =
>> Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
>> var authorizable = userManager.getAuthorizable(principalID);
>> var names = authorizable.getMembers();
>> while (names.hasNext()) {
>> var user = names.next();
>> var id = user.ID;
>> }
>>
>
> --
> peter
>