From: Mathieu Baudier Date: Sat, 19 Sep 2009 18:07:12 +0000 (+0000) Subject: Fix issue with LDAP context cast X-Git-Tag: argeo-commons-2.1.30~1775 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=12f0ab4fa622e3507570f5dcbe586c05131a0050 Fix issue with LDAP context cast git-svn-id: https://svn.argeo.org/commons/trunk@2979 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/security/doc/services-api.txt b/security/doc/services-api.txt index a914007a9..bdb8d423b 100644 --- a/security/doc/services-api.txt +++ b/security/doc/services-api.txt @@ -20,8 +20,11 @@ getUserDetails.security > param : userName > return : userDetails : full details (roles, natures, etc). -createUser.security (ADMIN only) -> params : username , password +createUser.security (ADMIN only, POST) +> params : userDetails + +updateUser.security (POST) +> params : userDetails updateUserPassword.security (ADMIN only) > param : username , password diff --git a/security/modules/org.argeo.security.webapp/WEB-INF/security-servlet.xml b/security/modules/org.argeo.security.webapp/WEB-INF/security-servlet.xml index 3201f73e6..bab0a82e4 100644 --- a/security/modules/org.argeo.security.webapp/WEB-INF/security-servlet.xml +++ b/security/modules/org.argeo.security.webapp/WEB-INF/security-servlet.xml @@ -16,7 +16,7 @@ - + diff --git a/security/runtime/org.argeo.security.core/pom.xml b/security/runtime/org.argeo.security.core/pom.xml index 374ec77bc..3f9f04fab 100644 --- a/security/runtime/org.argeo.security.core/pom.xml +++ b/security/runtime/org.argeo.security.core/pom.xml @@ -33,7 +33,8 @@ org.argeo.security.* *, - org.argeo.server.json;resolution:=optional + org.argeo.server.json;resolution:=optional, + org.springframework.ldap.core.support;resolution:=optional diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/BasicArgeoUser.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/BasicArgeoUser.java deleted file mode 100644 index e7d81d0ec..000000000 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/BasicArgeoUser.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.argeo.security; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -public class BasicArgeoUser implements ArgeoUser, Serializable { - private static final long serialVersionUID = 1L; - - private String username; - private String password; - private List userNatures = new ArrayList(); - private List roles = new ArrayList(); - - public BasicArgeoUser() { - - } - - public BasicArgeoUser(ArgeoUser argeoUser) { - username = argeoUser.getUsername(); - password = argeoUser.getPassword(); - userNatures = new ArrayList(argeoUser.getUserNatures()); - roles = new ArrayList(argeoUser.getRoles()); - } - - public List getUserNatures() { - return userNatures; - } - - public List getRoles() { - return roles; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public void setUserNatures(List userNatures) { - this.userNatures = userNatures; - } - - public void setRoles(List roles) { - this.roles = roles; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } -} diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/SimpleArgeoUser.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/SimpleArgeoUser.java new file mode 100644 index 000000000..a84278179 --- /dev/null +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/SimpleArgeoUser.java @@ -0,0 +1,57 @@ +package org.argeo.security; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class SimpleArgeoUser implements ArgeoUser, Serializable { + private static final long serialVersionUID = 1L; + + private String username; + private String password; + private List userNatures = new ArrayList(); + private List roles = new ArrayList(); + + public SimpleArgeoUser() { + + } + + public SimpleArgeoUser(ArgeoUser argeoUser) { + username = argeoUser.getUsername(); + password = argeoUser.getPassword(); + userNatures = new ArrayList(argeoUser.getUserNatures()); + roles = new ArrayList(argeoUser.getRoles()); + } + + public List getUserNatures() { + return userNatures; + } + + public List getRoles() { + return roles; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setUserNatures(List userNatures) { + this.userNatures = userNatures; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java index a018826f8..7ec9ce74e 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java @@ -5,7 +5,7 @@ import java.util.Collections; import java.util.List; import org.argeo.security.ArgeoUser; -import org.argeo.security.BasicArgeoUser; +import org.argeo.security.SimpleArgeoUser; import org.argeo.security.UserNature; import org.springframework.security.Authentication; import org.springframework.security.GrantedAuthority; @@ -60,11 +60,11 @@ public class ArgeoUserDetails extends User implements ArgeoUser { return arr; } - public static BasicArgeoUser createBasicArgeoUser(UserDetails userDetails) { + public static SimpleArgeoUser createBasicArgeoUser(UserDetails userDetails) { if (userDetails instanceof ArgeoUser) { - return new BasicArgeoUser((ArgeoUser) userDetails); + return new SimpleArgeoUser((ArgeoUser) userDetails); } else { - BasicArgeoUser argeoUser = new BasicArgeoUser(); + SimpleArgeoUser argeoUser = new SimpleArgeoUser(); argeoUser.setUsername(userDetails.getUsername()); addAuthoritiesToRoles(userDetails.getAuthorities(), argeoUser .getRoles()); @@ -74,9 +74,9 @@ public class ArgeoUserDetails extends User implements ArgeoUser { public static ArgeoUser asArgeoUser(Authentication authentication) { if (authentication.getPrincipal() instanceof ArgeoUser) { - return (ArgeoUser) authentication.getPrincipal(); + return new SimpleArgeoUser((ArgeoUser) authentication.getPrincipal()); } else { - BasicArgeoUser argeoUser = new BasicArgeoUser(); + SimpleArgeoUser argeoUser = new SimpleArgeoUser(); argeoUser.setUsername(authentication.getName()); addAuthoritiesToRoles(authentication.getAuthorities(), argeoUser .getRoles()); diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java index b69e02a40..595970410 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java @@ -4,7 +4,7 @@ import org.argeo.security.ArgeoSecurity; import org.argeo.security.ArgeoSecurityDao; import org.argeo.security.ArgeoSecurityService; import org.argeo.security.ArgeoUser; -import org.argeo.security.BasicArgeoUser; +import org.argeo.security.SimpleArgeoUser; public class DefaultSecurityService implements ArgeoSecurityService { private ArgeoSecurity argeoSecurity = new DefaultArgeoSecurity(); @@ -19,7 +19,7 @@ public class DefaultSecurityService implements ArgeoSecurityService { } public void updateUserPassword(String username, String password) { - BasicArgeoUser user = new BasicArgeoUser(securityDao.getUser(username)); + SimpleArgeoUser user = new SimpleArgeoUser(securityDao.getUser(username)); user.setPassword(password); securityDao.update(user); } diff --git a/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/ArgeoUserJsonTest.java b/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/ArgeoUserJsonTest.java index df9dbe95a..64306cd06 100644 --- a/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/ArgeoUserJsonTest.java +++ b/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/ArgeoUserJsonTest.java @@ -9,7 +9,7 @@ import junit.framework.TestCase; 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.SimpleArgeoUser; import org.argeo.security.UserNature; import org.argeo.security.core.ArgeoUserDetails; import org.argeo.security.nature.CoworkerNature; @@ -44,7 +44,7 @@ public class ArgeoUserJsonTest extends TestCase { ArgeoUserDetails argeoUserDetails = new ArgeoUserDetails("USER", natures, "PASSWORD", roles); - BasicArgeoUser argeoUser = new BasicArgeoUser(argeoUserDetails); + SimpleArgeoUser argeoUser = new SimpleArgeoUser(argeoUserDetails); StringWriter writer = new StringWriter(); diff --git a/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java b/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java index f841aeaf1..12bcf081e 100644 --- a/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java +++ b/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import org.apache.commons.io.IOUtils; import org.argeo.security.ArgeoUser; -import org.argeo.security.BasicArgeoUser; +import org.argeo.security.SimpleArgeoUser; import org.argeo.security.UserNature; import org.argeo.server.json.GenericJsonDeserializer; import org.argeo.server.json.JsonObjectFactoryImpl; @@ -36,7 +36,7 @@ public class JsonServerMapperTest extends TestCase { @SuppressWarnings("unchecked") public static JsonServerMapper createJsonServerMapper() throws Exception { JsonServerMapper mapper = new JsonServerMapper(); - mapper.setTargetClass(BasicArgeoUser.class); + mapper.setTargetClass(SimpleArgeoUser.class); GenericJsonDeserializer jsonDeserializer = new GenericJsonDeserializer(); jsonDeserializer.getObjectFactories().add(new JsonObjectFactoryImpl()); mapper.getDeserializers().put(UserNature.class, jsonDeserializer); diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java index e73522cf4..a4a2e4556 100644 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java +++ b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java @@ -9,7 +9,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.security.ArgeoSecurityService; import org.argeo.security.ArgeoUser; -import org.argeo.security.BasicArgeoUser; +import org.argeo.security.SimpleArgeoUser; import org.argeo.security.core.ArgeoUserDetails; import org.argeo.server.BooleanAnswer; import org.argeo.server.DeserializingEditor; @@ -36,7 +36,7 @@ public class UsersRolesController implements MvcConstants { @InitBinder public void initBinder(WebDataBinder binder) { - binder.registerCustomEditor(BasicArgeoUser.class, + binder.registerCustomEditor(SimpleArgeoUser.class, new DeserializingEditor(userDeserializer)); }