-/*****************************************************************************\r * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,\r * (2 décembre 2008)\r * \r * Ce logiciel est un programme informatique servant à l'évaluation des\r * compétences.\r * \r * Ce logiciel est régi par la licence CeCILL soumise au droit français et\r * respectant les principes de diffusion des logiciels libres. Vous pouvez\r * utiliser, modifier et/ou redistribuer ce programme sous les conditions\r * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA\r * sur le site "http://www.cecill.info".\r * \r * En contrepartie de l'accessibilité au code source et des droits de copie,\r * de modification et de redistribution accordés par cette licence, il n'est\r * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,\r * seule une responsabilité restreinte pèse sur l'auteur du programme, le\r * titulaire des droits patrimoniaux et les concédants successifs.\r * \r * A cet égard l'attention de l'utilisateur est attirée sur les risques\r * associés au chargement, à l'utilisation, à la modification et/ou au\r * développement et à la reproduction du logiciel par l'utilisateur étant\r * donné sa spécificité de logiciel libre, qui peut le rendre complexe à\r * manipuler et qui le réserve donc à des développeurs et des professionnels\r * avertis possédant des connaissances informatiques approfondies. Les\r * utilisateurs sont donc invités à charger et tester l'adéquation du\r * logiciel à leurs besoins dans des conditions permettant d'assurer la\r * sécurité de leurs systèmes et ou de leurs données et, plus généralement,\r * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.\r * \r * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez\r * pris connaissance de la licence CeCILL, et que vous en avez accepté les\r * termes.\r *******************************************************************************/\rpackage com.pentila.evalcomp.ldap;\r\rimport java.util.HashSet;\rimport java.util.List;\rimport java.util.Map;\rimport java.util.Set;\r\rimport org.springframework.security.core.GrantedAuthority;\rimport org.springframework.security.core.authority.GrantedAuthorityImpl;\rimport org.springframework.security.core.userdetails.UserDetails;\rimport org.springframework.security.core.userdetails.UserDetailsService;\rimport org.springframework.security.core.userdetails.UsernameNotFoundException;\r\rimport com.pentila.evalcomp.domain.Role;\rimport com.pentila.evalcomp.domain.User;\rimport com.pentila.evalcomp.manager.interfacedef.IEntityBase;\rimport com.pentila.evalcomp.synchronization.model.Filter;\r\r// TODO: Auto-generated Javadoc\r/**\r * * * * The Class MyUserDetailsService.\r */\rpublic class MyUserDetailsService implements UserDetailsService {\r\r /** The logger. */\r org.slf4j.Logger logger = org.slf4j.LoggerFactory\r .getLogger(MyUserDetailsService.class);\r\r /** The entity dao. */\r IEntityBase entityManager;\r\r /** The ldap dao. */\r ILdapTools ldapDAO;\r\r /*\r * (non-Javadoc)\r * \r * @seeorg.springframework.security.userdetails.UserDetailsService#\r * loadUserByUsername(java.lang.String)\r */\r public UserDetails loadUserByUsername(String login)\r throws UsernameNotFoundException {\r\r // login = login.toLowerCase();\r\r String internalUserId = login;\r\r if (logger.isDebugEnabled()){\r logger.debug("Enter in loadUserByUseranme with login : " + login);\r }\r if (ldapDAO != null) {\r if (logger.isDebugEnabled()){\r logger.debug("LDAP DAO is ACTIVE");\r }\r Filter f = new Filter();\r f.setValue(LdapMapper.getLoginAttr() + "=" + login);\r Set<Filter> s = new HashSet<Filter>();\r\r s.add(f);\r\r String[] columns = new String[] { LdapMapper.getInternalUserId() };\r\r List<Map<String, String>> l = ldapDAO.getUserAttributes(s, columns);\r\r if (l != null && !l.isEmpty()\r && l.get(0).containsKey(LdapMapper.getInternalUserId())) {\r internalUserId = l.get(0).get(LdapMapper.getInternalUserId());\r } else {\r throw new UsernameNotFoundException(internalUserId);\r }\r }\r\r if (logger.isDebugEnabled()){\r logger.debug("the internalUserId is set to : " + internalUserId);\r }\r\r\r User u = entityManager.getUser(internalUserId, "roles");\r\r if (logger.isDebugEnabled()){\r logger.debug("User is : " + u);\r }\r\r if (u == null) {\r throw new UsernameNotFoundException(internalUserId);\r }\r\r Set<Role> roles = u.getRoles();\r if (roles == null) {\r roles = new HashSet<Role>();\r\r }\r Role r = new Role();\r r.setName("ROLE_USER");\r roles.add(r);\r Set<GrantedAuthority> arrayAuths = new HashSet<GrantedAuthority>();\r for (Role role : roles) {\r arrayAuths.add(new GrantedAuthorityImpl(role.getName()));\r }\r return new org.springframework.security.core.userdetails.User(\r internalUserId, "", true, true, true, true, arrayAuths);\r\r }\r\r /**\r * Gets the ldap dao.\r *\r * @return the ldap dao\r */\r public ILdapTools getLdapDAO() {\r return ldapDAO;\r }\r\r /**\r * Sets the ldap dao.\r *\r * @param ldapDAO the new ldap dao\r */\r public void setLdapDAO(ILdapTools ldapDAO) {\r this.ldapDAO = ldapDAO;\r }\r\r /**\r * Gets the entity manager.\r *\r * @return the entity manager\r */\r public IEntityBase getEntityManager() {\r return entityManager;\r }\r\r /**\r * Sets the entity manager.\r *\r * @param entityManager the new entity manager\r */\r public void setEntityManager(IEntityBase entityManager) {\r this.entityManager = entityManager;\r }\r\r}\r
\ No newline at end of file
+/*****************************************************************************\r * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,\r * (2 décembre 2008)\r * \r * Ce logiciel est un programme informatique servant à l'évaluation des\r * compétences.\r * \r * Ce logiciel est régi par la licence CeCILL soumise au droit français et\r * respectant les principes de diffusion des logiciels libres. Vous pouvez\r * utiliser, modifier et/ou redistribuer ce programme sous les conditions\r * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA\r * sur le site "http://www.cecill.info".\r * \r * En contrepartie de l'accessibilité au code source et des droits de copie,\r * de modification et de redistribution accordés par cette licence, il n'est\r * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,\r * seule une responsabilité restreinte pèse sur l'auteur du programme, le\r * titulaire des droits patrimoniaux et les concédants successifs.\r * \r * A cet égard l'attention de l'utilisateur est attirée sur les risques\r * associés au chargement, à l'utilisation, à la modification et/ou au\r * développement et à la reproduction du logiciel par l'utilisateur étant\r * donné sa spécificité de logiciel libre, qui peut le rendre complexe à\r * manipuler et qui le réserve donc à des développeurs et des professionnels\r * avertis possédant des connaissances informatiques approfondies. Les\r * utilisateurs sont donc invités à charger et tester l'adéquation du\r * logiciel à leurs besoins dans des conditions permettant d'assurer la\r * sécurité de leurs systèmes et ou de leurs données et, plus généralement,\r * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.\r * \r * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez\r * pris connaissance de la licence CeCILL, et que vous en avez accepté les\r * termes.\r *******************************************************************************/\rpackage com.pentila.evalcomp.ldap;\r\rimport java.util.HashSet;\rimport java.util.List;\rimport java.util.Map;\rimport java.util.Set;\r\rimport org.springframework.security.core.GrantedAuthority;\rimport org.springframework.security.core.authority.SimpleGrantedAuthority;\rimport org.springframework.security.core.userdetails.UserDetails;\rimport org.springframework.security.core.userdetails.UserDetailsService;\rimport org.springframework.security.core.userdetails.UsernameNotFoundException;\r\rimport com.pentila.evalcomp.domain.Role;\rimport com.pentila.evalcomp.domain.User;\rimport com.pentila.evalcomp.manager.interfacedef.IEntityBase;\rimport com.pentila.evalcomp.synchronization.model.Filter;\r\r// TODO: Auto-generated Javadoc\r/**\r * * * * The Class MyUserDetailsService.\r */\rpublic class MyUserDetailsService implements UserDetailsService {\r\r /** The logger. */\r org.slf4j.Logger logger = org.slf4j.LoggerFactory\r .getLogger(MyUserDetailsService.class);\r\r /** The entity dao. */\r IEntityBase entityManager;\r\r /** The ldap dao. */\r ILdapTools ldapDAO;\r\r /*\r * (non-Javadoc)\r * \r * @seeorg.springframework.security.userdetails.UserDetailsService#\r * loadUserByUsername(java.lang.String)\r */\r public UserDetails loadUserByUsername(String login)\r throws UsernameNotFoundException {\r\r // login = login.toLowerCase();\r\r String internalUserId = login;\r\r if (logger.isDebugEnabled()){\r logger.debug("Enter in loadUserByUseranme with login : " + login);\r }\r if (ldapDAO != null) {\r if (logger.isDebugEnabled()){\r logger.debug("LDAP DAO is ACTIVE");\r }\r Filter f = new Filter();\r f.setValue(LdapMapper.getLoginAttr() + "=" + login);\r Set<Filter> s = new HashSet<Filter>();\r\r s.add(f);\r\r String[] columns = new String[] { LdapMapper.getInternalUserId() };\r\r List<Map<String, String>> l = ldapDAO.getUserAttributes(s, columns);\r\r if (l != null && !l.isEmpty()\r && l.get(0).containsKey(LdapMapper.getInternalUserId())) {\r internalUserId = l.get(0).get(LdapMapper.getInternalUserId());\r } else {\r throw new UsernameNotFoundException(internalUserId);\r }\r }\r\r if (logger.isDebugEnabled()){\r logger.debug("the internalUserId is set to : " + internalUserId);\r }\r\r\r User u = entityManager.getUser(internalUserId, "roles");\r\r if (logger.isDebugEnabled()){\r logger.debug("User is : " + u);\r }\r\r if (u == null) {\r throw new UsernameNotFoundException(internalUserId);\r }\r\r Set<Role> roles = u.getRoles();\r if (roles == null) {\r roles = new HashSet<Role>();\r\r }\r Role r = new Role();\r r.setName("ROLE_USER");\r roles.add(r);\r Set<GrantedAuthority> arrayAuths = new HashSet<GrantedAuthority>();\r for (Role role : roles) {\r arrayAuths.add(new SimpleGrantedAuthority(role.getName()));\r }\r return new org.springframework.security.core.userdetails.User(\r internalUserId, "", true, true, true, true, arrayAuths);\r\r }\r\r /**\r * Gets the ldap dao.\r *\r * @return the ldap dao\r */\r public ILdapTools getLdapDAO() {\r return ldapDAO;\r }\r\r /**\r * Sets the ldap dao.\r *\r * @param ldapDAO the new ldap dao\r */\r public void setLdapDAO(ILdapTools ldapDAO) {\r this.ldapDAO = ldapDAO;\r }\r\r /**\r * Gets the entity manager.\r *\r * @return the entity manager\r */\r public IEntityBase getEntityManager() {\r return entityManager;\r }\r\r /**\r * Sets the entity manager.\r *\r * @param entityManager the new entity manager\r */\r public void setEntityManager(IEntityBase entityManager) {\r this.entityManager = entityManager;\r }\r\r}\r
\ No newline at end of file
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.GrantedAuthorityImpl;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextImpl;
Set<GrantedAuthority> extraRoles = new HashSet<GrantedAuthority>();
for (String roleName : rolesName){
- GrantedAuthority ga = new GrantedAuthorityImpl(roleName);
+ GrantedAuthority ga = new SimpleGrantedAuthority(roleName);
extraRoles.add(ga);
}