X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fldap%2FUserDaoLdap.java;h=110d1e650f8d34702885ca0151d3e33f410c62b5;hp=18b47cf6a14fcaef418b66f9f756f4a98ffe1024;hb=727a852dcd2a6e80b11ae71ca37f50d202baae5c;hpb=6432a8e5a33929780a49a7265c1e9beb856ea050 diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/UserDaoLdap.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/UserDaoLdap.java index 18b47cf6a..110d1e650 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/UserDaoLdap.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/UserDaoLdap.java @@ -2,14 +2,8 @@ package org.argeo.security.ldap; import java.util.ArrayList; import java.util.List; -import java.util.Set; -import javax.naming.NamingException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.argeo.security.ArgeoUser; -import org.argeo.security.BasicArgeoUser; import org.argeo.security.core.ArgeoUserDetails; import org.argeo.security.dao.UserDao; import org.springframework.ldap.core.ContextMapper; @@ -17,16 +11,17 @@ import org.springframework.ldap.core.ContextSource; import org.springframework.ldap.core.DirContextAdapter; import org.springframework.ldap.core.DistinguishedName; import org.springframework.ldap.core.LdapTemplate; -import org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator; +import org.springframework.security.GrantedAuthority; +import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.userdetails.UserDetails; import org.springframework.security.userdetails.UserDetailsManager; public class UserDaoLdap implements UserDao { - private final static Log log = LogFactory.getLog(UserDaoLdap.class); + // private final static Log log = LogFactory.getLog(UserDaoLdap.class); private UserDetailsManager userDetailsManager; - private DefaultLdapAuthoritiesPopulator authoritiesPopulator; private String userBase = "ou=users"; + private String usernameAttribute = "uid"; private final LdapTemplate ldapTemplate; @@ -35,7 +30,7 @@ public class UserDaoLdap implements UserDao { } public void create(ArgeoUser user) { - userDetailsManager.createUser((UserDetails) user); + userDetailsManager.createUser(new ArgeoUserDetails(user)); } public ArgeoUser getUser(String uname) { @@ -45,7 +40,13 @@ public class UserDaoLdap implements UserDao { @SuppressWarnings("unchecked") public List listUsers() { List usernames = (List) ldapTemplate.listBindings( - new DistinguishedName(userBase), new UserContextMapper()); + new DistinguishedName(userBase), new ContextMapper() { + public Object mapFromContext(Object ctxArg) { + DirContextAdapter ctx = (DirContextAdapter) ctxArg; + return ctx.getStringAttribute(usernameAttribute); + } + }); + List lst = new ArrayList(); for (String username : usernames) { UserDetails userDetails = userDetailsManager @@ -71,41 +72,29 @@ public class UserDaoLdap implements UserDao { return userDetailsManager.userExists(username); } - public void setUserDetailsManager(UserDetailsManager userDetailsManager) { - this.userDetailsManager = userDetailsManager; + public void addRoles(String username, List roles) { + GrantedAuthority[] auths = new GrantedAuthority[roles.size()]; + for (int i = 0; i < roles.size(); i++) + auths[i] = new GrantedAuthorityImpl(roles.get(i)); + ArgeoUserDetails user = (ArgeoUserDetails) userDetailsManager + .loadUserByUsername(username); + throw new UnsupportedOperationException(); + //userDetailsManager. + } + + public void removeRoles(String username, List roles) { + throw new UnsupportedOperationException(); } - public void setAuthoritiesPopulator( - DefaultLdapAuthoritiesPopulator authoritiesPopulator) { - this.authoritiesPopulator = authoritiesPopulator; + public void setUserDetailsManager(UserDetailsManager userDetailsManager) { + this.userDetailsManager = userDetailsManager; } public void setUserBase(String userBase) { this.userBase = userBase; } - class UserContextMapper implements ContextMapper { - public Object mapFromContext(Object ctxArg) { - DirContextAdapter ctx = (DirContextAdapter) ctxArg; - // BasicArgeoUser user = new BasicArgeoUser(); - return ctx.getStringAttribute("uid"); - - // log.debug("dn# " + ctx.getDn()); - // log.debug("NameInNamespace# " + ctx.getNameInNamespace()); - // log.debug("toString# " + ctx.toString()); - - // Set roles = authoritiesPopulator.getGroupMembershipRoles( - // ctx.composeName(user.getUsername(), userBase), user - // .getUsername()); - // user.setRoles(new ArrayList(roles)); - // GrantedAuthority[] auths = authoritiesPopulator - // .getGrantedAuthorities(ldapTemplate., - // user.getUsername()); - // for (GrantedAuthority auth : auths) { - // user.getRoles().add(auth.getAuthority()); - // } - // return user; - } + public void setUsernameAttribute(String usernameAttribute) { + this.usernameAttribute = usernameAttribute; } - }