Improve Security
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / ldap / ArgeoSecurityDaoLdap.java
index 807875db617328c879d311f6586feff66dffd16c..6aa31bbdc6620ef05dd8e354af0df6a0ca7f9718 100644 (file)
@@ -183,6 +183,26 @@ public class ArgeoSecurityDaoLdap implements ArgeoSecurityDao, InitializingBean
                                });
        }
 
+       @SuppressWarnings("unchecked")
+       public List<ArgeoUser> listUsersInRole(String role) {
+               return (List<ArgeoUser>) ldapTemplate.lookup(
+                               buildGroupDn(convertRoleToGroup(role)), new ContextMapper() {
+                                       public Object mapFromContext(Object ctxArg) {
+                                               DirContextAdapter ctx = (DirContextAdapter) ctxArg;
+                                               String[] userDns = ctx
+                                                               .getStringAttributes(groupMemberAttributeName);
+                                               List<ArgeoUser> lst = new ArrayList<ArgeoUser>();
+                                               for (String userDn : userDns) {
+                                                       DistinguishedName dn = new DistinguishedName(userDn);
+                                                       String username = dn
+                                                                       .getValue(usernameAttributeName);
+                                                       lst.add(createSimpleArgeoUser(getDetails(username)));
+                                               }
+                                               return lst;
+                                       }
+                               });
+       }
+
        public synchronized void update(ArgeoUser user) {
                ArgeoUserDetails argeoUserDetails = new ArgeoUserDetails(user);
                userDetailsManager.updateUser(new ArgeoUserDetails(user));