X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fldap%2FArgeoSecurityDaoLdap.java;h=c5cda2ed4a15b81c38f52575fd277b232565e4ca;hb=54ca073308e726107a5e59b50ce875ebeb43b965;hp=83e090661533ea71e00f01d36606663ce488cf17;hpb=ff1367187d728854f39a55e360f8908d4ab04159;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/ArgeoSecurityDaoLdap.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/ArgeoSecurityDaoLdap.java index 83e090661..c5cda2ed4 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/ArgeoSecurityDaoLdap.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/ldap/ArgeoSecurityDaoLdap.java @@ -1,6 +1,6 @@ package org.argeo.security.ldap; -import static org.argeo.security.core.ArgeoUserDetails.createBasicArgeoUser; +import static org.argeo.security.core.ArgeoUserDetails.createSimpleArgeoUser; import java.util.ArrayList; import java.util.List; @@ -11,6 +11,7 @@ import javax.naming.directory.DirContext; import org.argeo.security.ArgeoSecurityDao; import org.argeo.security.ArgeoUser; +import org.argeo.security.SimpleArgeoUser; import org.argeo.security.core.ArgeoUserDetails; import org.springframework.beans.factory.InitializingBean; import org.springframework.ldap.core.ContextExecutor; @@ -19,6 +20,8 @@ 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.Authentication; +import org.springframework.security.context.SecurityContextHolder; import org.springframework.security.ldap.DefaultLdapUsernameToDnMapper; import org.springframework.security.ldap.LdapAuthoritiesPopulator; import org.springframework.security.ldap.LdapUsernameToDnMapper; @@ -89,7 +92,22 @@ public class ArgeoSecurityDaoLdap implements ArgeoSecurityDao, InitializingBean } public ArgeoUser getUser(String uname) { - return createBasicArgeoUser(getDetails(uname)); + SimpleArgeoUser user = createSimpleArgeoUser(getDetails(uname)); + user.setPassword(null); + return user; + } + + public ArgeoUser getUserWithPassword(String uname) { + return createSimpleArgeoUser(getDetails(uname)); + } + + public ArgeoUser getCurrentUser() { + Authentication authentication = SecurityContextHolder.getContext() + .getAuthentication(); + ArgeoUser argeoUser = ArgeoUserDetails.asArgeoUser(authentication); + if (argeoUser.getRoles().contains(defaultRole)) + argeoUser.getRoles().remove(defaultRole); + return argeoUser; } @SuppressWarnings("unchecked") @@ -104,7 +122,7 @@ public class ArgeoSecurityDaoLdap implements ArgeoSecurityDao, InitializingBean List lst = new ArrayList(); for (String username : usernames) { - lst.add(createBasicArgeoUser(getDetails(username))); + lst.add(createSimpleArgeoUser(getDetails(username))); } return lst; } @@ -247,4 +265,8 @@ public class ArgeoSecurityDaoLdap implements ArgeoSecurityDao, InitializingBean public void setUserNatureMappers(List userNatureMappers) { this.userNatureMappers = userNatureMappers; } + + public String getDefaultRole() { + return defaultRole; + } }