From: Mathieu Baudier Date: Tue, 15 Sep 2009 13:59:28 +0000 (+0000) Subject: Introduce security core X-Git-Tag: argeo-commons-2.1.30~1819 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=324d6e9df11475508ffbdbe386815396fa4351bd Introduce security core git-svn-id: https://svn.argeo.org/commons/trunk@2920 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ArgeoUser.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ArgeoUser.java deleted file mode 100644 index 5d2eea6ee..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ArgeoUser.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.argeo.security; - -import java.util.List; - -public interface ArgeoUser { - public String getUsername(); - - public List getUserNatures(); - - public List getRoles(); -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/UserNature.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/UserNature.java deleted file mode 100644 index eceed3980..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/UserNature.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.argeo.security; - -public interface UserNature { - -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/ArgeoUserDetails.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/ArgeoUserDetails.java deleted file mode 100644 index 4a6882af4..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/ArgeoUserDetails.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.argeo.security.core; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.argeo.security.ArgeoUser; -import org.argeo.security.UserNature; -import org.springframework.security.GrantedAuthority; -import org.springframework.security.userdetails.User; - -public class ArgeoUserDetails extends User implements ArgeoUser { - private static final long serialVersionUID = 1L; - - private final List userInfos; - private final List roles; - - public ArgeoUserDetails(String username, List userInfos, - String password, GrantedAuthority[] authorities) - throws IllegalArgumentException { - super(username, password, true, true, true, true, authorities); - this.userInfos = Collections.unmodifiableList(userInfos); - - // Roles - List roles = new ArrayList(); - for (GrantedAuthority authority : getAuthorities()) { - roles.add(authority.getAuthority()); - } - this.roles = Collections.unmodifiableList(roles); - } - - public List getUserNatures() { - return userInfos; - } - - public List getRoles() { - return roles; - } -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/SimpleUserNature.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/SimpleUserNature.java deleted file mode 100644 index bde7e7615..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/core/SimpleUserNature.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.argeo.security.core; - -import org.argeo.security.UserNature; - -public class SimpleUserNature implements UserNature { - private String email; - private String firstName; - private String lastName; - private String description; - private String mobile; - private String telephoneNumber; - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getFullName() { - return getFirstName() + " " + getLastName(); - } - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - - public String getTelephoneNumber() { - return telephoneNumber; - } - - public void setTelephoneNumber(String telephoneNumber) { - this.telephoneNumber = telephoneNumber; - } - -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/ArgeoUserDetailsContextMapper.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/ArgeoUserDetailsContextMapper.java deleted file mode 100644 index 25b5c6eba..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/ArgeoUserDetailsContextMapper.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.argeo.security.ldap; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.argeo.security.ArgeoUser; -import org.argeo.security.UserNature; -import org.argeo.security.core.ArgeoUserDetails; -import org.springframework.ldap.core.DirContextAdapter; -import org.springframework.ldap.core.DirContextOperations; -import org.springframework.security.GrantedAuthority; -import org.springframework.security.userdetails.UserDetails; -import org.springframework.security.userdetails.ldap.UserDetailsContextMapper; - -public class ArgeoUserDetailsContextMapper implements UserDetailsContextMapper { - private List userInfoMappers = new ArrayList(); - - public UserDetails mapUserFromContext(DirContextOperations ctx, - String username, GrantedAuthority[] authorities) { - byte[] arr = (byte[]) ctx.getAttributeSortedStringSet("userPassword") - .first(); - String password = new String(arr); - - List userInfos = new ArrayList(); - for (UserNatureMapper userInfoMapper : userInfoMappers) { - userInfos.add(userInfoMapper.mapUserInfoFromContext(ctx)); - } - - return new ArgeoUserDetails(username, Collections - .unmodifiableList(userInfos), password, authorities); - } - - public void mapUserToContext(UserDetails user, DirContextAdapter ctx) { - ctx.setAttributeValues("objectClass", new String[] { "inetOrgPerson" }); - ctx.setAttributeValue("uid", user.getUsername()); - ctx.setAttributeValue("userPassword", user.getPassword()); - if (user instanceof ArgeoUser) { - ArgeoUser argeoUser = (ArgeoUser) user; - for (UserNature userInfo : argeoUser.getUserNatures()) { - for (UserNatureMapper userInfoMapper : userInfoMappers) { - if (userInfoMapper.supports(userInfo)) { - userInfoMapper.mapUserInfoToContext(userInfo, ctx); - break;// use the first mapper found an no others - } - } - } - } - } - - public void setUserInfoMappers(List userInfoMappers) { - this.userInfoMappers = userInfoMappers; - } - -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/SimpleUserNatureMapper.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/SimpleUserNatureMapper.java deleted file mode 100644 index 146ef4f95..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/SimpleUserNatureMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.argeo.security.ldap; - -import org.argeo.security.UserNature; -import org.argeo.security.core.SimpleUserNature; -import org.springframework.ldap.core.DirContextAdapter; -import org.springframework.ldap.core.DirContextOperations; - -public class SimpleUserNatureMapper implements UserNatureMapper { - - public UserNature mapUserInfoFromContext(DirContextOperations ctx) { - SimpleUserNature basicUserInfo = new SimpleUserNature(); - basicUserInfo.setLastName(ctx.getStringAttribute("sn")); - basicUserInfo.setFirstName(ctx.getStringAttribute("givenName")); - basicUserInfo.setEmail(ctx.getStringAttribute("mail")); - basicUserInfo.setDescription(ctx.getStringAttribute("description")); - basicUserInfo.setMobile(ctx.getStringAttribute("mobile")); - basicUserInfo.setTelephoneNumber(ctx - .getStringAttribute("telephoneNumber")); - return basicUserInfo; - } - - public void mapUserInfoToContext(UserNature userInfoArg, DirContextAdapter ctx) { - SimpleUserNature userInfo = (SimpleUserNature) userInfoArg; - ctx.setAttributeValue("cn", userInfo.getFullName()); - ctx.setAttributeValue("sn", userInfo.getLastName()); - ctx.setAttributeValue("givenName", userInfo.getFirstName()); - ctx.setAttributeValue("mail", userInfo.getEmail()); - if (userInfo.getDescription() != null) { - ctx.setAttributeValue("description", userInfo.getDescription()); - } - if (userInfo.getMobile() == null || !userInfo.getMobile().equals("")) { - ctx.setAttributeValue("mobile", userInfo.getMobile()); - } - if (userInfo.getTelephoneNumber() == null - || !userInfo.getTelephoneNumber().equals("")) { - ctx.setAttributeValue("telephoneNumber", userInfo - .getTelephoneNumber()); - } - } - - public Boolean supports(UserNature userInfo) { - return userInfo instanceof SimpleUserNature; - } - -} diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/UserNatureMapper.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/UserNatureMapper.java deleted file mode 100644 index 9b174d31a..000000000 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/ldap/UserNatureMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.argeo.security.ldap; - -import org.argeo.security.UserNature; -import org.springframework.ldap.core.DirContextAdapter; -import org.springframework.ldap.core.DirContextOperations; - -public interface UserNatureMapper { - public void mapUserInfoToContext(UserNature userInfo, DirContextAdapter ctx); - - public UserNature mapUserInfoFromContext(DirContextOperations ctx); - - public Boolean supports(UserNature userInfo); -}