diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java index 740786d53..a68f9cabc 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java @@ -22,10 +22,12 @@ package org.navalplanner.web.users.services; import static org.navalplanner.web.I18nHelper._; +import java.util.HashSet; import java.util.Set; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.users.daos.IUserDAO; +import org.navalplanner.business.users.entities.Profile; import org.navalplanner.business.users.entities.User; import org.navalplanner.business.users.entities.UserRole; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional; * IUserDAO. * * @author Fernando Bellas Permuy + * @author Jacobo Aragunde Perez */ public class DBUserDetailsService implements UserDetailsService { @@ -63,6 +66,13 @@ public class DBUserDetailsService implements UserDetailsService { "'{0}': not found", loginName)); } + //Retrieve roles from the user and its profiles + Set allRoles = new HashSet(); + allRoles.addAll(user.getRoles()); + for(Profile eachProfile : user.getProfiles()) { + allRoles.addAll(eachProfile.getRoles()); + } + return new org.springframework.security.userdetails.User( user.getLoginName(), user.getPassword(), @@ -70,7 +80,7 @@ public class DBUserDetailsService implements UserDetailsService { true, // accountNonExpired true, // credentialsNonExpired true, // accountNonLocked - getGrantedAuthorities(user.getRoles())); + getGrantedAuthorities(allRoles)); }