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
>

Reply via email to